因为最近学习的缘故,花了半天的时间安装了ROS,期间因为ubuntu也是临时安装的双系统,遇到了各种各样的问题,这里记录一下,主要集中在ROS系统安装问题的解决。
ubuntu系统的安装网上已经有很多详细的教程,这里就不展开详述了,安装的各种问题都可以在网上找到。我遇到的最大的问题是nvidia的显卡驱动不兼容,使得安装完系统重新启动后一直黑屏,这个问题网上查到的方法很乱,我也尝试了一些不同的解决方式,这个可以后面再总结一下,这篇主要讲ROS的安装
ROS的安装其实非常的简单,需要运行命令行不超过10行,总共就四步:添加密钥 ➡ 下载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 |
将下面这条命令复制到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'
将以下命令复制到ubuntu的终端执行,成功后会显示已导入。
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
为了保证后面下载速度,一般需要使用国内的镜像源。一般使用过Linux相关的系统都会进行这一步的操作。更改起来很简单,在命令行或者软件更新器更改都可以。具体可以参考https://blog.csdn.net/qq_44339029/article/details/108916820这篇博客。
更新后记得运行:
sudo apt update
执行命令:(注意安装包的版本,noetic是ubunutu20.04里对应ROS1的版本命名)
sudo apt install ros-noetic-desktop-full
执行命令:
sudo rosdep init
成功的话会显示 please run rosdep update。
这一步非常建议开VPN,否则会经常性的网络链接错误。主要原因是因为 www.rawgithubusercontent.com 这个网站被墙。
可能遇到的问题如下:
sudo apt install python3-rosdep
sudo gedit /etc/hosts
将 185.199.109.133 raw.githubusercontent.com
加在hosts文件最后。主要原因是增加raw.githubusercontent.com网站的真实IP地址。
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
基本上解决一个错误就可以输入sudo rosdep init命令试试,遇到其他错误再对应解决。最后成功会显示 please run rosdep update ,一定要开VPN科学上网!!!!
既然上一步让我们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键换行是否可行和你的编辑器的配置有关。
修改命令如下:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
url="https://ghproxy.com/"+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'
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py 72行
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
// 在 给gbpdistro_url赋值前添加
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
执行命令:(注意这里的文件夹名字也是和ros的版本名字匹配的)
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
执行命令:
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
按理说ROS到这里就安装完成了,执行roscore测试一下:
roscore
如果报错有对应的安装包没有装,那就安装提示重新安装一下。
成功的话会显示 started core service.
可以启动一下小海龟的仿真器试一试,分别打开两个新的终端,每个输入一行以下命令:
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
这时候你按键盘上的方向键就可以控制小海龟移动,ROS成功安装!