三、使用snap方式安装micro_ros_agent

0x00 为何需要安装micro_ros_agent?

我们的ROS2语音交互模块里安装了一个简洁版本的ROS2系统,它并没有像在ubuntu系统上安装的完整版ROS2系统功能那么全,只有一些核心功能,这个精简版本的ROS2系统就是Micor-ROS。为了保证我们精简版本的Micro-ROS系统可以和完全功能版本的ROS2系统正常通信,这中间就需要一个桥梁,micro_ros_agent就负责这项任务,通过下面这张图,大家就清楚这个软件包的地位和功能了:

三、使用snap方式安装micro_ros_agent - 第1张
micro_ros_agent重要作用

在Micro-ROS系统中使用的是XRCE-DDS协议,而标准版ROS2系统使用的是标准DDS/RTPS协议,所以micro_ros_agent有协议转换的作用。而且它还具备网络集成的功能,可以将装有Micro-ROS的嵌入式设备接入到ROS2的DDS域,最后还有一个高级功能,就是可以使嵌入式设备上的Micro-ROS支持ROS2的服务Service、动作Action等高级特性,所以我们在ROS2主控系统上,必须安装micro_ros_agent软件包。


0x01 通信流程详解

嵌入式设备上安装的Micro-ROS与标准版ROS2系统,通过micro_ros_agent进行通信的流程图给大家详细介绍一下,这样就更清楚这背后的通信原理了,具体如下图所示:

三、使用snap方式安装micro_ros_agent - 第2张
通信流程图

micro_ros_agent的处理协议转换功能,可以减轻嵌入式设备的硬件资源消耗,只专注于自身任务的实时控制。同时利用micro_ros_agent还可以提高嵌入式平台上开发效率,可以复用ROS2上的一些工具,无需为嵌入式设备开发特殊中间件。


0x02 使用snap安装micro_ros_agent包

安装micro_ros_agent包有很多种方式,常用的有源码编译、docker安装方式和snap安装方式。在这里只所以选择介绍使用snap安装方式,是因为这种方式安装最简单、方便快捷,本来想介绍另外两种方式,但是考虑到需要科学上网的原因,可能很多小伙伴没办法正常安装,所以就先介绍snap安装方式,对于另外两种安装方式,后面有更简单的方式了再给大家介绍。

在较新版本的ubuntu系统中,例如ubuntu22.04系统及其以后版本,snap正在逐渐成为ubuntu生态系统的核心组成部分,它是由Canonical开发的现代化软件打包盒部署系统,它可以理解为一种精简版本的docker,相对于传统的apt/deb安装方式有如下优势,如下图所示:

三、使用snap方式安装micro_ros_agent - 第3张
snap安装优势

接下来我们就使用snap安装micro_ros_agent,操作步骤依次介绍,具体的安装命令如下:

sudo snap install micro-ros-agent core

然后我们需要启动usb串口的热插拔特性,并需要重启snapd守护进程,具体命令如下:

sudo snap set core experimental.hotplug=true

sudo systemctl restart snapd

在最后配置一下micro_ros_agent需要连接的ROS2语音模块串口,具体命令如下:

sudo snap connect micro-ros-agent:serial-port snapd:pico

到这里我们就已经使用snap方式安装了micro_ros_agent软件包了,下面就可以正常使用它将我们的ROS2语音交互模块与ROS2系统建立连接了。


0x03 配置语音板rules规则文件

由于ROS2语音模块使用usb接口与ROS2主系统进行连接,所以每次插到主系统的USB接口上时,设备名称可能会有变化,例如当前设备名为/dev/ttyACM0,但是下次开机可能变为/dev/ttyACM1,这样我们在使用命令进行连接的时候会比较麻烦,所以我们需要使用rules规则文件,为ROS2语音模块设备名生成一个固定的别名,这样以后我们每次与语音模块连接时命令就不用修改了。

首先,我们需要在当前系统中创建一个空白的规则文件,并将文件命名为99-ROS2-Voice-Module.rules,然后往该文件中写入如下信息:

SUBSYSTEM=="tty", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", SYMLINK+="voiceModule", MODE="0666"

然后需要将该文件移动到/etc/udev/rules.d/目录下,最后执行如下两条命令使规则文件生效,具体命令如下:

sudo udevadm control --reload-rules

sudo udevadm trigger

执行完上述两条命令后,就可以将我们的ROS2语音交互模块插到ROS2主系统的USB接口上使用了。完整的操作步骤如下图所示:

三、使用snap方式安装micro_ros_agent - 第4张
配置规则文件

0x04 运行snap安装的micro-ros-agent

这里调用micro-ros-agent方式跟使用源码编译的ROS2软件包micro_ros_agent不同,使用方式更像一个普通的程序执行方式,完整的命令如下:

micro-ros-agent serial --dev /dev/voiceModule

三、使用snap方式安装micro_ros_agent - 第5张
正常建立连接

这里使用命令将ROS2语音模块的串口与ROS2系统建立连接时,需要确保ubuntu用户当前有操作串口的权限,我们可以通过如下图片中命令来检查:

三、使用snap方式安装micro_ros_agent - 第6张
groups命令

如果发现系统当前用户没有在dialout用户组中(groups命令输出中没有dialout字段),那就说明当前用户是没有操作串口的权限的,可以使用如下命令将当前用户添加到dialout组中,具体命令如下:

sudo usermod -aG dialout $USER

执行完上述命令后,当前用户并不能立刻添加到dialout组中,需要重启一下系统就生效了,以后当前用户就一直在dialout组中了,这样就永久具备操作串口的权限了。

本文原创,作者:corvin_zhang,其版权均为ROS小课堂所有。
如需转载,请注明出处:https://www.corvin.cn/3471.html