在ubuntu 16.04使用IntelRealSense D435i调用realsense ROS包时,运行
roscore
roslaunch realsense2_camera rs_rgbd.launch
出现错误,报错如下:
/opt/ros/kinetic/lib/nodelet/nodelet:
symbol lookup error
: /home/xxx/catkin_ws/devel/lib//librealsense2_camera.so:
undefined symbol
: _ZN20ddynamic_reconfigure19DDynamicReconfigure16registerVariableIiEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_RKN5boost8functionIFvSA_EEES9_SA_SA_
解决思路:
1)查找系统内librealsense2_camera.so的数量
sudo find / -name librealsense2_camera.so
2)如果发现librealsense2_camera.so在不同路径下存在多个文件时,比如:
/home/xxx/catkin_ws/devel/lib/librealsense2_camera.so
/opt/ros/kinetic/lib/librealsense2_camera.so
3)这就产生了引用歧义,即/opt/ros/kinetic/lib/nodelet/nodelet不知道引用哪个库文件进行加载,经测试发现,nodelet原本引用/opt/ros/kinetic/lib/路径下的
librealsense2_camera.so文件,但是,链接到/home/xxx/catkin_ws/devel/lib/路径下的librealsense2_camera.so文件。
4)删除/home/xxx/catkin_ws/devel/lib/路径下的librealsense2_camera.so文件,重新运行后,恢复正常。