ubuntu20.04中安装ROS系统,详细介绍各种错误解决方法,直达小海龟

因为最近学习的缘故,花了半天的时间安装了ROS,期间因为ubuntu也是临时安装的双系统,遇到了各种各样的问题,这里记录一下,主要集中在ROS系统安装问题的解决。

Ubuntu系统的安装

ubuntu系统的安装网上已经有很多详细的教程,这里就不展开详述了,安装的各种问题都可以在网上找到。我遇到的最大的问题是nvidia的显卡驱动不兼容,使得安装完系统重新启动后一直黑屏,这个问题网上查到的方法很乱,我也尝试了一些不同的解决方式,这个可以后面再总结一下,这篇主要讲ROS的安装

ROS系统的安装

ROS的安装其实非常的简单,需要运行命令行不超过10行,总共就四步:添加密钥 ➡ 下载ROS ➡ 初始化 ➡ 设置环境变量。期间遇到了一些错误或者问题其实都是相应的库没有配置好或者网络的问题。所以遇到任何问题就去溯根溯源,定位问题去解决就好了。

0. ROS版本

ROS 虽说也叫操作系统,但它是寄生在 LINUX 操作系统之下的。Ubuntu20.04是ROS1支持的最后一个版本,如果安装Ubuntu22.04的话需要用ROS2。当然ROS2有很多的优点,大家都可以去尝试用一下。安装的时候注意版本的名字,版本名字对应了安装包的命名。

Ubuntu ROS 1.0 ROS 2.0
18.04 LTS Melodic LTS Dashing LTS
20.04 LTS Noetic LTS Foxy LTS

1. 添加ROS软件源

将下面这条命令复制到ubuntu的终端执行:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2. 添加密钥

将以下命令复制到ubuntu的终端执行,成功后会显示已导入。

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3. 更新软件源

为了保证后面下载速度,一般需要使用国内的镜像源。一般使用过Linux相关的系统都会进行这一步的操作。更改起来很简单,在命令行或者软件更新器更改都可以。具体可以参考https://blog.csdn.net/qq_44339029/article/details/108916820这篇博客。
更新后记得运行:

sudo apt update

4. 安装ROS

执行命令:(注意安装包的版本,noetic是ubunutu20.04里对应ROS1的版本命名)

sudo apt install ros-noetic-desktop-full

5. 初始化rosdep

执行命令:

sudo rosdep init

成功的话会显示 please run rosdep update。

这一步非常建议开VPN,否则会经常性的网络链接错误。主要原因是因为 www.rawgithubusercontent.com 这个网站被墙。

可能遇到的问题如下:

  • 错误1:找不到命令
    执行命令:
sudo apt install python3-rosdep
  • 错误2 ERROR: cannot download default sources list from:https: //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
    执行命令:
sudo gedit /etc/hosts

185.199.109.133 raw.githubusercontent.com 加在hosts文件最后。主要原因是增加raw.githubusercontent.com网站的真实IP地址。

  • 错误3: ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
    出现这个这个问题说明前面尝试失败了一两次,输入命令:
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

基本上解决一个错误就可以输入sudo rosdep init命令试试,遇到其他错误再对应解决。最后成功会显示 please run rosdep update ,一定要开VPN科学上网!!!!

6. 更新rosdep

既然上一步让我们run rosdep update,那肯定得run是吧。
执行命令:

rosdep update

不出意外的话会出意外,报错:reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: error loading sources list: (‘The read operation timed out’)
这一步正常网络下基本不可能跑通,主要问题还是刚刚那个网站被墙,上一步可以VPN解决,但这一步不行,必须更改对应的链接。解决方法主要参考了这个博客:https://blog.csdn.net/leida_wt/article/details/115120940?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
基本用这篇博客里的修改方式便可以解决,注意一个问题就是文件夹的位置,因为我们装的是python3-rosdep,所以对应的文件夹在python3而不是python2.7里面,还有一个问题就是注意python的标准换行是四个空格,有时候tab键换行是否可行和你的编辑器的配置有关。

修改命令如下:

  1. 打开包含资源下载函数的文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
  1. 添加代理
    在 download_rosdep_data 函数里添加url:
url="https://ghproxy.com/"+url
  1. 修改/usr/lib/python3/dist-packages/rosdistro/init.py文件中的DEFAULT_INDEX_URL
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
  1. 修改其余文件中的地址,在地址 https://raw.githubusercontent.com/… 前添加https://ghproxy.com/,需要自己定位一下网址在的行数
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py 72sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py
  1. 解决 Hit 第五个地址的报错
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
// 在 给gbpdistro_url赋值前添加
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
  1. 运行 rosdep update ,完美解决问题

7. 设置环境变量

执行命令:(注意这里的文件夹名字也是和ros的版本名字匹配的)

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

8. 安装rosinstall

执行命令:

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool

9. 验证ROS是否安装成功

按理说ROS到这里就安装完成了,执行roscore测试一下:

roscore

如果报错有对应的安装包没有装,那就安装提示重新安装一下。
成功的话会显示 started core service.

可以启动一下小海龟的仿真器试一试,分别打开两个新的终端,每个输入一行以下命令:

rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

这时候你按键盘上的方向键就可以控制小海龟移动,ROS成功安装!

你可能感兴趣的:(GNSS/INS,组合导航,学习历程,ubuntu,ROS,python)