A ROS wrapper for trajectory planning based on motion primitives
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 年前 | ||
| 7 年前 | ||
| 8 年前 | ||
| 1 年前 | ||
| 7 年前 | ||
| 7 年前 | ||
| 8 年前 | ||
| 8 年前 | ||
| 8 年前 | ||
| 7 年前 | ||
| 7 年前 |
MRSL运动原语库ROS接口
这是motion_primitive_library v1.2版本的ROS包装器。相关视频“基于搜索的四旋翼线性二次最短时间控制运动规划”可在以下链接查看:YouTube。这个包仍在维护中,API可能会偶尔变化,建议使用git log来跟踪最新更新。
包含的包:
motion_primitive_library:在各种环境中的轨迹规划后端planning_ros_msgs:用于存储、可视化和通信的ROS消息planning_ros_utils:与MPL交互的ROS工具,包括映射和rviz插件DecompROS:凸分解和可视化的工具mpl_external_planner:基于motion_primitive_library构建的一些规划器mpl_test_node:示例ROS节点(见下面的例子)
安装
依赖项:
ROS(Indigo及更高版本)catkin_simpleSDL(运行sudo apt install -y libsdl1.2-dev libsdl-image1.2-dev安装)
编译
在编译前,请确保子模块已处于相应的提交状态。
初始化子模块motion_primitive_library和DecompROS,执行以下命令:
$ cd /PATH/TO/mpl_ros
$ git submodule update --init --recursive
1)使用Catkin:
$ mv mpl_ros ~/catkin_ws/src
$ cd ~/catkin_ws & catkin_make_isolated -DCMAKE_BUILD_TYPE=Release
2)使用Catkin Tools(推荐):
$ mv mpl_ros ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin config -DCMAKE_BUILD_TYPE=Release
$ catkin build
示例用法
mpl_ros内的规划器包括:
OccMapPlanner:使用2D占用网格地图VoxelMapPlanner:使用3D体素网格地图EllipsoidPlanner:使用3D点云,并假设机器人在SE(3)中为椭球形PolyMapPlanner2D:使用2D多边形地图和移动障碍物
以下示例展示了其中一些规划器的应用:
示例1(在占用/体素图中规划)
在体素地图中使用内置数据的简单测试可以通过以下命令运行:
$ cd ./mpl_test_node/launch/map_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch
它还会提取生成轨迹的控制命令并保存为trajectory_commands.bag。
规划结果将在Rviz中可视化如下:
| 2D占用地图 | 3D体素地图 |
|---|---|
![]() |
![]() |
示例2(带有移动障碍物的规划)
规划器也可以接收输入的多边形地图以进行碰撞检查。当障碍物不是静止的时,它可以找到避开未来碰撞的轨迹:
$ cd ./mpl_test_node/launch/poly_map_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch
| 静态障碍物 | 动态障碍物 |
|---|---|
![]() |
![]() |
![]() |
即使障碍物的轨迹是非线性的,我们的规划器也能通过一次计划找到满足特定动态约束的机器人最优操纵方案:

示例3(多机器人规划)
规划器可以应用于一组共享受限环境中的机器人。在以下演示中,我们展示了两种配置,其中规划器分别以集中式和分布式模式运行。 在集中式模式下,规划器在开始时运行一次。 在分布式模式下,每个机器人以2Hz的速度不断重新规划,同时只知道其周围部分障碍物的信息。
| 配置1:10个机器人集中式 | 配置2:16个机器人集中式 |
|---|---|
![]() |
![]() |
| 配置1:10个机器人分布式 | 配置2:16个机器人分布式 |
|---|---|
![]() |
![]() |
示例4(使用椭球模型在SE(3)中规划)
另一个使用椭球模型的示例可以在mpl_test_node/launch/ellipsoid_planner_node中找到,其中使用点云作为障碍物,而机器人被建模为椭球。更多信息可以在论文"基于搜索的SE(3)中的激进飞行运动规划"中找到。
$ cd ./mpl_test_node/launch/ellispoid_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch

地图
内置的地图列表如下:
| 简单 | Levine | Skir | 办公室 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
用户可以使用mapping_utils创建自己的地图,提供了一个启动文件示例在./mpl_test_node/launch/map_generator中,用于将STL文件转换为体素地图。
有关完整工具的详细信息,请参阅维基。












