ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图

314
0
2020年9月4日 10时03分

仿真机器人加真实机器人功能包下载链接https://download.csdn.net/download/qq_42145185/11019965

 

ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图插图

 

博主为了图方便,就直接使用了古月老师的仿真包了,博主先和自己的朋友先在真实的机器人上实现了这个功能,再在仿真上来实现了一下。

 

也可以先去zhangrelay老师的博客看看关于rrt的资料。

 

这里继续更新

 

这里先展示rrt建图的过程,下面再介绍rrt如何使用到我们自己的机器人上面

 

ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图插图(1)

ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图插图(2)

ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图插图(3)

 

可以先去wiki上看看rrt的介绍,并先把demo跑起来,这样才能先确定你的依赖安装完成没有。

http://wiki.ros.org/rrt_exploration

 

这里就不介绍怎么去跑demo了

 

如果不会,可以去zhangrelay老师博客去搜索rrt,本人也是在张老师的博主里去了解到rrt的。

 

Github链接:
– 软件包本身:https//github.com/hasauino/rrt_exploration
– Gazebo模拟文件:https//github.com/hasauino/rrt_exploration_tutorials

 

去下载这两个源码包。

 

其实要让自己机器人用rrt_exploration的包,让rrt_里的话题发布到自己的机器人的节点上去,就可以实现了。

 

rrt_exploration修改规则

一、single.launch

eta:此参数控制用于检测边界点的RRT的增长率,单位为米。 此参数应根据地图大小设置,非常大的值将使树生长得更快,从而更快地检测边界点,但是大的增长率也意味着树将缺少地图中的小角落。

 

把global_rrt_detector节点的maptopic的value改为/map

把local_rrt_detector节点的maptopic的value改为/map, robot_frame的value改为/base_link

把filter.py的maptopic的value改为/map, 把namespace改为<param name=”namespace” value=””/>

把assigner.py的maptopic的value改为/map, global_frame的value改为/map, namespace改为<param name=”namespace” value=””/>

 

二、global_rrt_detector.cpp

把整篇出现的ns+都删掉

把所有的/robot_1删掉

84行的ns+”_shapes”改为”/local_detected_shapes”

 

三、local_rrt_detector.cpp

把整篇出现的ns+都删掉

把所有的/robot_1删掉

第85行的ns+”_shapes”改为”/local_detected_shapes”

第96、97行的mapData.header.frame_id改为”/map”

整篇出现的map_topic改为”/map”, base_frame_topic改为”/base_link”

 

四、assigner.py

整篇出现的map_topic改为”/map”, frontiers_topic改为”/filtered_points”

最后main下面的的

try:
node()
except rospy.ROSInterruptException:
pass

改为node()

 

五、functions.py

把整篇出现的ns+都删掉

把整篇出现的self.name+都删掉

把整篇出现的name+都删掉

把整篇出现的global_frame和self.global_frame都替换为’/map’

37、38行的/move_base_node/NavfnROS/make_plan改为/move_base/NavfnROS/make_plan

删除functions.pyc

 

六、filter.py

71行的namespace+str(i+namespace_init_count)+’/move_base_node/global_costmap/costmap’改为’/move_base/global_costmap/costmap’

73行的’/move_base_node/global_costmap/costmap’改为’/move_base/global_costmap/costmap’

88行的global_frame[1:], namespace+str(i+namespace_init_count)+’/base_link’改为’/map’, ‘/base_link’

90行的global_frame[1:], ‘/base_link’改为’/map’, ‘/base_link’

 

七、move_base配置文件修改

这里我们直接用我们下载的仿真包里的move_base的四个配置文件。

做一下简单的修改costmap_common_params.yaml里把13行的footprint注释掉。

把29行的sensor_frame: base_laser_link去掉,再把topic:/base_link改为/scan

 

最后注意:我们这里用的/base_link 是因为我们的机器人的基坐标系是/base_link 但是有的机器人的是/base_footprint 那你就把这个改过来就是了。

发表评论

后才能评论