任务动机:在openEuler下移植ROS Melodic运行时环境,为openEuler研发ROS repo创建原型。
任务描述:在openEuler下分步骤手工编译安装ros-comm,ros-desktop和ros-destopfull,由于openEuler 20.03 LTS暂不支持桌面,因此gui相关的ros包安装本任务略过。
1. 环境
操作系统版本:openEuler 20.03 LTS
内核版本:4.19.90-2003.4.0.0036
硬件:raspberrypi4+16G SSD
最新镜像
openEuler 20.03 LTS 的内测版本镜像,下载。
openEuler 20.03 + ROS Melodic Desktopfull + SLAM + Navigation raspberrypi4镜像,下载。提取码781g
刷镜像(第2条命令可能不自动跳出终止,不影响使用。拷贝完成的标志是15G的分区能访问,且已有文件。已验证)
$ sudo umount /dev/sdb1 /dev/sdb2 /dev/sdb3
$ gzip -dc openeuler.gz | sudo dd of=/dev/sdb
$ cat ~/.bashrc
source /root/devel_isolated/setup.bash
source /root/ws/devel/setup.bash #gmapping
source /root/ws1/devel/setup.bash #navigation
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
export ROS_MASTER_URI=http://127.0.0.1:11311
export ROS_HOSTNAME=127.0.0.1
该镜像的基本信息:
- 更新日志
- 发布时间:2020-05-11
- 大小:245 MiB
- 操作系统版本:openEuler 20.03 LTS
- 内核版本:4.19.90-2003.4.0.0036
- 固件来源:firmware、bluez-firmware、firmware-nonfree
- 构建文件系统的源仓库:openEuler-20.03-LTS
- 镜像内置源仓库:openEuler 20.03 LTS 源仓库
2. openEuler安装和配置
2.1 实验环境
- Windows10/Linux/Mac
- 树莓派 3B/3B+/4B
- 16G 以上的 Micro SD 卡
2.2获取树莓派 img 镜像
下载适配树莓派的最新 openEuler 镜像,下面以 XXX.img
表示该镜像。
2.3 刷机操作
Windows 环境
2.3.1 格式化 SD 卡
下载应用:SDFormater,用于格式化 SD 卡。
若 SD 卡之前未安装过镜像,盘符正常只有一个,选择 SD 卡对应盘符,直接格式化即可;
若 SD 卡之前安装过镜像,盘符会有三个,选择 SD 卡对应盘符(图例中为 E: 盘),格式化即可:
2.3.2 写入 SD 卡
- 下载应用:Win32 Disk Imager。
- 右键选择“以管理员身份运行”,打开 Win32 Disk Imager,选择镜像 img 文件和待写入的 SD 卡,点击【写入/Write】。
写入完成即可。
写入成功后,SD 卡自动分区后的盘符为:
2.4 树莓派配置
版本要求:树莓派 3B/3B+/4B。
默认用户名:root,密码:openeuler。
将刷好的 SD 卡插入树莓派,通电启用。树莓派正常启动,还需连接网线至局域网。
由于使用树莓派时,大多都使用 ssh 远程连接;在树莓派启动联网时,无法得知其 IP 地址。
有以下两种方式:
- 如果树莓派连接已知路由器,可登录路由器管理,新增的 IP 即为树莓派 IP:
- 将树莓派连接显示器,需注意,树莓派视频输出接口为 Micro HDMI
连接显示器后,直接用户名/密码登录,登录成功后,树莓派即显示本机相关信息,包括本机 IP。如下图(ssh 登录也显示这些信息):
配置无线网络
$ nmtui
添加用户
$ useradd -d /home/xbot -m xbot
$ passwd xbot
2.4.1 根目录分区扩展
默认根目录分区空间比较小,在使用之前,需要对分区进行扩容。
2.4.1.1 查看磁盘分区信息
fdisk -l
获取 SD 卡磁盘信息,例如 SD 卡对应磁盘为 /dev/mmcblk0。openEuler 镜像包括 3 个分区,分别为
- 引导分区 /dev/mmcblk0p1
- 交换分区 /dev/mmcblk0p2
- 根目录分区 /dev/mmcblk0p3
这里我们需要将根目录分区进行扩容。
2.4.1.2 分区扩容
2.4.1.2.1 操作磁盘 /dev/mmcblk0
fdisk /dev/mmcblk0
2.4.1.2.2 查看当前分区情况
p
记录下分区 /dev/mmcblk0p3 的起始扇区号,这里记为 xxx
。
2.4.1.2.3 删除分区 /dev/mmcblk0p3
d
2.4.1.2.4 选择要删除的分区序号
回车(默认为 3)或 输入 3
2.4.1.2.5 创建新的分区
n
2.4.1.2.6 选择创建分区类型
回车(默认为 p)或 输入 p
2.4.1.2.7 选择要创建的分区序号
回车(默认为 3)或 输入 3
2.4.1.2.8 输入新分区的起始扇区号(下图为1593344)
注意!!!不要直接输入回车或使用默认参数。这是需要输入删除分区 /dev/mmcblk0p3 之前查看到的的起始扇区号。
xxx,上图是16G的SSD,/dev/mmcblk0p3
的起始扇区为1593344
2.4.1.2.9 输入新分区的终止扇区号
回车
取默认的最后一个扇区号。
2.4.1.2.10 是否修改扇区标记
N
不修改。
2.4.1.2.11 保存并退出
w
该操作结束后,使用 fdisk -l
命令可以看到 /dev/mmcblk0p3 大小已经扩展。但是通过 df -lh
可以看到根目录大小没有变化。
2.4.1.2.12 增大未加载的文件系统大小
resize2fs /dev/mmcblk0p3
如果该命令失败,可通过命令 reboot
重启树莓派之后再执行 resize2fs /dev/mmcblk0p3
。
该操作结束后,通过 df -lh
可以看到根目录大小已经扩展。
至此,根目录分区扩容结束。扩容过程见下图:
3. ROS安装准备
3.1 设置repo
后续安装需要两个repo来回切换,需要编辑如下文件
$ vim /etc/yum.repos.d/openEuler-20.03-LTS.repo
- 设置成 oe-repo的内容
[eveything]
name=everything
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/$basearch
enabled=1
gpgcheck=0
[epol]
name=epol
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/$basearch
enabled=1
gpgcheck=0
[fedora29]
name=fed
baseurl=http://mirrors.aliyun.com/fedora/releases/29/Everything/aarch64/os/
enabled=0
gpgcheck=0
- 设置成 fed-repo的内容
[eveything]
name=everything
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/$basearch
enabled=0
gpgcheck=0
[epol]
name=epol
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/$basearch
enabled=0
gpgcheck=0
[fedora29]
name=fed
baseurl=http://mirrors.aliyun.com/fedora/releases/29/Everything/aarch64/os/
enabled=1
gpgcheck=0
3.2 设置/etc/hosts
添加raw.githubusercontent.com中国镜像站点(镜像站点IP会经常更新)
$ vim /etc/hosts
151.101.76.133 raw.githubusercontent.com
3.3 添加pip镜像站点
$ mkdir ~/.pip
$ vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
3.4 OVERRIDE操作系统信息
$ export ROS_OS_OVERRIDE=centos:7.6
4. 安装ROS
4.1 安装依赖
- 设置成 oe-repo,安装如