在单板的 Ubuntu IMG 映像中安装 ROS

介绍

前几天,在写论文时,我需要为已安装 ROS 的单板平台创建 Ubuntu 映像(机器人操作系统-机器人操作系统)。 简而言之,该文凭致力于管理一组机器人。 这些机器人配备了两个轮子和三个测距仪。 整个过程由 ROS 控制,ROS 运行在 ODROID-C2 板上。

在单板的 Ubuntu IMG 映像中安装 ROS
机器人瓢虫。 抱歉照片质量不佳

既没有时间也没有意愿在每个机器人上单独安装 ROS,因此需要一个已安装 ROS 的系统映像。 浏览互联网后,我发现了几种实现此目的的方法。
一般来说,找到的所有解决方案都可以分为以下几组。

  1. 从现成且配置好的系统创建映像的程序(Distroshare Ubuntu 成像器, Linux 实时套件, Linux 重新启动、系统后台等)
  2. 允许您创建自己的图像的项目(yocto, linux 从零开始)
  3. 自己组装图像(现场CD定制 и 俄语同等内容关于哈布雷的文章)

使用第一组的解决方案似乎是最简单且最具吸引力的选择,但我始终无法为 ODROID 创建实时系统映像。 第二组的解决方案也不太适合我,因为进入门槛相当高。 根据可用教程进行手动组装也不合适,因为...... 我的映像没有压缩文件系统。
结果,我看到了一个关于 chroot 的视频(chroot - 更改根目录,链接到帖子末尾的视频)及其功能,因此决定使用它。 接下来,我将描述我为机器人开发人员定制 Ubuntu 的具体案例。

背景:

  • 整个镜像修改过程(除了使用balenaEtcher写入SD卡外)是在Ubuntu 18.04操作系统上执行的。
  • 我修改的程序集的操作系统是Ubuntu 18.04.3 mate桌面版。
  • 组装系统应运行的机器是 ODROID-C2。

准备图像

  1. 从以下网址下载 ODROID 的 Ubuntu 映像 官方网站

  2. 解压存档

    unxz –kv <файл архива с образом>

  3. 创建一个目录,我们将在其中挂载映像

    mkdir mnt

  4. 确定文件系统所在分区

    file <файл образа>

    我们正在寻找具有 ext2、ext3 或 ext4 格式文件系统的分区。 我们需要该部分开头的地址(在屏幕上以红色突出显示):

    在单板的 Ubuntu IMG 映像中安装 ROS

    注。 还可以使用该实用程序查看文件系统的位置 分手.

  5. 安装图像

    sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/

    我们需要的部分从块 264192 开始(您的数字可能不同),一个块的大小是 512 字节,将它们相乘以获得以字节为单位的缩进。

  6. 转到已安装系统的文件夹并在其中挂起

    cd mnt/
    sudo chroot ~/livecd/mnt/ bin/sh

    〜/ livecd / mnt — 已安装系统目录的完整路径
    箱/箱 - 外壳(也可以替换为 垃圾箱/bash)
    现在您可以开始安装必要的软件包和应用程序。

安装ROS

我根据安装了最新版本的ROS(ROS Melodic) 官方教程.

  1. 更新包列表

    sudo apt-get update

    这是我收到错误的地方:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>

    这是因为包签名密钥已过期。 要更新密钥,请键入:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9

  2. 准备系统以安装 ROS

    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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. 安装ROS
    不幸的是,我无法安装桌面版的ROS,所以我只安装了基本的软件包:

    sudo apt install ros-melodic-ros-base
    apt search ros-melodic

    注意1。 安装过程中有时会出现错误:

    dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device

    通过使用 apt 实用程序清除缓存来修复此问题:

    sudo apt-get clean; sudo apt-get autoclean

    注意2。 安装后,使用以下命令获取:

    source /opt/ros/melodic/setup.bash

    这是行不通的,因为我们没有运行 bash,因此不需要在终端中输入。

  4. 安装必要的依赖项

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. 设置访问权限
    由于我们已登录,并且实际上代表正在组装的系统的根执行所有操作,因此 ROS 将仅以超级用户权限启动。
    当尝试在不使用 sudo 的情况下运行 roscore 时,会出现错误:

    Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'

    为了防止错误发生,让我们递归地更改 ROS 用户主目录的访问权限。 为此,我们输入:

    sudo rosdep fix-permissions

  6. rviz 和 rqt 软件包的附加安装

    sudo apt-get install ros-melodic-rqt ros-melodic-rviz

最后的润色

  1. 退出 chroot:
    exit
  2. 卸载镜像
    cd ..
    sudo umount mnt/
  3. 让我们将系统映像打包到存档中
    xz –ckv1 <файл образа>

全部! 现在在帮助下 balena蚀刻机 您可以将系统映像刻录到SD卡,将其插入ODROID-C2,您将拥有安装了ROS的Ubuntu!

参考文献:

  • 该视频对如何在 Linux 中作弊以及为什么需要它有很大帮助:



来源: habr.com

添加评论