用远程操作控制TurtleBot
这个例子展示了TurtleBot®的键盘控制通过使用ExampleHelperTurtleBotCommunicator
类。说明描述了如何设置对象以及如何启动键盘控件。当函数启动时,会显示如何使用键盘控件的说明。要更改函数的参数,请编辑exampleHelperTurtleBotKeyboardControl
函数或ExampleHelperTurtleBotKeyInput
类。有关使用MATLAB®TurtleBot的介绍,请参阅入门示例(开始与一个真正的乌龟机器人或开始与露台和模拟乌龟机器人)
先决条件:与TurtleBot交流,探索乌龟机器人的基本行为
TurtleBot硬件支持包
本示例概述了如何使用TurtleBot的本机ROS接口。基于TurtleBot的机器人的ROS工具箱™支持包为TurtleBot2硬件提供了更精简的接口。
要安装支持包,请打开获取硬件支持包在MATLAB首页选项卡并选择基于TurtleBot的机器人的ROS工具箱支持包.另外,使用rosAddons
命令。
连接到TurtleBot
确保您有一个TurtleBot运行在模拟通过Gazebo®或在真正的硬件。指开始与露台和模拟乌龟机器人或开始与一个真正的乌龟机器人用于启动过程。如果你使用的是模拟,露台的办公室
适合探险。
初始化ROS。通过更换连接到TurtleBotipaddress
上面有乌龟机器人的IP地址
ipaddress =“http://192.168.178.133:11311”;rosinit (ipaddress)
使用NodeURI http://192.168.178.1:55912/初始化全局节点/matlab_global_node_59490
如果您使用的是真正的TurtleBot2硬件,请确保您启动了Kinect®相机。在TurtleBot的终端上运行以下命令:
roslaunchturtlebot_bringup3 dsensor.launch
TurtleBot版本之间可能存在一些功能、传感器和主题名称的差异。在控制它时,一定要检查正在使用的版本和预期的主题。
turtleBotVersion = 3;% Gazebo Office世界使用TurtleBot3汉堡模型
订阅里程计和激光扫描的主题,并确保您能收到这些主题的消息。使用结构消息格式进行通信以获得更好的性能。
句柄。odomSub = rossubscriber (“/”奥多姆,“BufferSize”25岁的“DataFormat”,“结构”);收到(handles.odomSub 3);句柄。laserSub = rossubscriber (“/扫描”,“BufferSize”5,“DataFormat”,“结构”);收到(handles.laserSub 3);
创建一个publisher来控制机器人的速度。
如果turtleBotVersion == 3 velTopic =“/ cmd_vel”;其他的velTopic =“/ mobile_base /命令/速度”;结束句柄。velPub = rospublisher (velTopic,“DataFormat”,“结构”);
控制机器人
运行exampleHelperTurtleBotKeyboardControl
功能,允许您用键盘控制TurtleBot。将插入的代码示例标记为代码(突出显示并按“Alt+Enter”)以执行函数。
exampleHelperTurtleBotKeyboardControl(处理);
以下是用户通过键盘远程操作后的命令窗口、世界情节和Gazebo世界的示例:
如果您移动TurtleBot太快,障碍物绘制可能会变得混乱,因为在高速下,里程数测量主题会相对不准确。以下是一个混乱世界情节的例子:
下图是一个真实的TurtleBot在办公空间中移动的示例图:
断开与机器人的连接
一旦您通过按下退出该功能问
,清除主机上的发布者和订阅者。
清晰的
使用rosshutdown
一旦你完成了ROS网络的工作。关闭全局节点并断开与TurtleBot的连接。
rosshutdown
使用NodeURI http://192.168.178.1:55912/关闭全局节点/matlab_global_node_59490
下一个步骤
参考下一个例子:TurtleBot和VFH避障