moveit 逆运动学报错 ‘tuple‘ has no attribute ‘serialize‘

在尝试使用MoveIt进行逆运动学规划时遇到一个问题,错误提示为'tuple' has no attribute 'serialize'。通过修改代码并确保目标姿态的四元数保持为单位四元数,解决了该问题。博客详细记录了错误原因、解决步骤以及如何使用在线工具转换欧拉角到四元数,以正确控制机械臂的不同姿态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

moveit 逆运动学报错 ‘tuple’ has no attribute ‘serialize’

在逆运动学教程中,运行文件 moveit_ik_demo.py 出现如下错误:
在这里插入图片描述
在古月居博客上看了博主的问答贴,首先做如下更改:

plan_success,traj,planning_time,error_code = arm.plan()

保存后再次进行运行,出现了如下问题:
在这里插入图片描述
修改坐标值如下:

target_pose.pose.position.x = 0.2593
target_pose.pose.position.y = 0.0636
target_pose.pose.position.z = 0.1787
target_pose.pose.orientation.x = 0.70692
target_pose.pose.orientation.y = 0.1
target_pose.pose.orientation.z = 0.2
target_pose.pose.orientation.w = 0.70729

这样修改后,机械臂在 moveit 中可以成功规划并执行动作,然后修改

target_pose.pose.position.x = 0.3593
target_pose.pose.position.y = 0.1636
target_pose.pose.position.z = 0.2787

机械臂能正常运动。但任意修改四元素部分的值,就会再次出现如下的问题:

No motion plan found. No execution attempted

这样的错误。发现是修改后的四元数 “ 模 ” 不等于 “ 1 ” 的缘故,也就是说任意修改后的四元数不再是 “单位四元数” 了。
因此,对四元素进行如下更改,则机械臂可以正常运动。

target_pose.pose.orientation.x = 0.43368
target_pose.pose.orientation.y = 0.6514171
target_pose.pose.orientation.z = 0.5081903
target_pose.pose.orientation.w = 0.359611

这里再贴一个 欧拉角-四元数 在线转换网站,欧拉角进行转换后,用得到的四元数替换程序中四元数部分,即可实现机械臂不同姿态的控制。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值