2022年9月9日更新:
ros的安装教程整体上没有问题,rosdep update下载报错的url实际位置可能会出现变更,请根据实际情况来
毕设要搞个机器人底盘,上位机用树莓派4B,考虑到ros和系统的兼容问题,给树莓派安装ubuntu18.04。树莓派官网的ubuntu系统以及是20以上了,网上的教程也有些落后,特开个新帖记录一下安装过程。
配置:树莓派4b 4GB、网线、32G SD卡和读卡器、显示屏、HDMI线。
软件:Win32DiskImager
安装的系统:Ubuntu18.04
我的树莓派是4GB的,所以用的是32位的镜像,8GB的可以去官网下载64位的镜像。建议都用32位的
Ubuntu18.04镜像:http://cdimage.ubuntu.com/releases/18.04/release/ubuntu-18.04.5-preinstalled-server-armhf+raspi4.img.xz
64位的镜像:http://cdimage.ubuntu.com/releases/18.04/release/ubuntu-18.04.5-preinstalled-server-arm64+raspi4.img.xz
插入SD卡,运行Win32DiskImager,软件会自动加载SD卡,选择镜像文件,然后点“写入”,等一会就可以了。
镜像写入后不要着急插上树莓派,先修改文件,不然开不了机。
首先新建一个文件,文件名为SSH,不要加后缀。
接着删除config.txt里面的内容,将下面的内容粘贴进去:
start_x=1
max_usb_current=1
current_limit_override=0x5A000020
avoid_warnings=2
[all]
device_tree_address=0x03000000
enable_uart=1
cmdline=nobtcmd.txt
include syscfg.txt
include usercfg.txt
然后修改usercfg.txt文件,将下列内容粘贴进去:
hdmi_force_hotplug=1
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=16
hdmi_drive=2
hdmi_ignore_edid=0xa5000080
disable_overscan=1
其中“hdmi_group”和“hdmi_mode”根据自己的屏幕分辨率修改: 树莓派 设置HDMI分辨率
保存后将卡插入树莓派开机。然后根据提示输入账户密码进入系统,初始用户名和密码均为ubuntu,系统会提示再输入一次密码然后修改新密码。
我的是网线,直接插上就可以了,wifi可以等装上桌面再连接。没有网线就得先配置wifi,怎么配置可以自己百度,或者有空再写。
以下操作都需要权限,先进入root用户,可以省很多事情。
sudo su
打开source.list文件
vim /etc/apt/source.list
删除里面deb前面的注释号“#”,然后http改成https,将后面的网址换成阿里云。
如下:
deb https://mirrors.aliyun.com/ubuntu-ports bionic main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic main restricted
deb https://mirrors.aliyun.com/ubuntu-ports bionic-updates main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-updates main restricted
deb https://mirrors.aliyun.com/ubuntu-ports bionic universe
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic universe
deb https://mirrors.aliyun.com/ubuntu-ports bionic-updates universe
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-updates universe
deb https://mirrors.aliyun.com/ubuntu-ports bionic multiverse
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic multiverse
deb https://mirrors.aliyun.com/ubuntu-ports bionic-updates multiverse
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-updates multiverse
deb https://mirrors.aliyun.com/ubuntu-ports bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports bionic-security main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-security main restricted
deb https://mirrors.aliyun.com/ubuntu-ports bionic-security universe
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-security universe
deb https://mirrors.aliyun.com/ubuntu-ports bionic-security multiverse
deb-src https://mirrors.aliyun.com/ubuntu-ports bionic-security multiverse
apt install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal -y
接下来就是15分钟到等待时间,具体取决于你的网速。然后重启就可以进入桌面了。
开机后设置wifi和中文输入法,配置VNC。
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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
出现类似Could not open lock file的锁错误,可以尝试用下面方法解决,然后重新执行更新:
sudo rm /var/lib/apt/lists/lock
sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
sudo rosdep init
这里可能会有两个报错
错误1:rosdep command not found, 可以参考如下解决方法,然后再次初始化。
sudo apt install python-rosdep
sudo rosdep init
错误2:ERROR: cannot download default sources list from,这个需要修改hosts文件:
sudo gedit /etc/hosts
用浏览器打开https://www.ipaddress.com,然后搜索raw.githubusercontent.com,将解析到的IP全部放进hosts文件里:
再次执行:
sudo rosdep init
上面没问题接下来我们再执行:
rosdep update
报错:下载超时
由于近期国内Github Raw的可用IP越来越少,通过修改hosts文件解决rosdep update超时问题的方法已经不太好用,这里我们通过修改下载函数指向的url,让其通过代*理https://ghproxy.com/来进行下载。
首先定位rosdep资源下载函数。
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
注:Ubuntu20以上如果发现文件打开是空白,尝试把python2.7改成python3
找到函数download_rosdep_data,在函数第一行添加,保存退出:
url=“https://ghproxy.com/”+url
修改/usr/lib/python2.7/dist-packages/rosdistro/__ init __.py
(init前后是个两个下划线,这里因为编辑原因加了空格)
里面的DEFAULT_INDEX_URL(在地址前添加https://ghproxy.com/前缀):
DEFAULT_INDEX_URL = ‘https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’
接着用同样的方法修改下面的文件(文件因为时间问题可能会出现内容变更,行数仅供参考,可以在文件内按Ctrl+F
搜索’‘https://raw.github’'进行一个大致的定位):
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py 39行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68行 119行
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
然后再次update,多试几次,成功。
rosdep update
echo "source /opt/ros/melodic/setup.bash">> ~/.bashrc
source ~/.bashrc
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
roscore
rosrun turtlesim turtlesim_node
PS:本文参考文章
参考文章 1
参考文章 2