树莓派4B安装 Ubuntu20.04 + ROS Noetic 踩坑记录

2023-05-16

写在开头

本文记录了给一台树莓派4B配置ROS开发环境的全部操作过程,和在实际操作过程中遇到的各种问题的解决方法,希望对有相同需求的小伙伴们有帮助。

本文的目标是直接在树莓派上开发ROS,因而在安装时与目标相关的力求“装全套”;如果仅需使用树莓派作为机器人中控设备而安装ROS,请参考这篇文章。

1. 准备工作

下表中列出了本文中使用到的所有硬件和软件。

名称备注
硬件树莓派4B8G RAM版本
SD卡 容量128G至少需要32G
显示器,键盘,鼠标

(有些无线鼠标会出现延迟问题,解决方法后面会讲)

网线(可选)
软件官方烧写软件

下载:Raspberry Pi Imager

Ubuntu 系统镜像文件

下载:Ubuntu Server 20.04.03 LTS 64-bit

(注意要选对版本)

SD卡格式化软件(可选)

SD Card Formatter

(移动到页面最底部,点击 Accept 即可下载)

2. 安装思路

ROS目前的最新发行版为ROS Noetic,与其对应的系统则为Ubuntu 20 LTS,因此本次的安装思路非常明确:先安装Ubuntu 20.04 LTS,随后配置网络,更新,安装GNOME图形桌面,最后安装ROS。

3. Ubuntu的安装

3.1 格式化SD卡

如图1,打开SD卡格式化软件,选择“Quick format” -> 然后点击"Format"即可。

 图1

3.2 将Ubuntu系统烧写到SD卡中

首先,如图1,打开Ubuntu官网的下载页面,下载正确的系统版本,选择:“Install Ubuntu on a Raspberry Pi”  -> “Download Ubuntu Server” -> "Ubuntu Server 20.04.3 LTS" -> "Download 64-bit"。如图2,左侧黄线标记处为正确的版本。

图2

下载完毕后,打开树莓派官方提供的烧录器,点击:“选择操作系统” -> “使用自定义镜像” -> 选择刚刚下载好的镜像文件;然后点击 "选择SD卡" -> 选择刚刚格式化过的SD卡;最后点击“烧录”,等待烧写完毕即可拔出SD卡。

 图3

3.3 启动树莓派,设置密码

将烧录好的SD卡直接插入树莓派的卡槽中,然后插上鼠标、键盘、显示器,最后插上电源,等待系统自己启动。

初次登陆,默认的用户名和密码都是ubuntu,首次成功登录后,系统会提示用户修改密码。修改完成后,输入以下命令,设置root密码。

sudo passwd

3.4 配置网络

接下来需要手动配置网络。

输入以下命令,打开网络配置文件,直接从结尾处添加个人wifi的配置信息,如图4。

sudo vim /etc/netplan/50-cloud-init.yaml

 图4

此处简略说明vim的操作:

        - 打开文件后,按“i”键,进入insert模式,然后可以通过方向键移动光标;

        - 编辑完成后,先按下Esc键,退出insert模式,然后输入“:wq”,再按Enter键,即可保存退出;

        - 未编辑时直接退出要输入“:q”,不保存修改强制退出要输入":q!"

在输入时,该yaml文件的格式需要特别注意:

        - 不同层级间的缩进不同,相同层级的缩进要保持相同;

        - 冒号如果不在行尾,则需要和后面的内容用空格隔开;

        - 如果wifi名称存在空格,则必须加上双引号;但如果不存在空格,则不能加引号

        - 密码无论如何都要加上双引号

编辑完成后,保存退出,然后输入以下命令检查是否有错误。

sudo netplan --debug try

如果出现任何错误,可以使用以下命令查看具体信息。

sudo netplan --debug generate

如果没有错误,则输入以下命令确认应用新配置。

sudo netplan --debug apply

然后,重启树莓派

sudo reboot

3.5 更新,安装GNOME图形桌面

重启后,系统会自动连上网,如果联网失败,则需重复3.3步骤,检查配置是否正确。

如果一切正常,便可以输入以下命令,将所有安装的依赖库都更新到最新版本。

