当前位置:   article > 正文

记录moveit和gazebo联合仿真在python实现下的问题_movit gazebo联动gazebo模型倒下

movit gazebo联动gazebo模型倒下

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并没有订阅该话题,可能需要自己去写代码订阅了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/703763
推荐阅读
相关标签
  

闽ICP备14008679号