1、ERROR: Cannot load message class for [autoware_msgs/CloudClusterArray]. Are your messages built?
终端输入 rostopic hz /cloud_clusters
或 rostopic echo /cloud_clusters
查看话题信息出现上面的问题。
但是用rostopic list
打开是可以看到有这些话题的。
解决方法:
cd ~/ud_ws //ud_ws为我存放该工程的工作空间
source devel/setup.bash
然后再去执行:
rostopic hz /cloud_clusters
成功看到出现内容,如下
2、No handlers could be found for logger “rosout”, /opt/ros/melodic/lib/rosbag/play: error while loading shared libraries: librosbag.so: cannot open shared object file: No such file or directory
问题描述:播放 rosbag 包的时候出现:/opt/ros/melodic/lib/rosbag/play: error while loading shared libraries: librosbag.so。
原因:
原因是环境变量 ~/.bashrc
中没有添加相关库的路径 或者 可能在环境变量~/.bashrc
文件中在用LD_LIBRARY_PATH
添加相关变量路径的时候直接使用覆盖添加
了LD_LIBRARY_PATH
,而不是从属添加
进去,导致LD_LIBRARY_PATH
中的其他变量路径都找不到了,比如把ROS
的路径也覆盖了,导致无法找到ros相关的动态库。一般出现该问题是后者原因大一些,如果是前者环境变量中没有添加相关库的路径的话,直接进行从属添加进去即可,两者都可参考下面的解决方法进行从属添加。
解决方法:
网上很多方法是使用手动指定或者在环境变量中用ROS的再次覆盖,比如下面方法1和方法2,这不能从根本上解决问题。正确的方法是在环境变量中添加变量路径的时候要使用从属添加方式,如方法3中所示。
在当前行输入命令如下命令,然后再执行播放bag包命令:
方法1:命令行直接输入:LD_LIBRARY_PATH=/opt/ros/melodic/lib
方法2:在环境变量中加入:
sudo gedit ~/.bashrc
export LD_LIBRARY_PATH=/opt/ros/melodic/lib
完成上面的步骤后就可以执行播放bag包了:rosba play xxxxxx.bag
方法3:
在~/.bashrc
中正确添加变量环境路径:
正确添加方法,下面的两种方式都是正确的从属添加方法:
####### 方法3 ###########
# 方式1
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 方式2
export LD_LIBRARY_PATH=/usr/local/TensorRT-8.2.1.8/lib:$LD_LIBRARY_PATH
错误添加方式,如下:
# 这是覆盖添加方式,添加库的路径时不建议这么使用
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export LD_LIBRARY_PATH=/usr/local/TensorRT-8.2.1.8/lib