树莓派3B+踩坑记录:二、安装ROS Melodic

前言

关于ROS的安装,网上大大小小已经有很多的教程了,虽然大部分都是PC上Ubuntu内ROS的安装,但是总体来说arm版本的Ubuntu Mate上ROS的安装也是完全类似的。我这里写的内容仅是把自己踩过的坑以及总结的方法和经验归纳一下,方便以后自己回顾用,当然,如果能给大家有所帮助自然是最好不过~

ROS的在Ubuntu Mate上的安装

首先我们用ssh远程连接树莓派(关于树莓派3B+上如何开启远程ssh可以参考我的上一篇博文),如果有显示屏的同学也可以直接在树莓派上面进行操作。

也可以直接参照Wiki官网给出的安装教程:Ubuntu install of ROS Melodic

以下是我的安装过程以及踩坑实录:

1. 添加软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

上面是ROS Wiki上给出的官方软件源,当然也可以用国内的镜像源,这样下载速度上可能会快一点

易科实验室的源

sudo sh -c '. /etc/lsb-release && echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

科大源

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

以上选一个即可

2. 配置密钥

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

3. 更新软件源

sudo apt-get update

4. 下载安装ROS

树莓派官网给出了3种安装方式 Desktop-Full Install,Desktop Install和ROS-Base。

由于树莓派自身性能有限,而且一般我们都是将树莓派安装在机器人上,然后通过PC的ROS直接发布消息给树莓派上的ROS达到控制机器人的目的,所以我们只需要安装最后一种ROS-Base即可。

sudo apt install ros-melodic-ros-base

5. 安装rosdep工具

这一步坑比较多,基本上大部分人都是倒在了这一步,反正我为了在Ubuntu Mate上安装ROS花了将近一星期,其中大部分时间都是在跟这玩意作斗争,基本该踩的坑我都踩了。。。

按照官网的说法,这步只需执行2步命令即可

sudo rosdep init
rosdep update

然而就是这两步,难于上青天。接下来是我个人的踩坑爬坑经验,请各位大神和能在Raspberry Pi上科学上网的同志移步。

(1)sudo rosdep init 报错解决方案

首先是“sudo rosdep init”这条命令,基本上,网不好的同志会有如下反馈

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.

网上给出的解决方法大致如下:

① 证书问题
需要重新安装认证证书,执行

sudo apt-get install ca-certificates

如果执行完这步能够成功运行,那么我恭喜你,但是,极大几率你得到的会是证书已经安装无需更新的反馈。

② ssl certs

sudo c_rehash /etc/ssl/certs 
sudo -E rosdep init

如果还是不行,没事,我们还有后手,下一步绝对行

③ 直接建立文件

科学上网,我们直接登录这个“https://raw.githubusercontent.com/ros/rosdistro/master/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

因此实际上“sudo rosdep init”的过程就是从这个网址获取到“20-default.list”文件及里面的内容。但是当我们连不上这个网址的时候,我们就自己新建一个这个文件,然后把网址的内容拷贝进去。过程如下

sudo mkdir -p /etc/ros/rosdep/sources.list.d
sudo vim /etc/ros/rosdep/sources.list.d/20-default.list

然后把上面的内容拷贝进去,然后保存即可。这个过程可能会显示权限不足等,可以进入root用户进行操作。

当然,吃鱼不忘养鱼人,以上方法,我参考的博文如下,希望大家多多支持原博主~
参考1:sudo rosdep init ERROR: cannot download default sources list from:
参考2:安装ROS:sudo rosdep init报错,ERROR: cannot download default sources list from:

(2)rosdep update 报错解决方案

前面的只是小问题,真正的麻烦在这里,因为这一步就是玄学,完全看脸的过程(非洲人哭了。。。),不过,我们依然有办法能够帮助我们更好地执行这一步。

当我们配置完“20-default.list”这个文件之后,不需要执行“sudo rosdep init”,我们先直接使用“rosdep update”,大概率你会得到

ERROR: unable to process source “XXXXXXX”

或者

ERROR: error loading sources list:
The read operation timed out

