每个机器人在使用之前应该都需要进行校正,其中包括线速度校正和角速度校正.
这个博客结合的是Poineer3机器人操作手册和ROS入门实例这两本书.
首先自己要建立自己机器人的launch文件.
<launch>
<!-- Starting rosaria driver for motors and encoders -->
<node name="rosaria" pkg="rosaria" type="RosAria" args="_port:=/dev/ttyUSB0">
<param name="DriftFactor" value="0"/>
<param name="TicksMM" value="138"/>
<param name="RevCount" value="16485"/>
<remap from="rosaria/cmd_vel" to="cmd_vel"/>
<remap from="rosaria/pose" to="odom"/>
</node>
<arg name="model" default="/home/felaim/catkin_ws/src/amr-ros-config/description/urdf/pioneer3at.urdf"/>
<arg name="gui" default="False" />
<param name="robot_description" textfile="$(arg model)" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find rbx1_nav)/nav_ekf.rviz"/>
</launch>
LZ这里还添加了rviz的节点启动,同时也下载了对应的Pioneer3at对应的机器人模型,可视化效果会好一些.
因为只能从上面看,所以基本的模型如上图所示.
使用的是rbx1_nav中的calibrate_linear.py和calibrate_angular,然后再对自己的DriftFactor,TicksMM和RevCount进行修改.LZ不知到因为啥旋转的时候校正总是会差5度左右,这应该不是硬件问题?
DriftFactor是使机器人前(后)移动5米,是的其始终能保证直线行走.通过使用ARIA中demo的position模式,再通过代码模式对(#89)进行参数修正.
TicksMM和RevCount通过rqt_reconfigure进行参数修正.
注意:要通过ARIA或者ARC0S把电子罗盘进行关闭
还有几个问题,在校正前先检查轮胎是否有气?自己充气时尽量保证胎压差不多在23psi(和出厂差不多).