最近用树莓派弄了一个 Ubuntu 20.04 desktop,用来做 ROS 的学习。
硬件:树莓派 4B 8G 版本
书本:《ROS机器人开发实践》和《ROS机器人开发实用案例分析》
目录
树莓派搭建 Ubuntu 20.04 desktop
烧录 Ubuntu 20.04 LTS
安装 Ubuntu 20.04 Server
连接网络
Ubuntu 20.04 desktop 配置
ROS 安装
添加ROS软件源
添加密钥
安装ROS
初始化 rosdep
由于ROS没有正式支持Ubuntu 22.04 的版本,所以为了还是搭建了20.04的桌面来,配套 ROS Noetic来使用。
使用到的工具包括:树莓派主板,SD卡,读卡器。首先把SD卡插入读卡器之后连接电脑。
在树莓派上配置 Ubuntu 20.04的桌面版本时,用到的是树莓派官方的烧录工具 Raspberry Pi Imager,使用的主要原因是官方烧录工具自带各版本的树莓派系统 img,不用再自己下载。官方工具下可以直接在官网上下载,我这里下载的是 Windows 版本,也有对应的 MacOS 或者 Linux 版本。下载后如图:
在 CHOOSE OS这里选择 Other general-purpose OS -> Ubuntu -> Ubuntu Server 20.04.4 LTS (我的是 arm64 architecture):
然后 CHOOSE STORAGE 处选择你的 SD 卡,就可以点击 WRITE 开始烧录。
也可以选择下载 img 文件后使用 balenaEtcher 等烧录。
烧录完成后把SD卡取出,插入 Pi 4 的 SD 卡插口,给树莓派接上显示器 (MicroUSB to HDMI),然后接一个键盘,最后给树莓派插电。然后树莓派开始从SD卡启动,过一段时间后会出现登录界面:
账号和密码都是 ubuntu (密码输入没有任何显示,直接输入完成回车,如果感觉输入错了,多按几次backspace删掉)。
登录成功后会要求你马上修改密码:
这时候先输入 Current password 还是ubuntu,然后输入新密码,确认。就登录成功了
如果你有有线,那么直接把网线接到树莓派网口,就可以跳到下一步了。需要连接无线的可以看这一部分的内容。
首先创建一个 configuration file:
sudo nano /etc/wpa_supplicant.conf
然后输入如下内容:
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
update_config=1
network={
ssid="WIFI名称"
scan_ssid=1
psk="WIFI 密码"
key_mgmt=WPA-PSK
}
WIFI名称和密码处填入你自己的WIFI名称和密码就行了,然后按 Ctrl+X 退出,按 Y (保存),最后 Enter (以当前名称覆盖)。
用以下命令来连接网络:
sudo wpa_supplicant -B iwlan0 -c/etc/wpa_supplicant.conf
然后给WIFI assign一个IP地址:
sudo dhclient -v
检测自己有没有连上网:
ping -c5 baidu.com
如果这个请求成功那么说明连上了网络。(连网线也可以用这个方法测试)
首先更新一下包:
sudo apt update
然后:
sudo apt upgrade
完成之后重启系统:
sudo systemctl reboot
重启成功之后通过如下命令来安装桌面:
$ sudo apt install ubuntu-desktop
需要确认安装,按Y然后回车。等待下载完成之后再重启系统:
$ sudo systemctl reboot
重启后变进入了桌面界面:
登录之后就可以正常使用20.04的桌面了。
这里因为使用 Ubuntu 20.04, 因此安装对应的 ROS 版本 Noetic。这里全程科学上网,如果不能的话,有些地方可能会有问题,如果有我看到的解决方案的,也一并放在这里。
首先要确认一下系统的软件源。再Ubuntu的软件中心软件源配置界面看配置是否如图。
$ 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 [trusted=yes] http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
首先运行:
sudo apt-get update
然后安装(这里建议安装完整版,不然之后还有一堆东西要装)
$ sudo apt-get install ros-noetic-desktop-full
这个步骤如果没有科学上网,可能会出现很多问题,先说基本的,就是运行如下两个命令 :
$ sudo rosdep init
$ rosdep update
但是第一个命令就可能出现错误,网上有比较多的解决方法。参照其中一篇文章提到的解决方法,个人感觉里面最有效的是:
#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
#保存后退出再尝试
rosdep update
作者提到的手动修改20-default.list也很好用,但是如果改完之后直接运行 sudo rosdep init,还是会报错的,但是这时候其实这个list已经好了。
之后运行rosdep update 如果还是因为网络的原因报错,可以参考这篇文章,我墙内尝试了一下,可以解决问题。
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
然后运行:
$ roscore
可以看到ROS已经可以成功运行。
$ sudo apt-get install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential