gazebo_control中的pid调试方法

gazebo是基于动力学的仿真,底层是通过发送力矩实现机械臂控制的,如果需要在gazebo中用到位置或者速度控制,有两种解决方案,一个是自己编写一个控制器,用来控制力矩输入,一个是采用ros_controller提供的pid方式进行实现。
这里以franka emika panda关节位置控制为例,展示一下调试的过程:
首先是配置文件:


position_control.yaml

pid_position.yaml

接着是xacro文件:


panda.transmission.xacro

最后launch文件:
position_simulation.launch

要改的就这些,网上搜gazebo ros_controller,讲解非常多,有时间再更这一部分。

接下来讲怎么通过ros的工具方便快捷的进行调节和查看,主要有两个工具,一个是rqt_plot,一个是dynamic_reconfigure

常规操作:打开gazebo,加载模型:


gazebo

接着查看一下topic名称,这里是/robot1/joint_states

鉴于这个topic包含的内容很多,我们需要监控的实际是其中的position[i]

举个例子,要看七关节的位置情况,运行这条命令:

rqt_plot /robot1/joint_states/position[6]

可以看到这个:


rqt

就可以实时监控变量状态了。

接着调pid看控制效果:
首先看一下目前的参数

 rosrun dynamic_reconfigure dynparam get /robot1/gazebo_ros_control/pid_gains/panda_joint7

复制输出,调节pid参数,再set


get and set

再配合rostopic pub给出阶越信号,就可以实现matlab simulink类似的实时pid调参效果了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容