赞
踩
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并没有订阅该话题,可能需要自己去写代码订阅了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。