本例程演示通过使用“ExampleHelperTurtleBotCommunicator”类,实现对TurtleBot的键盘控制。该说明描述了如何设置物体和开始键盘控制。如何使用键盘控制的说明在启动函数之后显示。为了更改函数的参数,可以编辑“exampleHelperTurtleBotKeyboardControl”函数或“ExampleHelperTurtleBotKeyInput”类。有关MATLAB下如何使用TurtleBot的信息,请参考:4.2开始使用Gazebo和仿真的TurtleBot或4.1开始使用实际的TurtleBot。
连接到TurtleBot
确保用户有一个运行的TurtleBot,可以是通过Gazebo的仿真也可以是真实的硬件。有关启动过程请参考4.2开始使用Gazebo和仿真的TurtleBot或4.1开始使用实际的TurtleBot。如果用户使用仿真,那么“Gazebo TurtleBot World”适合用于本例程的探索。
初始化ROS。通过TurtleBot的IP地址替换示例IP地址(192.168.1.1)并连接到TurtleBot。
ipaddress = '192.168.1.1'
rosinit(ipaddress)
如果用户使用实际的TurtleBot硬件,确保启动了Kinect相机,命令是“roslaunch turtlebot_bringup 3dsensor.launch”,在TurtleBot上的终端执行该指令。
创建“ExampleHelperTurtleBotCommunicator”类的实例,该实例使得控制TurtleBot变得容易。
tbot = ExampleHelperTurtleBotCommunicator();
通过调用运行在“ExampleHelperTurtleBotCommunicator”对象的函数使能里程计和激光扫描话题,如下所示。
enableOdom(tbot);
enableLaser(tbot);
如果用户连续的执行上述代码,可以暂停脚本以等待订阅器恰当地设置。
pause(2)
控制机器人
运行“exampleHelperTurtleBotKeyboardControl”函数,允许用户通过键盘控制TurtleBot。
exampleHelperTurtleBotKeyboardControl(tbot);
用户通过键盘远程操作之后的命令窗口、环境绘图和Gazebo环境如下图所示。
如果用户移动TurtleBot过快,那么障碍物绘图可能变得混乱,因为在高速情况下里程计话题相对精度不精确。混乱的环境绘图如下所示。
真实TurtleBot在办公室环境移动的示例绘图如下所示。
断开与机器人的连接
当用户完成工作后,清楚工作空间中的发布器、订阅器和其它有关ROS的对象是个良好的习惯。
clear
建议当完成ROS网络有关的工作之后,使用“rosshutdown”指令关闭全局节点和断开与Gazebo的连接。
rosshutdown