gazebo是基于動力學(xué)的仿真,底層是通過發(fā)送力矩實(shí)現(xiàn)機(jī)械臂控制的,如果需要在gazebo中用到位置或者速度控制誉裆,有兩種解決方案,一個是自己編寫一個控制器缸濒,用來控制力矩輸入足丢,一個是采用ros_controller提供的pid方式進(jìn)行實(shí)現(xiàn)。
這里以franka emika panda關(guān)節(jié)位置控制為例庇配,展示一下調(diào)試的過程:
首先是配置文件:
接著是xacro文件:
最后launch文件:
要改的就這些斩跌,網(wǎng)上搜gazebo ros_controller,講解非常多讨永,有時間再更這一部分滔驶。
接下來講怎么通過ros的工具方便快捷的進(jìn)行調(diào)節(jié)和查看,主要有兩個工具卿闹,一個是rqt_plot揭糕,一個是dynamic_reconfigure
常規(guī)操作:打開gazebo萝快,加載模型:
接著查看一下topic名稱,這里是/robot1/joint_states
鑒于這個topic包含的內(nèi)容很多著角,我們需要監(jiān)控的實(shí)際是其中的position[i]
舉個例子揪漩,要看七關(guān)節(jié)的位置情況,運(yùn)行這條命令:
rqt_plot /robot1/joint_states/position[6]
可以看到這個:
就可以實(shí)時監(jiān)控變量狀態(tài)了吏口。
接著調(diào)pid看控制效果:
首先看一下目前的參數(shù)
rosrun dynamic_reconfigure dynparam get /robot1/gazebo_ros_control/pid_gains/panda_joint7
復(fù)制輸出奄容,調(diào)節(jié)pid參數(shù),再set
再配合rostopic pub給出階越信號产徊,就可以實(shí)現(xiàn)matlab simulink類似的實(shí)時pid調(diào)參效果了昂勒。