Mint19.3系统 或 Ubuntu18.04安装ROS系统详细过程,以及ROS系统安装过程中常见的问题

332 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情


在安装系统之前有必要先介绍一些其他的内容,以防止你后面安装遇到问题,或者后面安装遇到问题不知道怎么解决,或者找的解决方式不能够解决你的问题,就很悲催!

1查看MInt系统或Ubuntu的系统的版本号

1.1 Mint系统或Ubuntu版本号说明

不同的Ubuntu对应的ROS的版本不同,因此在安装前一定要确定你自己Ubuntu系统的版本,应该安装哪一个ROS系统版本

ROS发布日期 | ROS版本 | 对应Ubuntu版本 --------|-------|---------|------------------------------ 2012.12 | ROS Groovy Galapagos | Ubuntu 12.04(Precise) 2013.09| ROS Hydro Medusa | Ubuntu 12.04 LTS(Precise) 2014.07|ROS Indigo Igloo | Ubuntu 14.04(Trusty) 2015.03|ROS Jade Turtle | Ubuntu 15.04(Wiky)/ Ubuntu LTS 14.04(Trusty) 2016.03|ROS Kinetic Kame | Ubuntu 16.04(Xenial)/ Ubuntu 15.10(Wily) 2018.05|ROS Melodic | Ubuntu18.04(Bionic)/ Ubuntu18.04 LTS(Bionic)

2 在Mint19.3上安装ROS系统

1、设置安装源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

上面就是通过lsb_release -sc获取系统的版本代号,然后把安装源:deb http://packages.ros.org/ros/ubuntu bionic main写入到/etc/apt/sources.list.d/ros-latest.list文件中!

或者直接用Ubuntu18.04的版本代号bionicMint19.3直接用下面这种命令

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'

注意:

如果你的系统是:Ubuntu18.04,那lsb_release -sc获取到的版本代号应该为:bionic,而Mint19.3系统虽然对应的是Ubuntu18.04,但是lsb_release -sc获取到的是Mint19.3的版本代号tricia。因此,如果你是Mint19.3系统,不要使用lsb_release -sc 获取系统的版本代号!

2、设置秘钥(不用担心,ROS是开源的,密钥直接下载就好了,不用买)

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

3、更新源地址

sudo apt-get update

更新错误:E: 仓库 “file:/var/cuda-repo-ubuntu1804-10-2-local Release” 没有 Release 文件。

在这里插入图片描述

尝试解决:

方法一:网上很多说是换源(即修改/etc/apt/sources.list文件中添加新的镜像源),如果你们想要添加镜像源,也可以去这里查看各种系统对应的镜像源,此方法我亲测无效!!!

方法二:后面我找到了这篇博客,以为找到了救命稻草,首先他的系统是Ubuntu18.04,我的系统是Mint19.3,虽然有点区别,但是我在:软件源-额外的仓库中还是找到了同样的设置,然后把勾选状态取消

在这里插入图片描述

之后再更新,就没有出现这种问题了,但是后面操作又会遇到新的问题,这种方法只是跳过不更新这个源,治标不治本呀,后面我是需要这个源下载安装一些其他的库包的!最终解决,就是把上面的$lsb_release -sc改为:bionic,把镜像源重新添加一次!所以用Mint19.3系统还是有坑的呀!

4、安装ros-melodic-desktop-full

sudo apt-get install ros-melodic-desktop-full

从上面的ros-melodic-desktop-full可以看到ros的版本代号melodic,因此对应的是Ubuntu18.04版本,二我们之所以遇到这个错误,也是一开始用的是$lsb_release -sc获取的是Mint19.3的版本代号tricia

错误报告如下:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成 
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:   
 ros-melodic-desktop-full : 依赖: ros-melodic-desktop 但是它将不会被安装
                            依赖: ros-melodic-perception 但是它将不会被安装
                            依赖: ros-melodic-simulators 但是它将不会被安装
                            依赖: ros-melodic-urdf-tutorial 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

注意:

如果安装特别缓慢,请参考

5、收尾工作

sudo rosdep init

在执行这个命令的时候,提示:rosdep :command not found,然后这篇博客,需要先安装如下:

sudo apt install rospack-tools

在这里插入图片描述 但是按装完rospack-tools后,再执行sudo rosdep init依然显示命令不存在,但是从上图中的推荐安装:python-rosdep可以看到,安装这个库包可以解决问题!

sudo apt-get install python-rosdep

在这里插入图片描述

最后再更新即可:

rosdep update

在这里插入图片描述

6、设置环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

把环境source /opt/ros/melodic/setup.bash追加到~/.bashrc配置文件末尾!

遇到的其他问题:

ros的python调用库包rospy导入不存在:

>>> import rospy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'rospy'
>>> 

解决方法:

网上好多给出的方法都是修改pycharm中的配置文件,但是对于我来说都没有用,第一直观的想法是:rospy这个库包不存在,安装它,但是使用pip install rospy安装这个库包会提示不存在!

使用如下命令安装rospy库包安装完后可以正确导入import rospy; import rospkg

pip install rospkg

错误: rospy.exceptions.ROSInitException: time is not initialized. Have you called init_node()?

解决方法:直接安装libignition-math2即可解决问题!

sudo apt upgrade libignition-math2

在这里插入图片描述

后面运行又报错误了,从错误信息显示可以看出是:时间没有初始化

我们再来看一下:rosbag play 2020-08-04-16-22-48.bag启动命令的显示信息,其中Duration就是持续的时间,单位应该是秒,只要命令执行,时间就是持续向前走的,如果先运行该命令,再运行程序就相当于时间没有初始化!

在这里插入图片描述

最终解决方式:请按照如下的运行顺序进行运行程序

1、先开启ros服务

roscore

2、再运行程序

python radar_fusion_rgb.py

3、最后执行雷达数据包,时间初始化,时间从0开始

rosbag play 2020-08-04-16-22-48.bag

参考1blog.csdn.net/sinat_34130… 参考2blog.csdn.net/haiyinshush…