sudo apt update
sudo apt upgrade

初次更新,该过程会持续较长时间。更新完成后,即可输入以下命令安装GNOME图形界面。

sudo apt install ubuntu-desktop -y

该过程也会持续一段时间,安装结束后,再次重启树莓派。

sudo reboot

重启后,系统便会自动加载图形界面,用户只需输入密码进行登录即可。

进入桌面后,用户可以在屏幕的右上角找到“Settings”按钮,如图5,然后找到左侧栏目的最后一项“About”,查看系统版本等信息,如图6。

 图5

图6

3.6 解决一些小问题

在安装完图形界面后,笔者还遇到了下列问题,此处一并记录之。

3.6.1 鼠标延迟问题

笔者使用的是无线鼠标,不论将鼠标插在树莓派上的哪个USB接口上都存在1秒左右的延迟。要解决该问题,需要修改如下的配置文件:

sudo vim /boot/firmware/cmdline.txt

如图7所示,在第一行的末尾添加上

usbhid.mousepoll=0

 图7

保存文件后重启,鼠标延迟就会消失。

3.6.2 搜索不到无线网络列表,但实际上已连接网络

由于之前手动配置了文件,此时桌面右上角的WIFI图标显示找不到任何wifi信号,要解决此问题,需要在“/etc/netplan”目录下创建一个新文件:

sudo vim /etc/netplan/01-network-manager-all.yaml

然后输入如下内容:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

保存退出后,重启网络管理服务:

sudo service network-manager restart

 再重启一下树莓派,即可解决此问题。

3.6.3 找不到软件中心

不知为何,在完成上述操作后,笔者发现在系统里竟然找不到Ubuntu的软件中心。不过没关系,输入以下命令安装一下即可。

sudo apt install gnome-software

3.7 语言问题

关于系统语言,笔者强烈建议保持Ubuntu默认的英文环境,这样可以避免很多潜在的问题,比如路径无法识别之类的错误。当然,安装中文输入法还是可以的,详见这篇文章。

至此,Ubuntu系统安装完成!

4. 安装ROS

4.1 更换软件源

在下载ROS时,如果身处国内,可能会因为网络问题导致下载失败。如果出现这种情况,则需要更换软件源,具体做法请参考这篇文章。笔者由于暂居国外,没有这方面的需要,此处不再赘述。

4.2 Ubuntu软件和更新的设置

如图8所示,打开Ubuntu的"Software and Update",勾选前四项。

图8

4.2 按照官方教程安装ROS

如果前面一切都配置无误的话,安装ROS还是很简单的,直接按照官方教程操作即可。除此以外还有古月居的ROS安装教程,解释得很详细,此处仅罗列出所有的命令,小伙伴们按部就班地操作即可。

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

# 如果没有安装curl
sudo apt install curl

# 设置密钥
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

# 更新软件源
sudo apt update

# 安装ros
sudo apt install ros-noetic-desktop-full

# 设置环境变量 
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

# 运行该脚本,让环境变量生效
source ~/.bashrc

# 安装开发ROS必要的package
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

# 初始化
sudo rosdep init
rosdep update

完成上述操作后,可输入以下命令验证ROS是否已安装成功:

roscore

 如果命令行界面如图9所示,说明安装成功。此时可以按“Ctrl+C”退出。

 图9

至此,ROS安装完成!

5. ROS学习资源网站

文章最后,笔者罗列了一些对学习ROS有帮助的网上资源,前路漫漫,愿与诸君共勉!

网址备注
ROS官网ROS WikiROS学习必看
古月居主页古月居 - ROS机器人知识分享社区很好ROS学习网站
古月居ROS入门21讲【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩对初学者很友好
官方推荐书籍ROS_Robot_Programming_English

点击下载链接,提供中文版免费下载!

