在模拟测试机器人的自主权
这个例子探讨了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
当完成时,关闭露台窗口在你的虚拟机。