02---控制移动底座6
用现实的机器人执行计时前进并返回
如果用现实的机器人来运行脚本timed_out_and_back.py,在这里只是用了时间和速度估算距离和角度。可以预见,机器人因为惯性,运动结果与在ArbotiX模拟器上的结果有出入(在模拟器中我们并没有建立物理模型)
1、首先,停止所有正在运行的模拟器。运行你自己的机器人的启动文件。如果你有一个原版的TurtleBot(底座为iRobot Create),通过ssh连接到机器人的计算机并执行以下命令:
roslaunch rbx1_bringup turtleboe_minimal_create.launch
或者可以运行你自己创建并且存有你的校准参数的启动文件。
你还可以使用一个辅助脚本,让你可以在Rviz中看到TurtleBot的组合测量框架;如果不是使用TurtleBot,可以略过此步。运行在另一个连接到TurtleBot的计算机的ssh终端中的这个启动文件:
roslaunch rbx1_bringup odom_ekf.launch
接着我们配置RViz来显示组合测量数据(编码器+陀螺仪),而不仅仅是显示编码器数据的/odom。如果在前面的测试中使用过RViz了,你可以简单地取消选择Odometry display选项,并选择Odometry EKF display选项,然后略过下面的步骤。
如果RViz还没有运行,在你的工作站中使用nav_ekf配置文件运行它,这个配置文件只是简单地预先选择/odom_ekf话题来显示组合测量数据。
rosrun rviz rviz -d `rospack find rbx1_nav`/nav_ekf.rviz
这个配置文件和先前的配置文件唯一区别就是,现在是在/odom_ekf话题中显示组合测量数据,而不仅仅是在/odom_ekf话题上发布来自轮子编码器的数据,你可以同时选择两种显示模式来比较他们的差别。
最后,我们像之前做的那样运行计时前进并返回脚本。注意脚本本身并不关心我们是在模拟器还是在真是的机器人上运行,它仅仅是发布Twist消息到话题/cmd_vel上,供任何监听者的使用。这个例子向我们展示了在运动控制层中,ROS如何把我们较低层次的操作抽象化,你可以在你的工作站或者在用ssh连接上的机器人计算机上运行下面的命令:
rosrun rbx1_nav timed_out_and_back.py。