ROS运行中的一些常见报错及解法

本文记录了基于Ubuntu系统的ROS应用研究中遇到的经典报错及其解决方案,包括终端启动项设置、依赖问题、软件安装错误等内容,适用于ROS开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现行的机器人应用研究,多是基于Ubuntu系统的ROS(Robot Operating System)进行搭建及仿真测试,这里简略记录一些经典报错及相应解法。这些仅是笔者在使用过程中遇到的小坑,水平有限,仅作学习记录之用途。

终端启动项
对于package中的功能包,使用中需要source相应的setup.bash文件,利用以下命令

gedit ~/.bashrc

可以直接编辑终端启动项(即你每次打开新的终端,这里面的命令行就自动运行了,可以直接把source语句放进其中)。

例如加入:

source ~/my_ws/devel/setup.bash

这样每次打开新的终端就相当于source过了。

报错内容(1):
catkin_package( )DEPENDS on the catkin package 'message_runtime' which must therefore be listed as a run dependency in the package.xml

感觉经常出现,原因上应该是某些依赖没加上。

对应解法:

在对应package中的package.xml文件中加上

<build_export_depend> message_generation </build_export_depend>
<exec_depend> message_runtime </exec_depend>

报错内容(2):
E: 无法获得锁 /var/lib/dpkg/lock-fronted - open (11:资源暂时不可用)

原因上是因为上一个apt进程可能还未结束(就被强制关闭了,毕竟有时候安软件网络一波动就直接嗝屁,看着心烦就CTRL+C了…)
换言之,就是正在使用apt install进程,由于它正在运行时会占用软件源更新时的系统锁,此时资源被锁。

对应解法(1):

ps -e|grep apt

会显示

xxx(一串数字) ? 00:00:01 aptd

直接输入

sudo kill xxx(那串数字)

这样可以直接“杀死”之前的进程。

对应解法(2):

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

报错内容(3):

安装软件时报错:

更换介质:请把标有“......”的盘片插入驱动器“/media/cdrom/”再按回车

对应解法:

权限修改/etc/apt/sources.list文件,注释掉deb cdrom: 开头的行
即:

# deb cdrom: .........

报错内容(4):

snap "xxx" has "install-snap" change in progress

xxx软件之前安装过一次,只是没装完就停止了(贼神奇)

对应解法:

snap change

这时候会显示

ID Summary
X install "xxx" snap

直接输入

sudo snap abor X

报错内容(5):

rosdep update 之后报错(有可能是网络问题)

这一点貌似Ubuntu每次更新后就很常见…实在没懂

对应解法:

更改/usr/lib/python 2.7/dist-packages/rosdep2/下面的三个文件的执行时间

三个文件分别是 source_list.py gdpdistro_support.py rep3.py

文件中的DOWN_TIMEOUT 默认是15,改成999就好了。

报错内容(6):

sudo rosdep init报错

对应解法:
cd /etc
sudo mkdir ros
cd ros
sudo mkdir rosdep
cd rosdep
sudo mkdir source.list.d
cd source.list.d
sudo touch 20-default.list
sudo gedit20-default.list

在文件里输入:

yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml

yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml

gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

万能的加依赖句子

经常缺依赖报错可用

以melodic版本为例,直接用以下语句即可

rosdep install -y --from-paths, --ignore-src --rosdistro melodic

### ROS中D415设备运行报错解决方案 在ROS环境中运行Intel RealSense D415设备时遇到错误,可能的原因涉及驱动程序配置不当、依赖项缺失或硬件初始化失败等问题。以下是针对此类问题的分析与解决方法。 #### 1. 驱动兼容性检查 确保使用的`realsense2_camera`包版本支持当前的D415固件版本。如果驱动不匹配,可能会导致无法正常启动相机。可以通过以下命令更新到最新版本: ```bash sudo apt update sudo apt install ros-$ROS_DISTRO-realsense2-camera ``` 此外,确认已安装最新的RealSense SDK并完成正确配置[^3]。 #### 2. 启动参数调整 根据引用内容,D435可以使用与D415相同的启动文件来简化操作流程[^1]。尝试修改默认launch文件中的参数设置以适配具体需求。例如,在`rs_camera.launch`文件中指定分辨率和帧率: ```xml <param name="width" value="640"/> <param name="height" value="480"/> <param name="fps" value="30"/> ``` 这些参数应基于实际应用场景进行优化,同时注意不同型号间的最佳工作距离差异。 #### 3. 序列号自动识别 部分情况下,因未正确读取相机序列号而导致连接异常。虽然提到某些脚本无需手动输入序列号即可实现自动化处理,但如果仍然存在问题,则可显式添加相应字段至启动配置中: ```yaml serial_no: "" ``` 留空表示允许任意可用设备接入;或者替换为特定目标装置的实际编号字符串形式。 #### 4. 消息类型验证 当涉及到数据传输时,请核实所订阅话题的消息格式是否一致于预期定义。Geometry_msgs库提供了多种标准几何量表达方式供选用[^2]。比如Twist结构体常用于描述速度矢量信息: ```cpp geometry_msgs::Twist twist_msg; twist_msg.linear.x = velocity_x; // 设置线速度分量 // ...其他属性赋值... pub.publish(twist_msg); ``` 以上代码片段展示了如何构建并发布一条包含运动指令的数据流给下游节点消费。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值