其它推荐书籍Books - ROS Wiki
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派4B安装 Ubuntu20.04 + ROS Noetic 踩坑记录 的相关文章

  • ROS之QtCreator开发环境搭建

    文章目录 系统环境 官方教程 安装 卸载 使用 导入工作空间 构建与运行 编写测试程序 系统环境 操作系统 Ubuntu20 04 ROS版本 Noetic 官方教程 按照官方教程或者下面笔记中的内容均能进行环境搭建 笔记中另外做了部分补充
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • 无人飞行器智能感知竞赛--模拟器安装

    开发环境 win11 wsl2 注意事项 请配合视频使用 如果不看视频会对下面的配置过程迷惑 因为一开始我是想安装在ubuntu18 04的 中途发现ubuntu18 04没有ros noetic 所以转入ubuntu20 04配置 视频链
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建

    ROS 官网 https www ros org ROS 中文官网 http wiki ros org cn 1 系统和 ROS 版本 不同的 ROS 版本所需的 ubuntu 版本不同 每一版 ROS 都有其对应版本的 Ubuntu 切记
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • 程序“catkin_init_workspace”尚未安装。 您可以使用以下命令安装: sudo apt install catkin

    程序 catkin init workspace 尚未安装 您可以使用以下命令安装 sudo apt install catkin 问题如图 先贴上解决后的效果 运行环境 ubuntu 16 04 ros版本 kinetic 问题解释 这个
  • 《学习篇》学会这18个常用ROS命令集合就能入门ROS了

    常用ROS命令概述 ROS常用命令可以按照其使用场景分为ROSshell命令 ROS执行命令 ROS信息命令 ROS catkin命令与ROS功能包命令 虽然很难从一开始就很熟练地使用所有的命令 但是随着使用的次数增多 你会发现常用的几个R
  • 可视化点云

    我在找到的视差图像上有来自 gpu reprojectImageTo3D 的 3D 点 我现在想显示这个点云 如何将找到的点云转换为OpenCV to sensor msgs PointCloud2 我不需要发布点云 这仅用于调试可视化 是
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 在 Python 3 中导入 Rosbag

    我正在尝试从 Python 3 读取 rosbag 文件 我安装了 ROS2 Eloquent Elusor 它应该支持 Python 3 当我跑步时 import rosbag bag rosbag Bag test bag 从Pytho
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • ROS 从 python 节点发布数组

    我是 ros python 的新手 我正在尝试从 python ros 节点发布一个一维数组 我使用 Int32MultiArray 但我无法理解多数组中布局的概念 谁能给我解释一下吗 或者还有其他方式发布数组吗 Thanks usr bi
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息

