树莓派3B+UbuntuMate18.04安装ROS

最近一直在配置树莓派的各种环境,今天了解到可以搭载ROS然后控制摄像头,激光雷达等,就开始了疯狂踩坑,记录问题及解决办法如下。

配置:树莓派3B+,UbuntuMATE18.04
先附上官网教程,这次吃了上次配opencv乱看教程的教训,一开始直接参照官网教程配置,不过还是开门难,直接卡死。

  • 首先在官网内根据自己的操作系统及版本选择安装ros的版本,因为我的是ubuntu mate18.04LTS,也就是bionic,可以通过lsb_release -a查看,若是提示lsb不可用,就sudo apt-get install lsb安装。根据官网信息,应安装ros Melodic,并且树莓派是aarch64架构,算是arm64,也支持。
  • 第一步:配置你的软件源使其支持"restricted," “universe,” and “multiverse.”
    意思就是软件源的最后不仅要有main,还要有上述三个,贴上我当时的sources.list:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse

按照以往配置虚拟机,wsl的经验,我之前配置树莓派Ububtu的时候一开始就换了源,把源文件里的/ports.ubuntu.com全部换成了/mirrors.ustc.edu.cn,所以当时我的源列表就是这个样子的。(但是这样子会有坑)

  • 第二步:继续设置sources.list,添加下载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.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
    • 设置密钥sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
    • 若过程中出现签名不能被认证,请参考
    • 之后sudo apt-get update
    • 好的,在这一步又报错了,update报错,报的错误是好几个无法下载,镜像站的/binnary-arm64/……无法下载,not found,经过一番查资料,了解到是这个样子的:
      • 通过dpkg --print-architectures打印架构信息,我的树莓派出现了两个,一个是i386,一个是arm64
      • 根据网上的经验,既然报错是找不到arm64,我就把架构里的arm64删了,sudo dpkg --remove-architecture arm64,再次运行update,
        好的,没报错,但这有个问题,我的树莓派就是arm64v8啊,为什么要删掉arm64呢。
    • 如果在update这里报的是amd64,i386的错误,解决办法参见
  • 第三步:安装ros,根据自己的需求选择不同的版本。
    • 桌面完整安装:ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知
    • sudo apt-get install ros-melodic-desktop-full
    • 桌面安装:ROS,rqt,rviz和机器人通用库
    • sudo apt-get install ros-melodic-desktop
    • ROS基础:ROS包,构建和通信库,没有GUI工具
    • sudo apt-get install ros-melodic-ros-base
    • 特定包:sudo apt-get install ros-melodic-PACKAGE(详情见官网)
    • ok,报错,这里如果只是缺少依赖的话,参见上面那篇博客,安装aptitude,然后用aptitude替换apt-get
    • 走到这一步,如果你的架构是amd64、i386、x86的话,其实已经成功了,但树莓派用户是aarch64,这一步出现了更多的错误,首先是一堆依赖无法安装、不能安装,然后aptitude给出的解决方案是不安装,好了,如果到了这一步请直接看下面的解决办法。
    • 把软件源换成最初的源,也就是把//ports.ubuntu.com换回去,然后update,upgrade,重新apt-get install就可以了,当然,记得要通过dpkg --add(remove,print)-architecture 把自己的架构改回arm64,注意,这里不能改成aarch64,操作参见
    • 原因其实在架构上,树莓派的架构是aarch64,算arm64,但国内的镜像源现在基本都不更新基于arm64的包,可以进阿里云等的镜像站找一番,可以找的binanry-amd64也可以找到binary-i386,但是找不到binary-arm64,所以这时候得换回最初的软件源去更新安装才可行。
    • 那么追根溯源一下,为什么我的architecture下会出现i386呢,原因应该是前几天交叉编译opencv的时候一开始选错了交叉编译工具,最后生成的是32位文件,放到树莓派上不能运行,当时就查教程怎么让64位系统兼容32位系统,应该就是那会儿把i386搞进architecture里去了。
  • 第四步:初始化rosdep
    • 在使用ROS之前,应该初始化rosdep,它可以让你在编译源码的时候更方便的安装系统的依赖项,而且它也是需要的对于ROS中的核心部件。
    • sudo rosdep init
    • rosdep update
    • 如果在这里报错,网站拒绝连接,应该是证书或者网的问题,解决办法参见
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值