以下是一些我踩坑时爬坑用过方法,在使用这些方法之前,先确保你处于一个信号良好的地方。

① 更改内容 20-default.list 内容

这种方法同样来自上面的博文,就是把“20-default.list”内部的内容替换,替换内容如下:

# os-specific listings first
yaml https://raw.github.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.github.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.github.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

原文博主是成功了,但是我还是没成功,依旧是满屏的ERROR

② 更换源

更换Ubuntu Mate的源:Ubuntu–更换软件源
更换ROS的源:移步本文“1.添加软件源”

更换完成之后,执行

sudo apt-get update
rosdep update

③ 修改域名服务器

sudo vim /etc/resolv.conf

nameserver改为

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

然后继续执行“rosdep update”

④ 安装python-rosdep

执行以下命令

sudo apt-get update
sudo apt-get install python-rosdep

rosdep update

反正都安不上,多试试也不会咋样。。。

④ 增加TIMEOUT时间

首先cd到/usr/lib/python2.7/dist-packages/rosdep2/目录

cd /usr/lib/python2.7/dist-packages/rosdep2/

然后找到 sources_list.py、gbpdistro_support.py、rep3.py 这三个文件,把这三个文件内的 “DOWNLOAD_TIMEOUT = 15.0” 的值改得大一点,记住三个文件都要改。

如果文件只有只读权限,执行

sudo chmod 777 sources_list.py
sudo chmod 777 gbpdistro_support.py
sudo chmod 777 rep3.py

这个方法经测试是很有效的,毕竟改完之后满屏ERROR的我也能有一两个Hit了呢(╮(╯▽╰)╭)

⑤ 连接手机热点

确保自己处于一个信号比较好的地方,然后树莓派连接手机热点,基本上多试几次就成了。配合修改TIMEOUT时间,效果不要太好。

关于树莓派怎么连接热点,移步我的上一篇文章。

⑥ 其他非常规解决方案

这边知乎大神给出了另一种非常规的解决方案,大家也可以尝试一下,这是链接:sudo rosdep init出错的解决方案

最后附上成功截图,花了我几天时间,我家客厅信号还不好,本来想着连连电视就好了,无奈还另买了块显示屏找了个信号好一点的地方搞,真的是血与泪啊。。。
在这里插入图片描述
完成这步之后,后面就基本上没啥问题啦~

6.设置环境变量

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

7.安装其他工作包

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

安装完成之后,运行一下roscore命令,当出现以下界面时就说明安装成功啦!
在这里插入图片描述
可能有部分小伙伴想运行一下turtlesim功能包测试一下ROS,但是得到的结果大概是“找不到该功能包”,毕竟我们装的是ROS-Base版的,当然,你也可以通过下面的命令进行安装

sudo apt-get install ros-melodic-turtlesim

安装完成后执行

rosrun turtlesim turtlesim_node

就可以看见我们的小龟啦~
在这里插入图片描述

写在最后

