文章目录
一、树莓派4B上安装ubuntu20.04
树莓派的前期准备
1.下载ubuntu版本安装包
在ubuntu官网中可以找到
2. 使用DiskGenius格式化SD卡,将所有扇区删除,然后格式化。
3. 写入SD卡
下载官方烧录工具、用读卡器将SD卡连接至电脑,将镜像写入SD卡。镜像选择刚才下载的.xz文件,SD卡选择自己的卡,写入即可。
写完后将SD卡插入树莓派中。
二、ubuntu20.04系统配置
1.寻找树莓派的ip地址
1.首次利用网线将树莓派和电脑连接,若有外接显示器将会十分轻松。该教程为无显示器的悲惨教程。
2.为树莓派连接电源(电源可以是2.5mm圆头电源线,也可以是microUSB或者TypeC接口的线,但要求充电头能够达到5V 3A,最低5V 2.5A)
3.控制面板->网络共享中心->更改适配器设置->WiFi->属性->共享
勾选允许其他用户连接
4.进入cmd命令行,在命令提示符里输入arp -a
树莓派地址一般为192.168.137.xxx,可通过拔插网线来确认树莓派地址对应的接口,图片中的不是树莓派接口!!!
确认接口之后就需要逐个去试地址,地址范围为192.168.137.1~192.168.137.254
2.配置ubuntu系统
1.再开一个cmd窗口,输入ssh ubuntu@这里填树莓派地址
2.开机,等待一段时间后进入系统,首先需要登录,初始用户名和密码都是ubuntu,登陆后会要求重新设置密码。
1)WiFi配置
获取root权限
sudo passwd root
用此命令切换到root管理员:
su root 要输入密码 sudo su直接登录
从root用户切回user用户
su user (user是你安装时候的用户名),或直接输入exit,也可Ctrl+D退出
进入root管理员后
cd /etc/netplan
在该目录下,如果是服务器,则会有一个50-cloud-init.yaml的文件,如果是桌面环境,会有一个01-network-manager-all.yaml
输入ls或ls -a可浏览该目录下文件
这里以50-cloud-init.yaml为例
注意文件的缩进格式
network:
version: 2
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"你的wifi名称":
password: "wifi密码"
然后执行命令使配置生效
sudo netplan generate
sudo netplan apply
若此方法仍然无法连接热点
则将TF卡取下来,插上windows电脑,在powershell(即是在TF卡根目录下进入cmd)里执行:
new-item wpa_supplicant.conf -type file
打开该文件(wpa_supplicant.conf),写入
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="此处填手机热点的名称,注意手机热点不能有中文字符"
psk="手机热点密码"
priority=99
#priority是优先级,数字越大,说明优先级越高
#注意不要把填ssid和psk时不要把""删掉
}
2)SSH配置
输入
sudo raspi-config
如果提示出错请按照提示解决
选择“5 Interfacing Options”
选择“SSH”
选择是,回车
最后选择finish
ssh自启动服务
如果要ssh能随系统一起启动,则需要在tf卡的根目录下创建一个空白的文件,文件名叫:ssh
将TF卡取下来,插上windows电脑,在powershell(即是在TF卡根目录下进入cmd)里执行:
new-item ssh -type file
将TF卡插回树莓派即可
3)更新及安装桌面环境
更新源
sudo vim /etc/apt/sources.list
将该文件内的内容注释掉,换成下列内容
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
进行更新
sudo apt-get update
sudo apt-get upgrade
安装桌面环境
sudo apt install ubuntu-desktop
sudo apt install xrdp
三、ubuntu20.04安装ROS
1.添加密钥和安装ROS
1.添加ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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 update
4.安装ROS
sudo apt install ros-noetic-desktop-full
5.初始化rosdep
rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖, 同时也是某些ROS核心功能组件所必需用到的工具。
sudo apt install python3-rosdep2
安装完成后继续运行 sudo rosdep init 命令一般将会出现下面错误,当然,如果你成功执行了sudo rosdep init(见下),则可直接到
输入下面命令解决上面错误后再输入sudo rosdep init
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
之后成功出现下面的命令 ,如果超时继续sudo rosdep init
如果多次尝试均失败,那么则尝试以下方法
2.解决sudo rosdep init的问题
首先要加快github 访问速度
1)修改本地 hosts 文件
mac/linux 系统的 hosts 文件的位置如下:/etc/hosts
2)增加 http://github.global.ssl.fastly.net 和 http://github.com 的映射
获取 Github 相关网站的 ip
访问 https://www.ipaddress.com,
分别输入 github.global.ssl.fastly.net和github.com,查询 ip 地址
这是我的配置
140.82.112.3 github.com
199.232.69.194 github.global.ssl.fastly.net
sudo vim /etc/hosts
加入你自己的配置,保存后退出
返回主目录后,执行以下指令切换至root用户
sudo su //或者su root 然后输入密码切换至root用户
输入
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
然后
sudo gedit 20-default.list 或者 sudo vim 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
exit 或Crtl+D//退出root用户
3.解决rosdep update的问题
在成功执行sudo rosdep init后,则可执行rosdep update,但是正常情况下,会一直出现超时的错误。
因此
利用GitHub Proxy 代理加速
这个方法的起因和安装 ROS 软件时,利用镜像源的原理类似,如将 ROS 软件镜像源替换成清华源,以及日常的 apt 库替换成清华源。
利用 GitHub Proxy 代理,实现的是不直接访问 GitHub,故不直接访问 GitHub 下载资源,而是通过代理间接访问。
1)修改 sources_list.py 文件
sudo vim /usr/lib/python3/dist-packages/rosdep2/sources_list.py
添加内容如下,见下图:
url="https://ghproxy.com/"+url # 新添加
2)修改 init.py 文件
sudo vim /usr/lib/python3/dist-packages/rosdistro/__init__.py
添加内容如下,并注释被替换内容,见下图:
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
除此处外,下述文件中也含有 github 地址,分别是:
/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py 36 行
/usr/lib/python3/dist-packages/rosdep2/sources_list.py 72 行
/usr/lib/python3/dist-packages/rosdep2/rep3.py 39 行
/usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py 68 行 119 行
将https://ghproxy.com/加到github 地址前面进行代理
最后,在 /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码:
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
在终端输入
rosdep update
rosdep update 成功
3.小海龟测试验证ROS安装成功
1)远程桌面连接实现功能
使用Windows系统自带的远程桌面连接工具(通过【开始菜单】->【Windows附件】->【远程桌面连接】打开)连接树莓派,SSH连接是通过命令行对树莓派进行远程操作,而远程桌面是直接通过树莓派的GUI界面进行操作,就像是树莓派直接连接显示器一样,操作简单,交互性更好。
2)远程桌面连接实现原理
xrdp是一个开源的远程桌面服务器,支持Windows远程桌面连接,但是xrdp需要使用tightvncserver作为其基础服务,所以在树莓派上需要同时安装xrdp和tightvncserver两个服务,Windows才能远程连接到树莓派。
3)树莓派远程桌面连接服务安装
在树莓派上安装xrdp服务
sudo apt-get install xrdp
在树莓派上安装tightvncserver服务
sudo apt-get install tightvncserver
安装好以上两个服务后,即可使用WIndows自带工具远程连接到树莓派。
4)树莓派远程桌面连接示例
打开Windows自带远程桌面连接工具
输入树莓派地址
连接验证,选择【是】即可
填写连接用户名和密码,用户名ubuntu,密码是ubuntu的开启密码
连接成功将进入ubuntu的图形化界面。
5)小海龟测试
设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装rosinstall等工具
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential python3-roslaunch
rosinstall 是ROS中一个独立分开的常用命令行工具, 它可以方便让你通过一条命令就可以给某个ROS软件包下载很多源码树。
按正常来说ROS已经安装完成了,现在我们来验证一下,输入以下命令:
roscore
如果出现了以下的问题,则说明之前的安装没有安装全,继续输入下面的命令补全安装包
sudo apt install ros-noetic-desktop-full
到这里再输入roscore看一下,若安装成功会显示如下界面:
然后我们启动一下小海龟的仿真器试一试,按ctrl+alt+t打开一个新的终端,输入以下命令
rosrun turtlesim turtlesim_node
按ctrl+alt+t再打开一个新的终端,输入以下命令
rosrun turtlesim turtle_teleop_key
这时候你按键盘上的↑↓←→键就可以控制小海龟移动了!
那么你的ROS已经成功安装了
总结
本文参考了大量的教程,经过不断的试错之后总结所得。
参考:
在ubuntu20.4下安装ROS-noetic(全步骤经反复验证成功)
【已解决】完美解决 ROS 安装 rosdep update(timed out)报错超时问题