树莓派4B控制Elfin05机械臂
本次实验采用的是Ubuntu18.04的版本来操作Elfin05机械臂,系统搭载在树莓派4B上
1、Ubuntu系统安装
首先说明一下,树莓派4B不支持Ubuntu18.04,作者在安装的时候遇到了很多的坑,根据大量的博客和网上经验,最适合搭载在树莓派4B上的是Ubuntu18.04.3Server版本,但在作者研究本项目时,全网都找不到Ubuntu18.04.3这个版本,经过多次测试,Ubuntu18.04.5的版本也可以支持,本次作者以Ubuntu18.04.5Server版本来安装。
- 下载Ubuntu18.04.5镜像,这里作者给出百度网盘地址:
- 准备一张大于16G的内存卡,这里推荐32G以上的,作者使用的是128G的内存卡,使用读卡器插在带Windows系统上。
- 使用SD Card Formatter软件进行内存卡格式化
- 使用Win32DiskImager软件进行镜像烧录
- 将内存卡插入树莓派并开机。进入后需要账号和密码:开始都默认是ubuntu;然后你需要修改密码;再然后就可以进入终端界面
- 打开可以看到是命令行的模式,这里需要安装桌面,但是此时是命令行模式,很难设置网络,作者采用有线网络的方式,将有线网络插在树莓派上,ping一下网络即可用
# 1、先更新一下源,然后重启
sudo apt-get update
sudo apt-get upgrade
reboot
# 2、再次进入系统后,下载桌面环境
sudo apt-get install ubuntu-desktop
# 3、下完如果失败,我们需要跟着提示输入一下命令
sudo apt-get update --fix-missing
# 4、下完后重启,再次输入下载命令
reboot
sudo apt-get install ubuntu-desktop
# 5、然后运行桌面环境
startx
到这里,树莓派上Ubuntu系统已经安装完毕!
2、ROS系统安装
树莓派安装ROS与虚拟机、真机安装区别不大,本次作者安装的是melodic版本
- 添加ROS软件源(TX2使用自带源即可,该步可省去)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加公钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- 更新软件包
sudo apt update
- 安装ros
sudo apt install ros-melodic-desktop-full
- 初始化 rosdep
sudo rosdep init
rosdep update
好了,在这步骤打住吧,90%的人都会在执行sudo rosdep init的时候遇到问题,这里贴上古月居的解决方案,但是作者尝试了很多次,均未成功;
经过大量的测试,以下的方案可以解决:(本方法来自该网站)
(1)下载源码包文件
下载 rosdistro包文件,若无法访问GitHub可以使用GitHub加速网站进行下载或者将其搬运至国内Gitee。
git clone https://github.com/ros/rosdistro.git
(2)修改url地址指向本地文件
此问题的原因在于无法连接外网,若上述步骤无法实现连接外网不妨换个思路连接本地文件解决问题。
# 进入下载的源码包内
cd rosdistro
# 修改url指向本地
sudo vim rosdep/sources.list.d/20-default.list
修改内容如下:
# os-specific listings first
yaml file:///home/jasonli/develop/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/jasonli/develop/rosdistro/rosdep/base.yaml
yaml file:///home/jasonli/develop/rosdistro/rosdep/python.yaml
yaml file:///home/jasonli/develop/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/jasonli/develop/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed an已成功保存至草稿箱
ymore, they are being fetched from the rosdistro index.yaml instead
其中,地址 /home/jasonli/develop/rosdistro/ 为博主存放改源码包的地址,大家需要将其修改为自己的地址。格式file:// 为url指向本地文件的头。
(3)修改配置文件内默认url
配置完成下载文件后需要将下载所用配置文件内的默认地址同样进行修改。
此处注意,对于ROS Melodic及之前版本的修改地址因该同上述博文中博主一样为python2,而Noetic版本及之后可能存在的版本应将地址修改为python3
# 进入rosdep2目录(Melodic及之前)
cd /usr/lib/python2.7/dist-packages/rosdep2
# 进入rosdep2目录(Noetic及之后)
cd /usr/lib/python3/dist-packages/rosdep2
修改sources_list.py文件
# 修改第一个文件 sources_list.py
sudo vim sources_list.py
打开文件将第74行参数 DEFAULT_SOURCES_LIST_URL 修改为如下内容,需要将其修改为你的地址:
DEFAULT_SOURCES_LIST_URL = 'file:///home/jasonli/develop/rosdistro/rosdep/sources.