以上就是我在ROS安装踩坑过程中采用的所有解决方法,希望能给大家一些帮助,如果有问题直接在下面给我留言,我看到了会回复的。如果有错误也希望能够指出~

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 树莓是一种小型的单板电脑,可以作为计算机的核心部件用来控制其他硬件设备。树莓3B是树莓系列中的一款,性能较好,适合用来进行一些较复杂的任务。 Arduino是一种开源硬件平台,它采用了简单易学的编程语言,并配备了丰富的电子模块,可以用来制作各种互动项目。 ROS是机器人操作系统(Robot Operating System)的简称,它是一个开源的软件框架,为机器人的软件开发提供了基础工具和功能库。 结合树莓、Arduino和ROS,我们可以构建一个功能强大、灵活多样的机器人系统。首先,我们可以使用树莓作为主控制单元,运行ROS系统,完成机器人的导航、感知等任务。同时,我们可以连接Arduino与树莓,使用Arduino控制各种传感器和执行器,实现机器人的感知和运动。树莓作为主控制器可以接收Arduino传感器数据,并进行处理和决策,并通过ROS系统与外部进行通信。 在使用树莓3B和Arduino进行ROS教程的学习时,可以先了解树莓和Arduino的基本使用方法,并对它们之间的通信方式有所了解。然后,可以参考ROS官方提供的教程,学习如何在树莓安装ROS系统,并使用ROS提供的工具和库对机器人进行编程和控制。 总之,树莓3B、Arduino和ROS的结合可以为我们提供一个强大的机器人开发平台,通过学习相关教程和实践,我们可以灵活运用这些工具来开发各种有趣的机器人项目。 ### 回答2: 树莓、Arduino和ROS是现今最流行的嵌入式系统开发平台之一。树莓是一款基于Linux的单板电脑,具备强大的计算能力和丰富的扩展性,常被用于构建物联网应用、机器人控制等项目。Arduino是一款开源的硬件平台,通过编程实现各种传感器、执行器和外围设备的控制。ROS(Robotic Operating System)是一种用于机器人开发的开源中间件,提供了丰富的库和工具,方便开发者进行机器人应用程序的编写。 将这三者结合使用可以实现更加复杂和功能强大的嵌入式系统开发。如果你想学习树莓、Arduino和ROS的教程,以下是一些概述: 首先,你需要学习树莓的基础知识,包括如何搭建和设置系统、使用Linux命令行等。树莓基金会提供了丰富的教程和文档,你可以从官方网站获取到相关的资源。 其次,你需要了解如何使用Arduino进行硬件控制。你可以学习Arduino的编程语言,掌握基本的电路连接和编程技巧。Arduino的官方网站和各种在线教程提供了大量的学习资料,你可以根据自己的需求选择合适的教程。 最后,你可以学习如何使用ROS来开发机器人应用程序。ROS提供了一套强大的工具和库,包括传感器数据处理、运动控制、导航规划等功能。你可以通过学习ROS文档和参考书籍,了解其架构和使用方法。同时,也可以参考ROS的官方教程和其他开发者分享的资源。 总之,树莓、Arduino和ROS的结合使用可以实现各种有趣和实用的嵌入式系统开发。通过学习相关教程和实践,你可以逐步掌握它们的使用方法,并在实际项目中运用所学知识。 ### 回答3: 树莓3B、Arduino和ROS分别代表了三个不同的开源硬件和软件平台。树莓3B是一款基于Linux系统的单板计算机,具有较强的计算能力和丰富的接口,可以用来构建各种嵌入式系统和物联网设备。Arduino是一款简易的开源电子原型平台,可以用来快速搭建各种电子设备和交互设备,如传感器、机器人和智能家居等。ROS(机器人操作系统)是一个用于构建机器人应用软件的框架,提供了一系列的软件库、工具和通信机制,方便开发者进行机器人相关应用的开发和调试。 在将树莓3B与Arduino和ROS结合使用时,可以利用树莓作为主控制器,通过GPIO接口控制和读取Arduino上的各种外设和传感器,并通过ROS与其他设备进行通信和数据交互。这样的结合可以为机器人、智能家居和物联网等项目提供强大的计算资源和灵活的控制能力,实现更加复杂和智能的功能。 对于初学者,学习树莓3B、Arduino和ROS的教程是很重要的。关于树莓3B的教程,可以学习如何安装操作系统、配置网络和使用Python编程语言等;对于Arduino的教程,可以学习如何使用Arduino IDE进行编程,控制各种传感器和执行器;而在学习ROS的教程中,需要了解ROS的基本概念、节点、主题、服务和参数等,以及如何使用ROS控制树莓和Arduino进行数据交互和控制。 同时,还可以通过网络上的教程和资源,了解如何将树莓3B、Arduino和ROS进行整合,例如使用ROS的Arduino库(rosserial_arduino)来实现树莓与Arduino的通信,借助ROS的功能和生态系统,为树莓3B和Arduino提供更多可扩展性和灵活性。 总之,掌握树莓3B、Arduino和ROS的教程,能够提供给开发者强大的开发工具和平台,为他们创造各种创新和应用机会。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值