主要内容

在模拟测试机器人的自主权

这个例子探讨了MATLAB®控制露台®模拟器。

使用机器人仿真器时,重要的是测试自主算法和动态改变世界环境仿真运行时。这个例子显示了如何创建基本的机器人自主露台和如何与其交互。在这个例子中,机器人是TurtleBot®平台。具体的例子包括TurtleBot看到与TurtleBot通信的例子。

在本例中,您使用一个计时器控制的自治方面TurtleBot运动。计时器允许进程在后台运行定期执行间隔没有挡住了MATLAB®命令行。虽然您可以使用循环和其他方法来检查基本自治,计时器的计划执行和非阻塞特性使它们实现自主行为的最佳选择。

先决条件:从露台和模拟TurtleBot开始,在露台添加、建立和删除对象,在露台应用力和力矩

连接到露台

在您的Linux®机器上,开始露台。如果您使用的是虚拟机从露台和模拟TurtleBot开始,可以使用露台空世界。

初始化ROS代替示例IP地址和虚拟机的IP地址。创建的一个实例ExampleHelperGazeboCommunicator类。

rosinit (“http://192.168.178.133:11311”)
初始化全局节点/ matlab_global_node_07643 NodeURI http://192.168.178.1:57635
露台= ExampleHelperGazeboCommunicator;

世界上建造一堵墙。

墙= ExampleHelperGazeboModel (“grey_wall”,“gazeboDB”);spawnModel(露台,墙,[2 4 0]);

使用SI大会指定任何单位在露台。

创建一个ExampleHelperGazeboSpawnedModel对象为移动基地和改变其方向的状态。手动旋转TurtleBot90年度( π /2弧度),直接面对墙。

turtleBot = ExampleHelperGazeboSpawnedModel (“turtlebot3_burger”、露台);设置状态(turtleBot“定位”[0 0π/ 2]);

开始TurtleBot避障

本节描述一个简单的方法来创建在露台TurtleBot自主行为。使用一个基本TurtleBot避障行为。行为是推动向前,当机器人变得非常接近激光扫描仪检测到的一个障碍。

为出版商和发行商消息创建全局变量,这样他们就可以被访问的控制算法。

全球机器人全球velmsg

为速度和创建发布者ROS消息携带的信息。

机器人= rospublisher (“/ cmd_vel”,“DataFormat”,“结构”);velmsg = rosmessage(机器人);

订阅激光扫描的话题。

timerHandles。子= rossubscriber (“/扫描”,“DataFormat”,“结构”);

创建一个定时器来控制的主要控制回路TurtleBot。

t =计时器(“TimerFcn”{@exampleHelperGazeboAvoidanceTimer, timerHandles},“期”,0.1,“ExecutionMode”,“fixedSpacing”);

定时器回调函数,exampleHelperGazeboAvoidanceTimer定义了激光扫描回调函数并执行一个基本的算法允许TurtleBot避免撞到物体移动时。

启动计时器。

开始(t)

TurtleBot驱动器向墙上。一旦靠近墙,它必须避免跑进去左转。

注意:如果TurtleBot撞向墙壁,激光扫描可能不是通过露台出版。重启你的露台会话和再试一次。

添加对象

你仍然可以改变世界而TurtleBot移动。添加一个新的世界。如果你把它很快,它可以阻止TurtleBot避免撞墙。

spawnModel(露台,墙,[-5.85 - 0.15 0],[0,0,π/ 2]);暂停(20)% TurtleBot避免墙壁,持续20秒

删除模型和关闭

停止计时器停止机器人的算法。

停止(t)删除(t)

发现世界上所有对象,删除那些手动添加。

= getSpawnedModels列表(露台)
列表=4×1细胞{' ground_plane} {‘turtlebot3_burger} {‘grey_wall} {' grey_wall_0 '}

删除两堵墙,使用以下命令:

removeModel(露台,“grey_wall”);removeModel(露台,“grey_wall_0”);

清晰的工作区出版商、用户和其他ROS-related对象当你完成它们。

清晰的

使用rosshutdown一旦你完成工作与ROS网络。从露台关闭全球节点和断开。

rosshutdown
关闭全局节点/ matlab_global_node_07643 NodeURI http://192.168.178.1:57635

当完成时,关闭露台窗口在你的虚拟机。