注意devel/lib
里的so文件权限是rwxrwxr-x
,install/lib
里的so文件权限是rw-r--r--
节点move_base由很多库链接,一部分是/opt/ros/kinetic
目录的ROS基本库文件,另一部分是/usr/lib/x86_64-linux-gnu
的系统库文件,除此之外的重要库文件只有:
- libmove_base.so
- libbase_local_planner.so
- libcostmap_2d.so
- libvoxel_grid.so
- libteb_local_planner.so
同理,libmove_base.so
的重要链接库:
- libbase_local_planner.so
- libcostmap_2d.so
- libvoxel_grid.so
依次检查其他库文件,由于base_local_planner
一般不修改,所以重要的其实就是libmove_base.so
, libcostmap_2d.so
, libvoxel_grid.so
主要的库文件,比较大的几个1
2
3
4
5
611M libmove_base.so
8.5M liblayers.so
3.1M libcostmap_2d.so
2.3M libteb_local_planner.so
2.0M move_base/move_base
libteb_local_planner.so
1 | add_library( teb_local_planner |
更新teb算法的so文件,不能只更新libteb_local_planner.so
,而是包含以下文件:1
libbase_local_planner.so libmove_base.so libcostmap_2d.so libvoxel_grid.so liblayers.so libteb_local_planner.so
libcostmap_2d.so
:1
2
3
4
5
6
7
8
9
10
11
12
13add_library( costmap_2d
src/array_parser.cpp
src/costmap_2d.cpp
src/observation_buffer.cpp
src/layer.cpp
src/layered_costmap.cpp
src/costmap_2d_ros.cpp
src/costmap_2d_publisher.cpp
src/costmap_math.cpp
src/footprint.cpp
src/costmap_layer.cpp
)
liblayers.so
:1
2
3
4
5
6
7
8add_library( layers
plugins/inflation_layer.cpp
plugins/obstacle_layer.cpp
plugins/static_layer.cpp
plugins/voxel_layer.cpp
src/observation_buffer.cpp
)
问题
move_base
运行时出错,可能是安装问题,更可能是链接问题,确保libtf.so
是/opt/ros/
的那个,它还会链接libtf2_ros.so
和 libtf2.so
,它们也应该是/opt/ros/
的