ROS安装的常见问题

新的电脑安装ubuntu16和18很容易出毛病,无线网卡不能用,驱动也装不成功。显卡驱动有问题,不能改变屏幕亮度和外接显示器等等问题。所以但是装新系统就不会有这些问题,因此ROS最好也用noetic,当然更新的是ROS2

安装ROS报错

Ubuntu 16.04 安装ROS kinetic报错Depends: ros-kinetic-desktop but it is not going to be installed

  1. 删除ros-latest.list
  2. 修改源: vim /etc/apt/sources.list,改为下面内容,也就是中科大的安装源:
1
2
3
4
5
6
7
8
9
10
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

结果未变,再运行sudo apt-get -f install后安装了一个软件包,再安装ros-kinetic-desktop-full正常了

Failed to connect to raw.githubusercontent.com port 443

终端中输入vim /etc/hosts,加入185.199.110.133 raw.githubusercontent.com,或者从raw.Githubusercontent.com中选一个IP

退出后重新执行

安装时找不到软件包


从报错的内容找到安装包的地址,直接下载,有时一个软件包还有其他依赖包,都要下载

GPG error, signature were invalid


根据官方的文档,重新设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

编译缺少 libvtkproj4

编译时报错: No rule to make target '/usr/lib/x86_64-linux-gnu/libvtkproj4-6.2.so.6.2.0'

解决方法: sudo ln -s /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/x86_64-linux-gnu/libvtkproj4-6.2.so.6.2.0

E: 无法定位软件包 ros-kinetic-map-server

软件和更新其他软件里添加两项:

1
2
deb http://packages.ros.org/ros/ubuntu xenial main
deb http://packages.ros.org/ros-shadow-fixed/ubuntu xenial main

然后执行sudo apt-get update,应该就能安装了。
/etc/apt/sources.list里添加也是同样效果,但两个地方不能都添加,否则update时会报错

without authentic

有时安装某个包出现下面情况,
without authentic.png
在命令最后添加--allow-unauthenticated即可

安装ROS包出现404 Not Found

1
2
Err:1 http://packages.ros.org/ros/ubuntu <YOUR_UBUNTU_VERSION>/main amd64 <SOME_ROS_PKG> amd64 0.13.3-0xenial-20190320-132757-0800
404 Not Found [IP: 64.50.236.52 80]

运行sudo apt update也无效,打开上面的网页后,发现安装包的版本是更新的,看来我们的安装没有更新。
最后发现在2019年夏天,ROS官方更改了安装的Key,也就是第一次安装ROS时设置的Key。需要换成新的Key,步骤如下:

  • sudo apt-key del 421C365BD9FF1F717815A3895523BAEEB01FA116 (Kinetic及以后的版本)

  • sudo -E apt-key adv —keyserver ‘hkp://keyserver.ubuntu.com:80’ —recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  • sudo apt clean

  • sudo apt update

现在可以正常安装了,如果以后安装ROS,需要用这个新的Key,目前网上很多旧资料还是以前那个Key

参考:
apt update fails / cannot install pkgs
ROS报错“An error occurred during the signature verification”的解决办法

找不到***.deb

有时候我们解决了上面的问题,还是会出现下载ros包出现找不到的错误,这是因为ROS的包大部分都是在更新的,比如robot_state_publisher在2020年1月就更新了,如果没有apt-get update,是下载不到的

rqt_tf_tree 报警

执行rqt_tf_tree出现报警:

1
/opt/ros/melodic/lib/python2.7/dist-packages/rqt_tf_tree/dotcode_tf.py: 96: YAMLLoadWarning: calling yaml.load() without Loader=...is deprecated as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.

不理会也无影响,如果要解决,在dotcode_tf.py96行改为 yaml.load(input, Loader=yaml.FullLoader)

参考: yaml.load 问题

ImportError: No module named rospkg pyyaml

sudo pip3 install pyyaml 或者 sudo apt-get install python3-yaml

如果出现 Requirement already satisfied:,尝试下面命令

1
2
3
4
sudo apt-get install python3-catkin-pkg
sudo apt-get install python3-rospkg
sudo apt-get install python3-rospkg-modules
sudo apt-get install python3-catkin-pkg-modules

如果还有问题,那就是python版本问题,而不是安装的问题了,使用python3一般能解决,不过要explicitly指定,所以执行

1
sudo apt install python-is-python3

Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)

在编译map_server时出错,是缺少了库文件:

1
2
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-dev

缺少某个包

使用catkin_make时,如果缺某个包,会提示缺*Config.cmake文件,平时都会使用apt install直接安装这个包,这并不是只添加了*Config.cmake文件,而是有一系列文件,所以不能直接从其他电脑复制。

liborocos-kdl_1.3.0

liborocos-kdl1.3_1.3.0的下载地址