树莓派4B安装Ubuntu18.04 ROS Melodic及初始化rosdep报错解决

一、安装Ubuntu18.04

  1. 安装Raspberry Pi Imager
    链接:https://www.raspberrypi.com/software/

  2. 下载镜像
    下载ubuntu-18.04.5-preinstalled-server-arm64+raspi4.img.xz
    链接:http://cdimage.ubuntu.com/releases/18.04/release/
    PS:在这里我安装的是Ubuntu18的服务器版本,也可以根据自己的需求选择其他镜像。

  3. 烧录
    1.选择操作系统,使用自定义镜像
    2.选择存储卡
    3.设置主机名,开启SSH服务,设置用户名密码,配置WiFi
    4.烧录

二、安装ROS

  1. SSH远程连接树莓派
    后面的步骤需要在树莓派终端中进行,如果有显示器,可以直接连键鼠
    因为前面配置了WiFi,可以在路由器DHCP服务器中找到树莓派的IP,然后在PC终端通过SSH远程连接树莓派。

    ssh username@ip
    
  2. 添加 ROS 软件源
    官方默认安装源:

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

    清华安装源:

    sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` 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'
    
  3. 添加密钥

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

    更新apt

    sudo apt update
    

    安装ROS

    sudo apt install ros-melodic-desktop-full
    
  5. 配置环境变量

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

    使环境变量的配置生效

    source ~/.bashrc
    
  6. 安装构建ROS包的依赖

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
    
  7. 初始化rosdep
    安装:

    sudo apt install python-rosdep
    

    初始化:

    sudo rosdep init
    
    rosdep update
    
  8. 测试

    roscore
    

遇到问题及解决方案

1. 安装ROS报错

问题:

由于网络原因,导致连接超时,可能会安装失败

解决:

可以多次重复调用更新apt安装ROS命令,直至成功
更新apt

sudo apt update

安装ROS

sudo apt install ros-melodic-desktop-full

2. 初始化rosdep报错

问题:

执行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.

这一步是对rosdep初始化,在初始化的过程中需要访问GitHub

解决:

方法一:使用 https://ghproxy.com/ 代理 GitHub 的资源

/usr/lib/python2.7/dist-packages文件夹下修改相关文件:

  • ./rosdep2/sources_list.py
  • ./rosdep2/gbpdistro_support.py
  • ./rosdep2/rep3.py
  • ./rosdistro/__init__.py
  • ./rosdistro/manifest_provider/github.py

具体步骤如下:

  1. /usr/lib/python2.7/dist-packages/rosdep2文件夹下修改文件

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

    修改sources_list.py

    sudo vim ./sources_list.py
    

    在311行添加如下代码:

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

    将72行代码修改成如下代码(添加https://ghproxy.com/前缀):

    DEFAULT_SOURCES_LIST_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
    

    继续修改下一文件gbpdistro_support.py

    sudo vim ./gbpdistro_support.py
    

    将36行代码修改成如下代码(添加https://ghproxy.com/前缀):

    FUERTE_GBPDISTRO_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/' \
    

    在204行添加如下代码:

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

    继续修改下一文件rep3.py

    sudo vim ./rep3.py
    

    将39行代码修改成如下代码(添加https://ghproxy.com/前缀):

    REP3_TARGETS_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
    
  2. /usr/lib/python2.7/dist-packages/rosdistro下修改文件__init__.py

    cd /usr/lib/python2.7/dist-packages/rosdistro
    
    sudo vim ./__init__.py
    

    将68行代码修改成如下代码(添加https://ghproxy.com/前缀):

    DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
    
  3. /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider下修改文件github.py

    cd /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider
    
    sudo vim ./github.py
    

    将119行代码修改成如下代码(添加https://ghproxy.com/前缀):

    url = 'https://ghproxy.com/https://raw.githubusercontent.com/%s/%s/%s' % \
    
  4. 初始化rosdep

    sudo rosdep init
    

    有如下提示说明成功

     Wrote /etc/ros/rosdep/sources.list.d/20-default.list
     Recommended: please run
    
         rosdep update
    

    根据提示执行

    rosdep update
    

方法二:将相关资源备份到 gitee,修改 rosdep 源码,重新定位资源
修改/etc/ros/rosdep/sources.list.d/20-default.list
/usr/lib/python2.7/dist-packages文件夹下修改相关文件:

  • ./rosdep2/sources_list.py
  • ./rosdep2/gbpdistro_support.py
  • ./rosdep2/rep3.py
  • ./rosdistro/__init__.py

具体步骤如下:

  1. 进入sources.list.d文件夹(如果没有,则新建)
    cd /etc/ros/rosdep/sources.list.d
    
    修改20-default.list文件
    sudo vim 20-default.list
    
    将里面的raw.githubusercontent.com/ros/rosdistro/master替换成gitee.com/XHN-1/rosdistro/raw/master
    如果是新建的文件,直接编辑
    修改后:
    # os-specific listings first
    yaml https://gitee.com/XHN-1/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx
    
    # generic
    yaml https://gitee.com/XHN-1/rosdistro/raw/master/rosdep/base.yaml
    yaml https://gitee.com/XHN-1/rosdistro/raw/master/rosdep/python.yaml
    yaml https://gitee.com/XHN-1/rosdistro/raw/master/rosdep/ruby.yaml
    gbpdistro https://gitee.com/XHN-1/rosdistro/raw/master/releases/fuerte.yaml fuerte
    
    # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
    
  2. /usr/lib/python2.7/dist-packages/rosdep2文件夹下修改文件
    cd /usr/lib/python2.7/dist-packages/rosdep2
    
    修改sources_list.py
    sudo vim ./sources_list.py
    
    将72行代码修改成如下代码(把raw.githubusercontent.com/ros/rosdistro/master替换成gitee.com/XHN-1/rosdistro/raw/master):
    DEFAULT_SOURCES_LIST_URL = 'https://gitee.com/XHN-1/rosdistro/raw/master/rosdep/sources.list.d/20-default.list'
    
    继续修改下一文件gbpdistro_support.py
    sudo vim ./gbpdistro_support.py
    
    将36行代码修改成如下代码(把raw.githubusercontent.com/ros/rosdistro替换成gitee.com/XHN-1/rosdistro/raw):
    FUERTE_GBPDISTRO_URL = 'https://gitee.com/XHN-1/rosdistro/raw/' \
    
    继续修改下一文件rep3.py
    sudo vim ./rep3.py
    
    将39行代码修改成如下代码(把raw.githubusercontent.com/ros/rosdistro/master替换成gitee.com/XHN-1/rosdistro/raw/master):
    REP3_TARGETS_URL = 'https://gitee.com/XHN-1/rosdistro/raw/master/releases/targets.yaml'
    
  3. /usr/lib/python2.7/dist-packages/rosdistro下修改文件__init__.py
    cd /usr/lib/python2.7/dist-packages/rosdistro
    
    sudo vim ./__init__.py
    
    将68行代码修改成如下代码(把raw.githubusercontent.com/ros/rosdistro/master替换成gitee.com/XHN-1/rosdistro/raw/master):
    DEFAULT_INDEX_URL = 'https://gitee.com/XHN-1/rosdistro/raw/master/index-v4.yaml'
    
  4. 初始化rosdep
    直接执行
    rosdep update
    
    PS:第一步相当于手动执行了sudo rosdep init

方法三:使用rosdepc

  1. 安装pip
    sudo apt install python-pip
    
  2. 安装rosdepc
    sudo pip install rosdepc
    
  3. 使用rosdepc初始化
    sudo rosdepc init
    
    rosdepc update
    

参考资料:

安装ROS:
http://www.autolabor.com.cn/book/ROSTutorials/
初始化rosdep报错及解决:
方法一:【ROS】Ubuntu18.04下安装ROS-Melodic的步骤及rosdep update报错的解决方案
方法二:ROS rosdep init/update百分百解决
方法三:本文之后,世上再无rosdep更新失败问题!如果有…小鱼就…

<think>嗯,用户想在树莓派4B上安装ROS系统。我需要根据提供的引用资料来整理步骤。首先,引用[1]提到树莓派4B的系统是Buster,但安装ROSKinetic可能比较旧,而引用[4]用的是Ubuntu18.04ROSMelodic。可能用户需要选择适合的系统版本。树莓派官方系统是Raspbian,但ROS支持可能有限。引用[3]提到UbuntuMATE20.04,而引用[4]用了Ubuntu18.04。可能安装ROS Melodic更合适,因为18.04是LTS。需要确认用户是否愿意安装Ubuntu而不是Raspbian。步骤应该包括:1.准备系统,选择Ubuntu18.04或20.04。2.配置软件源,引用[1]用了清华源,可能需要替换默认源。3.安装ROS依赖,如引用[4]中的python-wstool和rosdep4.初始化rosdep,可能会遇到网络问题,需要换国内源。5.安装ROS桌面版或基础版。6.设置环境变量。还需要注意刷写镜像的方法,如引用[3]提到的SD卡工具,以及引用[2]中的dd命令。另外,安装过程中可能遇到的常见问题,比如依赖错误或编译问题,需要提醒用户。 需要检查用户是否有足够的存储空间,是否已经正确烧录系统镜像。可能还需要建议用户使用64位系统,如果兼容的话。最后,生成相关问题,帮助用户进一步了解优化和应用场景。</think>### 如何在树莓派4B上安装ROS系统 #### 一、系统选择与准备 1. **推荐系统**:建议使用 **Ubuntu 18.04 LTS (Bionic Beaver)** 或 **Ubuntu 20.04 LTS (Focal Fossa)**,因为ROSUbuntu的兼容性更好。 - 若选择ROS Melodic,需搭配Ubuntu 18.04[^4];若选择ROS Noetic,则需Ubuntu 20.04。 - 树莓派官方系统Raspbian Buster也可安装ROS Kinetic,但需手动调整依赖库[^1]。 2. **烧录系统镜像**: - 使用工具如 **Win32 Disk Imager** 或 **Raspberry Pi Imager** 将Ubuntu镜像写入SD卡[^3]。 - 格式化SD卡时建议使用 **SD Card Formatter**[^3]。 #### 二、安装ROS核心步骤 1. **配置软件源**: 替换为国内镜像源(如清华源)以加速下载: ```bash sudo sed -i 's@ports.ubuntu.com@mirrors.tuna.tsinghua.edu.cn@' /etc/apt/sources.list ``` 2. **安装ROS依赖**: ```bash sudo apt update sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential ``` 3. **初始化rosdep**: ```bash sudo rosdep init rosdep update ``` - 若因网络问题失败,可替换`rosdep`源为国内镜像[^4]。 4. **安装ROS完整版**(以ROS Melodic为例): ```bash sudo apt install ros-melodic-desktop-full ``` 5. **环境变量配置**: ```bash echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### 三、验证安装 1. **启动ROS核心**: ```bash roscore ``` - 若成功运行,终端会显示`ROS_MASTER_URI`信息。 #### 四、常见问题与优化 1. **依赖冲突**: - 若出现`E: Unable to locate package ros-melodic-desktop-full`,检查软件源是否包含`packages.ros.org`[^1]。 2. **存储空间不足**: - 树莓派4B建议使用至少16GB的SD卡,并清理不必要的软件包。 3. **性能优化**: - 关闭图形界面:`sudo systemctl set-default multi-user.target`。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值