ROS中编写全局路径规划器步骤

自定义全局规划器

1.编写路径规划器类

1.1创建工作空间,创建功能包(nav_core、roscpp、rospy、std_msgs)

1.2在src和include中编写相关代码

在CMakeLists.txt中修改:

catkin_package(
   INCLUDE_DIRS include
#  LIBRARIES better_astar_global_planner
   CATKIN_DEPENDS nav_core roscpp rospy std_msgs
#  DEPENDS system_lib
)


include_directories(
  include/${PROJECT_NAME}
  ${catkin_INCLUDE_DIRS}
)

add_library(learn_global_planner_lib
  src/better_astar.cpp
)

编译后在/devel/lib中生成liblearn_global_planner_lib.so文件,后续要用。

2.编写插件

2.1插件注册

在.cpp文件的头文件后加入(注:LearnAstar_planner::LearnAstarPlannerROS为自己编写的代码,类似于 nav_core::BaseGlobalPlanner)

PLUGINLIB_EXPORT_CLASS(LearnAstar_planner::LearnAstarPlannerROS, nav_core::BaseGlobalPlanner)

2.2创建.xml文件(注意:liblearn_global_planner_lib没有.so)

 <library path="lib/liblearn_global_planner_lib">
  <class name="LearnAstar_planner/LearnAstarPlannerROS" type="LearnAstar_planner::LearnAstarPlannerROS" base_class_type="nav_core::BaseGlobalPlanner">
    <description>This is the better A* global planner plugin </description>
  </class>
 </library>

2.3向ros包提供插件

在package.xml中加入

  <export>
    <!-- Other tools can request additional information be placed here -->
    <nav_core plugin="${prefix}/learn_global_planner_plugin.xml" />
  </export>

然后catkin_make,到此,全局路径规划器编写完成。

3.测试编写的全局路径规划器

3.1任一的仿真环境中,在move_base.launch文件中添加

<param name="base_global_planner" value="LearnAstar_planner/LearnAstarPlannerROS"/>

3.2逐一启动仿真环境文件和导航文件。

参考:
1.http://wiki.ros.org/navigation/Tutorials/Writing%20A%20Global%20Path%20Planner%20As%20Plugin%20in%20ROS/
2.https://www.bilibili.com/video/BV1U44y137dc/?spm_id_from=333.788&vd_source=e94514567e600eb634e59dea01faea91

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个比较复杂的问题,需要一些基本的计算机科学知识和ROS开发经验。以下是一个大致的思路和步骤: 1. 理解全覆盖路径规划的基本概念和算法。全覆盖路径规划是指在一个给定的环境,通过对环境进行扫描和分析,尽可能遍历并覆盖所有的可行区域,从而生成一条覆盖全局的路径。常用的算法包括:基于图论的Dijkstra算法、A*算法、深度优先搜索、广度优先搜索等。 2. 确定所需的ROS软件包和依赖项。常用的ROS软件包包括:move_base、gmapping、amcl、rviz等。依赖项包括:ROS Kinetic/Kinetic,ROS Navigation Stack等。 3. 安装和配置所需的软件包和依赖项。在ROS系统,可以通过apt-get或者源码编译安装所需的软件包和依赖项。对于依赖项,需要在ROS环境变量设置相关的路径和参数。 4. 编写ROS节点和程序。在ROS,可以使用C++或Python编写节点和程序。节点可以接收和发布ROS消息,处理和计算数据,控制机人的运动和行为。程序可以实现全覆盖路径规划算法,调用ROS软件包和依赖项,生成和发布覆盖全局的路径。 5. 测试和优化程序性能。在ROS,可以使用ROSbag记录和回放数据,对程序的性能进行测试和优化。可以通过调整算法参数,优化数据结构和算法实现,提高程序的效率和准确性。 总之,全覆盖路径规划是一个比较复杂的问题,需要一定的编程和算法能力。在ROS,可以使用现有的软件包和依赖项,快速实现全覆盖路径规划功能,并进行测试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值