Ubuntu18.04ROS系统安装指南(Jetson nano也适用)
一、设置下载源和公钥
添加镜像源
为了避免麻烦,我建议把以前的源
备份
之后
全部删除
,只保留下面的源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb http://ports.ubuntu.com/ubuntu-ports/ bionic multiverse restricted universe main
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic multiverse restricted universe main #Added by software-properties
然后输入
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'
接着我们要把软件和设置里的
四个选项都勾上
勾完之后关闭,在弹出的提示页面里点击”reload”
添加密钥
输入以下命令
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
如果没有提示error则表明密钥有效,如果不幸失效的话,还请自行search。。。
最后在命令行里输入:
sudo apt-get update
以便更新我们添加的源和密钥。
二、开始下载ROS Melodic
输入命令:
sudo apt-get install ros-melodic-desktop-full
然后就是
漫长的等待
有的时候安装过程可能会出现下面的情况:
下列软件包有未满足的依赖关系:
ros-kinetic-desktop-full : 依赖: ros-kinetic-desktop 但是它将不会被安装
依赖: ros-kinetic-perception 但是它将不会被安装
依赖: ros-kinetic-simulators 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
这个情况有的时候是因为前面的软件更新没完全打开所致,如果已经打开,可以尝试以下办法。输入:
sudo apt-get install aptitude
sudo aptitude install ros-kinetic-desktop-full
按提示输入Y后回车,等待安装完毕即可
上面的ros-kinetic-desktop-full下载完毕后
输入
sudo apt install python-rosdep
接着运行
sudo rosdep init
出现这个表明你已经成功了一半了(恭喜)
注:sudo rosdep init的两个bug情况
1、如果提示”website maybe down”
请采用以下方法
sudo gedit /etc/hosts
在打开的文本里的最后一行添加:151.101.76.133 raw.githubusercontent.com
或者添加:151.101.84.133 raw.githubusercontent.com
两者根据情况自行选择
(注意:如果没有加sudo,则打开的文本是可读的,那么你将没法编辑)
添加完毕后如下,记得保存后退出
2、如果出现下图:
请输入:
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
三、ROS更新调试(这一步是卡了我
最久
的!!)
我们紧接着上文,如果你顺利的到达了这一步的话,按照提示我们需要输入”rosdep update”
但是按提示输入完命令之后,我们一般会遇到
连接超时
的情况:
这是因为我们更新的时候需要访问外网,但悲剧的是
被墙
了
(这个跟你在大陆直接连Youtube然后打不开是一个道理)
所以我们需要亿点点修改,核心是
利用一些支持github的资源代理
来完成我们的更新
这个方法是:
应用ghproxy的代理服务
方法
第一步
1、sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 按Ctrl+F 搜索"def download_rosdep_data"
然后在函数try里面添加:url="https://ghproxy.com/"+url
2、sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 204行try里面添加如下代码
gbpdistro_url = 'https://ghproxy.com/' + gbpdistro_url
###############################################################################
下面的命令则是需要在打开的文本里的对应行所在网址里添加"https://ghproxy.com/"前缀来应用代理服务
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py 39行
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 83行 68行 119行
第二步
输入:
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
打开文本编辑器,你会看到如下文本,发现它们是不是跟超时的网站一模一样?!
# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
我们把它们全部替换为下面的文本(即:加入代理前缀)
# os-specific listings first
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
再次尝试执行rosdep update,问题基本解决(如果还是有超时就多试几次,或者尝试连接手机热点和其他wifi信号。。。我当时也是来来回回折腾了10次左右)
最后出现”updated cache in home/xxx/xxx/xxx”那么再次恭喜你,你的安装已经完成了99%了
四、设置环境变量,运行小乌龟调试
输入
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
提示找不到文件的请看清楚你装得是不是melodic版本
至此,ROS系统安装完毕
小乌龟调试
打开第一个终端,输入
roscore
接着打开第二个终端,输入
rosrun turtlesim turtlesim_node
这个时候你的小乌龟就出来了!
如果希望小乌龟能够移动,我们还需要打开第三个终端
输入
rosrun turtlesim turtle_teleop_key
这里你的鼠标要停留在当前这个终端界面,按键盘上面的
上下左右
来控制小海龟的移动.
总结
被墙的感觉真的很难受!!!