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

  • Post author:
  • Post category:其他



现行的机器人应用研究,多是基于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



版权声明:本文为mercurialmush原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。