对你的机器人进行测量校准
在这一部分当中,需要有实际的机器人,如果没有可以略过此节,如果有一台原版的TurtleBot(用iRobot create作为底座),那么确保使用自动校准过程为你的机器人设置角速度修正系数。还可以用这一部分内容的第一步去设置线速度修正系数。需要注意的是,无论在什么情况下,都需要用不同的校准参数去适应不同类型的地面。
在执行校准程序时,确保在命令行里调用了Orocos kinematics包:
sudo apt-get install ros-indigo-orocos-kdl ros-indigo-python-orocos-kdl
rbx1_nav包有两个校准脚本:calibrate_linear.py和calibrate_angular.py.
第一个脚本通过监视话题/odom,让机器人向前移动1m,然后测量得到的距离在目标地点的1cm时让它停下。你可以通过编辑脚本或者用rqt_reconfigure 来调整目标距离和移动速度。
第二脚本也是通过监视/odom话题,让机器人旋转360度。下面部分内容将介绍如何根据运行结果来调整PID参数。
1、线速度校准
在地上放一条至少1m长的卷尺,让卷尺的一端对其机器人某个显著的标志。旋转机器人使它面向的方向与卷尺平行。
接着,用适合当前环境的启动文件启动机器人的基控制器。对于使用iRobot Create的TurtleBot来说,需要使用ssh命令连接机器人上的计算机并运行:
roslaunch rbx1_bringup turtlebot_minimal_create.launch
接着,运行线速度校准节点:
rosrun rbx1_nav calibrate_linear.py
最后,运行rqt_reconfigure:
rosrun rqt_reconfigure rqt_reconfigure
在rqt_reconfigure窗口中选择calibrate_linear节点(如果在列表上没有这个节点,点击GUI界面右上角的蓝色刷新键)。点击在start_test旁边的勾选框来开始测试(如果机器人没有开始运动,取消选择并重新勾选)。这时你的机器人应该会向前移动大概1m,要得到修正系数,执行以下几步:
1)用卷尺测量并记录下机器人的实际移动距离;
2)用实际移动距离除以目标距离,并记录下这个比值;
3)回到rqt_reconfigure的GUI界面,用参数odom_linear_scale_correction乘以上一步得到的比值所得的乘积更新这个参数;
4)把机器人放回卷尺的起始端,在rqt_rconfigure窗口中勾选start_test选框,重复测试。
5)不断重复测试,直到你得到满意的结果。在1m中精确到1cm就是足够好的结果了。
当你得到最终的修正系数后,你需要用恰当的启动文件把它应用到你的机器人的基控制器中。对于TurtleBot,你需要添加以下内容到你的turtlebot.launch文件中:
<param name="turtlebot_node/odom_linear_scale_correction" value="X"/>
其中X表示你的修正系数。
如果你的机器人使用ArbotiX作为基控制器,编辑你的YAML配置文件,用参数ticks_meter除以修正系数来更新ticks_meter这个参数。
在最后的检查中,执行机器人应该使用了新的修正系数的启动文件,然后在参数odom_linear_correction设为1.0的情况下,执行calibrate_linear.py脚本。再来测试是否能够走到1m的距离。
2、角速度校准
如果你使用的是基于iRobot Create的TurtleBot,不要使用以下的方法,请使用TurtleBot的自动校准过程。
在地面上放置一个标志物对齐机器人正面的中点。让机器人旋转360度,然后看看它与标志物的距离。
用合适的启动文件启动你的机器人基控制器。对于一个原装的TurtleBot(使用iRobot Create底座)。使用ssh命令连接机器人的计算机,并执行以下命令:
roslaunch rbx1_bringup turtlebot_minimal_create.launch
接着,运行角速度校准节点:
rosrun rbx1_nav calibrate_angular.py
最后,运行rqt_reconfigure:
rosrun rqt_reconfigure rqt_reconfigure
在rqt_reconfigure窗口中选择calibrate_angular节点(如果在列表上没有这个节点,点击GUI界面右上角的蓝色刷新键)。点 击在start_test旁边的勾选框来开始测试(如果机器人没有开始运动,取消选择并重新勾选)。这时你的机器人应该旋转约360度,不需要担心机器人旋转超过或者不够一圈,因为会接着进行调整的,执行以下几步来获得校正系数:
1)如果实际旋转不足360度,目测机器人旋转的角度,并以这个结果来填写rqt_reconfigure窗口中的odom_angular_scale_correction的值。如果机器人看起来旋转了一圈的85%,就输入0.85,如果机器人旋转了一圈又5%,就输入1.05。
2)让机器人正面中点对齐标志物,并点击rqt_reconfigure窗口中的start_test选框来重复测试。
3)重复上述步骤知道得到满意的结果。
能否得到最终的校正系数取决于你的基控制器的PID参数是否准确。对于一个使用ArbotiX基控制器的机器人,需要编辑YAML配置文件,用参数base_width除以你的校正系数来更新参数base_width。
测试的最后,用更新了校正系数的启动文件启动你的机器人。
5、发送Twist消息给真是的机器人
发送方式跟仿真器里面的方式是一样的。