Ubuntu20.04-ROS:Noetic安装
参考B站古月居老师的视频以及大量博客反复尝试多次,终于安装成功,现将安装过程进行详细说明,望后来者避坑。
版本说明
因为安装的Ubuntu版本为20.04,所以对应的ROS版本为Noetic。
安装过程
1. 添加 source.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. 添加keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3. 安装
sudo apt update
sudo apt install ros-noetic-desktop-full
安装过程可能会持续10~20mins,请耐心等待,若因网络问题无法安装请尝试将第一步换为下面的源,再按上述步骤安装。
sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
4. 初始化与更新
sudo rosdep init
rosdep update
4.1 初始化报错解决办法
可能会提示下载python-rosdep2,noetic对应的版本应为python3-rosdep2,故安装命令为
sudo apt install python3-rosdep2
安装完成后再执行 sudo rosdep init 时需要重置初始化文件20-default.list,直接删除该文件
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
再次执行初始化命令,可能会出现下列报错:
ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.
解决办法如下:
4.1.1 查询IP
这是因为https://raw.githubusercontent.comt网站的IP地址变化引起的,所以需要访问 https://www.ipaddress.com/, 查询 raw.githubusercontent.com 的IP地址 (一键查询)
4.1.2 修改hosts
sudo gedit /etc/hosts
打开hosts文件如下:
127.0.0.1 localhost
127.0.1.1 xmzb
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
在最后一行添加(IP根据你查到的修改)
185.199.110.133 raw.githubusercontent.com
保存退出后运行初始化命令如果仍然报错尝试更换其他IP地址。
初始化成功后会提示 rosdep update 的信息。
4.2 更新报错解决办法
执行 rosdep update可能会出现以下报错:
$ rosdep update reading in sources list data from /etc/ros/rosdep/sources.list.d ERROR: error loading sources list: ('The read operation timed out')
这是由于访问的网站被墙的缘故,所以需要添加代理,更新过程一共会访问5个网站,建议全部都启用代理进行访问
4.2.1 打开包含资源下载函数的文件
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
4.2.2 添加代理
url="https://ghproxy.com/"+url
代码修改位置:
4.2.3 修改 /usr/lib/python3/dist-packages/rosdistro/init.py 文件中的DEFAULT_INDEX_URL
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
//修改第68行的地址
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
4.2.4 修改其余(4个)文件中的地址,在地址 https://raw.githubusercontent.com/… 前添加https://ghproxy.com/
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
//修改第36行的地址
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py 72行
//修改第72行
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
//修改第39行
sudo gedit /usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py
//修改第68行、119行
再次运行 rosdep update ,成功完成对5个网站的访问(Hit)并获取到相应资源。
5 环境配置
5.1 必须在使用ROS的每个bash终端中获取此脚本的源代码
source /opt/ros/noetic/setup.bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
至此已经在Ubuntu20.04的系统中完整安装ROS Noetic
6 安装rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
7 测试安装是否成功
输入ros并敲击两次Tab,观察以ros开头的命令是否有roscore
ros
若没有,按照安装步骤再操作一遍,可以发现第二次安装的时间很短,应该是补齐了之前没有安装好的包。
或者根据古月居老师教程直接输入roscore命令,可能会显示以下错误:
Resource not found: roscore ROS path [0]=/opt/ros/noetic/share/ros ROS path [1]=/opt/ros/noetic/share The traceback for the exception was written to the log file
提示安装其他的包,发现安装后没有用,应该改为以下语句
sudo apt-get install ros-noetic-roslaunch
8 尝试控制小海龟
三次命令分别开启不同终端执行
8.1启动ROS Master
roscore
8.2 启动小海龟仿真器
rosrun turtlesim turtlesim_node
8.3 启动海龟控制节点
rosrun turtlesim turtle_teleop_key
使用上下左右键对小海龟进行控制
参考资料:
【1】https://blog.csdn.net/Robin_hlt/article/details/114365554
【2】https://blog.csdn.net/maizousidemao/article/details/109476275
【3】https://zhuanlan.zhihu.com/p/392082731