随机推荐

  • Rman备份中常见的问题

    1 xff1a ORA 01031insufficient privileges gpasswd d oracle dba 将oracle移除出dba组 查看oracle属性 uid 61 500 oracle gid 61 500 oin
  • 弱监督学习-snorkel

    1 什么是弱监督学习 弱监督问题旨在研究通过较弱的监督信号来构建预测模型 xff0c 即在少量的标注样本上学习建模 xff0c 达到大量样本上同样的效果 弱监督学习主要分为三类 不确切监督 xff08 inexact supervision
  • 如何用3000元搞定一年100M点对点专线

    温馨提示 xff1a 阅读本文需要先阅读或温习格物资讯早先发布过的 奇葩物花生壳出品蒲公英VPN组网路由 2015年11月格物资讯发布了花生壳打洞路由器蒲公英的试用报告 xff0c 提到在鹏博士接入前提下 xff0c 做P2P组网实现快速的
  • PNETLAB中可以导入的交换机、防火墙等设备镜像

    在网上找了很久 xff0c 想要找到一个设备镜像的下载 xff0c 发现网上全都是一些对于PNET本体安装的炒冷饭 不过经过一个下午的寻找 xff0c 最终在B站一个UP 64 real半吊子工程师 22年的视频里找到了相关的下载平台连接
  • 在Keras中,TimeDistributed层的作用是什么?

    在Keras中 xff0c TimeDistributed层的作用是什么 xff1f 关键词 xff1a python xff0c machine learning xff0c keras xff0c neural network xff0
  • 理解1D、2D、3D卷积神经网络的概念

    目录 引言二维CNN Conv2D一维CNN Conv1D三维CNN Conv3D总结 引言 当我们说卷积神经网络 xff08 CNN xff09 时 xff0c 通常是指用于图像分类的二维CNN 但是 xff0c 现实世界中还使用了其他两
  • 解决vncserver看不到桌面的问题

    解决vncserver看不到桌面的问题 主要参考这里 xff1a http zhidao baidu com link url 61 7Btj0KsV5b986dydoOpElKDpSwriaruP4jxWY6f6pG3Ota kcQbdV
  • 深入理解 keras 中 Dense 层参数

    目录 引言深入理解 Dense 层的用法查看参数输入尺寸输出尺寸示例 xff1a 用法完整示例示例一 最小网络示例二 xff1a 多维度数据示例三 xff1a 特殊情况 xff0c 待讨论 附录 引言 大家或许已经对深度学习不陌生了 不管是
  • 如何在Keras中使用数据生成器(data generators)的详细示例

    目录 动机讲解以前的情况小提示数据产生器Keras脚本 可运行实例结论 动机 您是否曾经不得不加载一个非常消耗内存的数据集 xff0c 以至于希望魔术能够无缝地解决这一问题 xff1f 大型数据集正日益成为我们生活的一部分 xff0c 因为
  • 绘制 x+y+z=1 图像

    简单手动推导 matlab 绘制 figure fimplicit3 64 x y z abs x 43 abs y 43 abs z 4 figure fimplicit3 64 x y z x 43 y 43 z 1 ref How d
  • yolov5 test.py val.py detec.py 区别在哪里呢?

    yolov5 test py val py detec py 区别在哪里呢 用户在训练数据的时候必须使用 train py 来进行 数据训练和验证 xff0c 但我很难理解 detect py 和 test py 之间的区别 应该在一个数据
  • window、wsl2

    主要涉及到的点包括 xff1a window 11 下 wsl2 的安装 xff1b 在WSL上使用NVIDIA SDK manager给Jetson烧录系统 xff1b 加载 USB 设备 xff1b ref xff1a https de
  • Jetson基础知识

    Jetson基础知识 在网上安装软件 看到到处都在讲 Jetson 的版本 看到很多名词也不是很懂 特别是那些缩写 本文就是根据查找到的资料进行统一的解释说明 L4T L4T 代表 Linux for Tegra 这是一个专门为NVIDIA
  • Ubuntu桌面

    Ubuntu桌面 1 桌面系统 安装桌面的时候 xff0c Ubuntu18系统默认用的时候 gnome 桌面 但是有两种类型 xff1a ubuntu desktop 和 ubuntu gnome desktop ubuntu deskt
  • 常用各类数据集

    原文链接 xff1a http homepages inf ed ac uk rbf CVonline Imagedbase htm CVonline xff1a 图像数据库 Google直译的结果 xff0c 希望对大家有帮助 按主题索引
  • vnc无画面的解决方法

    网上看到了很多vnc配置文件 xff0c 例如安装xfce后 xff0c 只需要几行代码 xff0c 就可以正常显示画面 而自己实际操作的时候 xff0c 发现怎么弄都是白屏 xff0c 没有窗口 xff0c 非常困惑 经过了一段时间的折腾
  • 打造基于 VNC 的 Ubuntu 20.04 的远程桌面

    VNC server B站视频 打造基于 VNC 的Ubuntu 20 04远程桌面 https www bilibili com video BV1nV41147dt spm id from 61 333 999 0 0 1 安装 VNC
  • “Top-down”---至顶向下的设计方法

    Top down 至顶向下的设计方法 曾经看到有人说 xff0c 人活着的过程就是在不断地解决问题的过程 我觉得这句话很有道理 xff0c 从年幼时的牙牙学语 xff0c 到学习阶段的各种作业 xff0c 当然还有各种编程难题 xff0c
  • linux与其他操作系统文件共享方法

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 原创 xff0c 转载前请与我沟通 前言 xff1a 我将Linux文件共享的方法分为以下几类 xff1a 1 x
  • 树莓派4B安装 Ubuntu20.04 + ROS Noetic 踩坑记录

    写在开头 本文记录了给一台树莓派4B配置ROS开发环境的全部操作过程 xff0c 和在实际操作过程中遇到的各种问题的解决方法 xff0c 希望对有相同需求的小伙伴们有帮助 本文的目标是直接在树莓派上开发ROS xff0c 因而在安装时与目标