【ROS基础一】5.Bug相关问题

1、ERROR: Cannot load message class for [autoware_msgs/CloudClusterArray]. Are your messages built?

终端输入 rostopic hz /cloud_clustersrostopic 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
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值