主要内容

Simulink®中的避障路径跟踪万博1manbetx

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

先决条件:从Simulink®连接到一个支持ros的机器人万博1manbetx(ROS工具箱)

介绍

本例使用了一个模型,该模型实现了带有避障功能的路径跟踪控制器。控制器接收模拟机器人的姿态和激光扫描数据,并发送速度指令驱动机器人在给定路径上运动。您可以在模型运行时调整参数,并观察对模拟机器人的影响。

启动机器人模拟器

启动基于MATLAB的模拟器:

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

  • 类型examplehelper万博1manbetxsimulinkrobotros('accepacleavoidance')启动机器人模拟器。这将打开一个数字窗口:

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

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

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

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

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

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

打开现有模型

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

Open_System(“pathFollowingWithObstacleAvoidanceExample”);

过程输入

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

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

路径被指定为一组路径点。本例使用3x2常量输入。你可以指定任意数量的路径点作为一个Nx2数组。要在运行时更改路径的大小,可以使用可变大小的信号或使用固定大小的信号填充。这个例子使用固定大小的输入填充未知的路径点。

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

计算速度和路径跟踪的航向

“计算速度和路径跟踪的航向”子系统计算线性和角速度命令和目标的移动方向使用纯粹的追求块。纯粹的追踪块位于移动机器人算法子图书馆内机器人系统工具箱选项卡。或者,你也可以打字robotalgslib在命令行中打开移动机器人算法子图书馆。

你还需要在机器人到达目标点时停止它。在本例中,目标是路径上的最后一个路径点。该子系统还将机器人当前的姿态与目标点进行比较,以确定机器人是否接近目标。

Open_System(' pathfollowingwiththobstacleavoidanceexample /Compute Velocity and Heading for Path following''标签');

调整速度以避免障碍物

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

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

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

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

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

发送速度命令

“输出”子系统发布驱动模拟机器人的线速度和角速度。它增加了使用Pure Pursuit路径跟踪算法计算的速度和使用向量场直方图避障算法计算的调整量。最终速度设定在geometry_msgs / twist.消息并发布主题/ mobile_base /命令/速度

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

Open_System(“pathFollowingWithObstacleAvoidanceExample /输出”'标签');

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

配置并运行模型

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

  • 设置模拟停止时间INF.

  • 点击Play按钮开始模拟。观察机器人在模拟中开始移动。

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

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

  • 打开“输入”子系统,双击航点输入块。将常量值改为[2 2; 8 8;南楠][2 2;8 8;12 5].注意机器人继续沿着新的路径到达新的目标点(12,5)避免障碍物。

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

另请参阅