ROS下如何创建新的costmap
在使用ros的过程中,可能会在除开move_base以外的地方还需要自己的costmap,那么该如何使用呢?
其实我们在使用时根据move_base里面的创建流程一样进行就可以。
分析costmap的代码,最上层面向用户的接口是costmap_2DROS,初始化时需要依赖TF的坐标变换,同时也需要像move_base里面的一样的yaml配置文件,具体流程如下:
- 创建功能包, catkin_create_pkg xxx roscpp rospy std_msgs costmap_2d tf
- 创建相关配置文件,如放在params里面的costmap的yaml文件,可以复制move_base里面的然后修改下就行;
- 撸代码,主要包括创建tf: tf::TransformListener tf(ros::Duration(10));
- 创建costmap势力:costmap_2d::Costmap2DROS test_costmap(“local_costmap”,tf);
- 开启 test_costmap.start();
- 修改cmakelist,编译
至此就可以了,后面就可以使用了。
另外本人在测试时出现以下情况:
(1)main函数开启后需要spin(),否则costmap一直在地图原点;
(2)我单独创建测试都可以,但是放在一个由nodelet加载的插件的时候observersion_source一直不能获取导致costmap不正常;
以上两问题希望有人可以帮忙解答,谢谢!