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