主要内容

在Simulink®中具有障碍物避免的路径金宝app

此示例显示了如何使用Simulink以避免障碍,同时遵循差分驱动机器金宝app人的路径。此示例使用ROS从基于MATLAB®的模拟器发送和接收信息。您可以使用其他基于ROS的模拟器替换模拟器,如Gazebo®。

先决条件:从Simulink®连接到启用ROS的机器人金宝app(ROS工具箱)

介绍

此示例使用具有避免障碍物之后的控制器之后的路径的模型。控制器从模拟机器人接收机器人姿势和激光扫描数据,并发送速度命令以在给定路径上驱动机器人。您可以在型号运行时调整参数,并观察对模拟机器人的影响。

启动机器人模拟器

启动基于MATLAB的模拟器:

  • 类型罗斯尼特(ROS工具箱)在matlab命令行。这将创建一个具有网络地址(URI)的本地ROS主人http:// localhost:11311

  • 类型examplehelper金宝appsimulinkrobotros('accepacleavoidance')启动机器人模拟器。这将打开一个数字窗口:

基于MATLAB的模拟器是一种基于ROS的模拟器,用于差动机器人。模拟器接收并在以下主题上发送消息:

  • 它接收速度命令,作为类型的消息geometry_msgs / twist.,在这方面/ mobile_base /命令/速度话题

  • 它将地面真相机器人姿势信息发送到类型的消息nav_msgs / odometry.,到了/ ground_truth_pose.话题

  • 它发送激光范围数据,作为类型的消息sensor_msgs / laserscan.,到了/扫描话题

用凉亭替换基于MATLAB的模拟器:

您还可以使用带有模拟的Turtlebot®的凉亭模拟器。看开始凉亭和模拟的火炬(ROS工具箱)有关设置凉亭环境的说明。看从Simulink®连接到启用ROS的机器人金宝app(ROS工具箱)有关设置与凉亭网络连接的说明。启动虚拟机后,启动凉亭办公室世界使用桌面快捷方式。凉亭模拟器中的模拟Turtlebot接收速度命令,作为类型的消息geometry_msgs / twist.,在这方面/ cmd_vel.话题。您还需要一个本地化算法来获得凉亭的机器人位置。看使用Monte Carlo本地化的Turtlebot有关在凉亭环境中查找机器人位置的说明。

打开现有模型

模型用障碍物避免算法实现路径。该模型分为四个子系统。以下部分解释了每个子系统。

Open_System('pathfollowingwithobstacleavoidanceexample');

过程输入

“输入”子系统将所有输入处理到算法。

有两个订阅者从模拟器接收数据。第一用户收到发送的消息/扫描话题。然后处理激光扫描消息以提取扫描范围和角度。第二个用户收到发送的消息/ ground_truth_pose.话题。这(x,y)然后从姿势消息中提取机器人的位置和偏航方向。

该路径被指定为一组航点。此示例使用3x2常量输入。您可以指定任何数量的航点作为NX2数组。要在运行时更改路径的大小,您可以使用可变大小信号或使用固定大小信号填充。此示例使用固定大小输入为未知的航点填充。

Open_System('pathfollowingwithobstacleavoidance表现/输入''标签');

按后计算速度和标题

“子系统之后的路径的计算速度和标题计算线性和角速度命令和目标移动方向使用纯粹的追求堵塞。纯粹的追踪块位于移动机器人算法子图书馆内机器人系统工具箱在库浏览器中的选项卡。或者,您可以键入robotalgslib.在命令行上打开移动机器人算法子图书馆。

一旦达到目标点,您也需要停止机器人。在这个例子中,目标是路径上的最后一个航点。该子系统还比较当前机器人姿势和目标点,以确定机器人是否接近目标。

Open_System('PathfollowingWithobstacleavoidance实施例/计算速度和标题跟踪后''标签');

调整速度以避免障碍物

“避免障碍物子系统的调节速度计算对路径跟随器计算的线性和角速度的调整。

矢量字段直方图块使用激光范围读数检查是否使用纯追踪块计算的目标方向是无障碍物的或不基于激光扫描数据。如果沿着目标方向存在障碍物,则矢量场直方图块计算最接近目标方向的转向方向,并且是无障碍物的。矢量字段直方图块也位于移动机器人算法子图书馆。

转向方向是当传感器视野中没有无障碍方向时价值。在这种情况下,需要恢复运动,其中机器人在现场转动,直到可用障碍方向。

基于转向方向,该子系统计算线性和角速度的调整。

Open_System('PathfollowingWithobstacleavoidance表现/调整速度,以避免障碍''标签');

发送速度命令

“输出”子系统发布线性和角速度以驱动模拟机器人。它增加了使用纯追踪路径计算的速度,这是使用矢量字段直方图障碍避免算法计算的调整。最终速度设置在geometry_msgs / twist.消息并发布主题/ mobile_base /命令/速度

这是一个启用的子系统,当接收到新的激光消息时被触发。这意味着仅在新的传感器信息可用时才发布速度命令。这可以防止机器人在接收传感器信息延迟时击中障碍物。

Open_System('pathfollowingwithobstacleavoidance表现/产出''标签');

笔记:要使用凉亭模拟器,请选择/ cmd_vel.发布块中的主题。

配置和运行模型

配置并运行模型,并观察模拟器中机器人的运动。

  • 设置模拟停止时间INF.

  • 单击“播放”按钮开始模拟。观察机器人开始在模拟中移动。

  • 虽然模拟正在运行,但是在“子系统中的路径”和“路径上的计算速度和标题”,然后双击纯粹的追求堵塞。将所需的线性速度参数更改为0.5。观察机器人速度的增加。

  • 默认路径[2 2;8 8]通过障碍。观察机器人在障碍物周围绕道而行以达到路径的终点。

  • 打开“输入”子系统并双击航点输入堵塞。改变恒定值[2 2; 8 8;南楠][2 2;8 8;12 5]。请注意,机器人继续遵循新路径并达到新的目标点(12,5)避免障碍物。

  • 要停止模拟,请单击“停止”按钮。

也可以看看