记录moveit和gazebo联合仿真在python实现下的问题

本文探讨了在Gazebo仿真环境中遇到的问题,如模型物理参数导致的连杆消失,重心调整,以及控制器设置中的终点状态约束和关节抖动。提供了调整惯性矩阵、质量、PID参数的方法,并指出需要关注关节状态监控和自定义话题订阅。
摘要由CSDN通过智能技术生成

1.模型连杆在gazebo中直接炸裂或消失,可能是物理参数问题。比如我的灵巧手的手指消失,通过调大手指连杆的惯性矩阵,直接调成单位矩阵,问题解决。

2.模型在gazebo中倾倒,模型重心问题。可以调大baselink的质量。

3.仿真时出现xxx faliled with error GOAL_TOLERANCE_VIOLATED:

       一般是控制器的终点状态约束问题,在movit assitance生成的ros_controllers.yaml中会有一个sim_control_mode,等于0是位置控制,1是速度控制。参考:

GOAL_TOLERANCE_VIOLATED (Gazebo/Moveit) - ROS Answers: Open Source Q&A Forum

4.关节运动后,连杆抖动。

  • 方法一:

        在只想获取关节数据时可以通过注释pid,虽然报错,并不影响规划运动,但是会影响后续的控制操作。

  • 方法二:

        减小质量可行,调pid也可行。但是怎么调是一个问题。

        抖动一般是误差在控制的积分i作用下一直累计的影响。

        位置控制可参考PD控制器的另一解释与应用(一) - 知乎来对参数进行初步设定。

        但是只用pd控制虽然快速不抖动,但最终关节角度会与期望有偏差(可能个人参数原因)。

        最直接的我们需要获取关节信息,画个曲线图观察观察。

        在python代码通过:

self.move_group.get_current_joint_values()

        可以订阅 /joint_states话题,查看关节状态。

        但是这里有个大坑,函数输出一直是0,怎么回事?

        我直接输出 /joint_states话题信息,发现发布信息为空(除了关节名):

        自己一个个输出话题发现/finger1_control/state:

        其中desired的是代码中的目标关节位置,actual是实际关节位置的,还显示了误差。其信息类型是这样的:

        通过topic list -v,发现moveit_commander并没有订阅该话题,可能需要自己去写代码订阅了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值