数十次ROS安装 各种报错填坑(树莓派或PC)2021最新版

数十次ROS安装 各种报错填坑(树莓派或PC)2021最新版


关于如何在树莓派安装ubuntu18.04图形界面请参考我的上一篇博客

1. 换源(x86的PC虚拟机或者物理机)

老规矩,先换源,此处依旧使用中科大镜像源
点击左下角九饼(九个点)图标找到software&updates软件
下载自(Download from):选择中科大源(ustc)或者清华源(tsinghua)在这里插入图片描述

2. 树莓派4b(arm64 soc)

Arm64的ubuntu-port 镜像源暂时不用换,此处也和x86PC不一样,打开软件更新窗口会发现没有其他镜像的选项。

3. 软件更新

Ctrl+shift+t 打开命令行终端

sudo apt-get update
sudo apt-get upgrade

4. ROS安装——添加ROS软件源

Ctrl+Alt+t 打开终端
添加ros软件源:
即:使用命令行修改sources.list.d文件

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'

注:echo “xxx” > /etc/apt/sources.list.d/ros-latest.list 即在 /etc/apt/sources.list.d/ros-latest.list 添加一行xxx内容

其他镜像:

清华镜像: https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ bionic main
阿里云:http://mirrors.aliyun.com/ros/Ubuntu/bionic main
中国科技大学: http ://mirrors.ustc.edu.cn/ros/Ubuntu/bionic main
##镜像源按照按照帮助文件添加密钥

5. ROS安装——添加密钥

按照版本添加相应密钥
(密钥会定期更改,要及时参考网络上的最新密钥)
如:访问镜像站查找
打开http://mirrors.ustc.edu.cn/找到ROS那一行的末尾的help打开
镜像站帮助界面

复制下列内容并粘贴的命令行终端里面

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

在这里插入图片描述
(图是树莓派安装ros拍的,截图在来回倒腾太费劲了,pc是x86核心架构 树莓派是arm64核心架构,在后续的图可能不太相同,但是步骤是一致的)

6. ROS安装——ROS下载安装

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

遇到询问输入y并回车确认
(根据不同版本替换版本号,版本号和软件源、密钥相互对应 )

7. ROS安装——初始化 rosdep

7.1.执行sudo rosdep init

sudo rosdep init 
7.1.1 报错: rosdep :command not found

在这里插入图片描述
若遇到找不到命令(command not found)

是因为缺乏语言环境,输入:

sudo apt install python-rosdep 

在这里插入图片描述

解决语言环境依赖
再重新运行

sudo rosdep init
7.1.2 报错:Please delete if you wish to re-initialize

若报错如下

ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize

则证明已经搞过一次rosdep init
可以将报错文件删除

sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

重新rosdep init
或直接进行下一步(rosdep update)

成功如图:
在这里插入图片描述

7.1.2 注:

其实我们不难发现 rosdep init 这一步仅仅做了一个事情
那就是下载了/etc/ros/rosdep/sources.list.d/20-default.list
我们可以直接手动下载这个文件 把文件放到对应的位置
之后接着进行7.2的rosdep update
这个文件的下载地址就是ERROR后面接的地址,直接点开或者使用国内的git镜像下载都可以。
镜像网站:https://mirror.ghproxy.com/

7.1.3网络故障:ERROR: cannot download default sources list from:

若运行rosdep init报错:

ERROR: cannot download default sources list from:

则问题为:网站被墙,dns污染
解决方法:见后文网络连接问题

7.2执行rosdep update

sudo rosdep init

成功后,执行

rosdep update

若报错: Hit某个网站无法连接
则仍是网络问题,解决方法见下文。

7.3 rosdep init 和 rosdep update网络故障问题

很多人一直不懂rosdep init究竟干了个啥
其实在这一步中 ros 根据自身编写的py脚本只下载了一个文件
那就是
/etc/ros/rosdep/sources.list.d/20-default.list
rosdep update 则工序复杂 根据一系列脚本下载了很多东西
我们一直出现报错的原因其实很简单,就是在
raw.githubusercontent.com
网站下记录的文件我们由于各种原因下载不到,或者读取不了。
解决这一系列网络问题目标只有两个:
1.想办法和 raw.githubusercontent.com连接
2.下载其中的相关文件
所以安装了这么多次,我总结了如下n种解决办法

7.3.1网络报错 解决方法一:使用手机热点

使用手机热点多次尝试(但是还有可能连不上,会导致失败)
这个办法最简单,建议先尝试这个解决方法

7.3.2网络报错 解决方法二:更改host文件

打开新终端,输入命令

sudo gedit /etc/hosts

打开host文件后,在文件的最末尾添加IPAdress查询到的地址:
网址:https://www.ipaddress.com

199.232.68.133 raw.githubusercontent.com

在这里插入图片描述
操作如图:
在这里插入图片描述
保存退出后重新

sudo rosdep init

或者

rosdep update
7.3.3网络报错 解决方法三:添加google域名服务器

增加dns服务器:

sudo gedit /etc/resolv.conf

将原有的nameserver这一行注释,并添加以下两行:

nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

重新执行

rosdep update

如果以上三个方法都多次尝试无果,那就只能说明,今日网络不好。。。。(今日运势不佳hhh)

7.3.4网络报错 解决方法四:响应时间加长(不推荐):

更改 /usr/lib/python2.7/dist-packages/rosdep2/下的三个文件sources_list.py、gbpdistro_support.py、rep3.py
中的DOWNLOAD_TIMEOUT = 15.0值,改大一点就可以了。
即使曾长了网络等待时常,这个方法又繁琐还经常连不上(不管等多久,网站就是不响应)

7.3.5网络报错 解决方法五:修改ros的一系列脚本(最有效、最繁琐的方法)

网站https://ghproxy.com/支持github的资源代理
非常好用,我们将用此代理加速rosdep对Github的访问,进而解决rosdep update失败问题。
我们要做的,是在rosdep的若干个脚本文件中,把 https://ghproxy.com/ 添加到相应URL前面即可。
1)修改rosdep下载资源的脚本文件:/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py,把以下行添加到脚本中的download_rosdep_data()函数中,以应用代理服务:

url="https://ghproxy.com/"+url

2)用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/init.py里面的DEFAULT_INDEX_URL参数(68行),如下:

DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

3)以下4个文件中也使用了“raw.githubusercontent.com”网址,同样的方法把“https://ghproxy.com/”添加到网址前:

/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py	39行
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68行 119行

4)在 /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码:
gbpdistro_url = “https://ghproxy.com/” + gbpdistro_url

全部完成!!!!
这里建议每修改一个.py就尝试一下rosdep update
因为我们不是所有的文件都连接不到,而是个别的,这样能减少工作量
(我这次修改前三个文件就成功rosdep update了)

成功结果如图:
在这里插入图片描述

8. ROS安装——设置环境变量

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

此处两个注意事项:1.一个命令一行,如果执行错误了自己去删除对应文件里面的那一行,echo命令含义请见前文或百度
2.注意与安装版本的对应source /opt/ros/melodic/setup.bash ,加错了自行找文件修改添加的一行

9. 安装其他工具

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
中间确认窗口y回车

10. 运行海龟仿真器(检测是否成功安装)

打开第一个终端窗口
roscore
打开第二个终端窗口
rosrun turtlesim turtlesim_node
打开第三个终端窗口
rosrun turtlesim turtle_teleop_key

成功如图
在这里插入图片描述

运行以后选中teleop_key 的那个窗口可以使用键盘方向键控制小海龟运动 退出前使用ctrl+c中断再退出

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值