六、使用源码编译安装micro_ros_agent
0x00 为何需要源码编译安装micro_ros_agent?
在前面文章中介绍过使用snap方式安装micro_ros_agent,因为这种方式最简单方便。但是也有一个弊端,那就是snap方式目前只有在x64平台上可以安装micro-ros-agent,如果你现在使用的是基于ARM的平台,例如树莓派、香橙派这类单板机上,那就没办法使用snap方式安装。要想安装micro_ros_agent就只能下载对应源码来编译安装了,现在安装过程好像也变简单了,没有那么多依赖问题需要解决,这里我整理一下步骤,指导大家如何使用源码编译安装micro_ros_agent。
0x01 下载源码编译前的准备工作
无论你是打算在X86_64平台上,还是ARM平台(例如树莓派、香橙派、荔枝派、地瓜机器人的RDK系列等),都需要先安装好Ubuntu系统,然后安装好对应版本的ROS2系统,这里不给大家介绍如何安装这些基础软件了。
我建议大家在选择ROS2系统版本时,选择那个最新稳定版本的上一个稳定版本,例如当前最新稳定版本为Jazzy,那就选择上一个长期稳定版Humble安装,如下图所示:
当然有的人喜欢安装最新版本也可以,只不过最新版本的ROS2可能有一些包还没有升级到最新版本,那就会导致使用时各种依赖问题出现,需要花费大量时间在这些基础环境配置上得不偿失。我后面的源码编译安装都是在ROS2的Humble版本上给大家介绍的,如果您是其他的ROS2版本,我认为流程差不多,但是不保证一定可以顺利安装。
为了源码编译安装micro_ros_agent,那就需要先安装好Ubuntu22.04系统、ROS2 Humble版本,这里假设大家已经安装好ROS2 Humble版本系统,接下来就需要使用如下命令做好源码编译前的准备工作:
(1)更新系统软件包到最新版本:sudo apt update && sudo apt upgrade -y
(2)安装编译前必要工具:sudo apt install -y build-essential cmake git python3-colcon-common-extensions python3-argcomplete
(3)安装micro_ros_agent的依赖包:sudo apt install ros-humble-micro-ros-msgs
(4)创建源码编译的工作区目录:mkdir -p microros_ws/src && cd microros_ws/src
(5)下载对应分支的micro_ros_agent源码:git clone -b humble https://github.com/micro-ROS/micro-ROS-Agent.git
在这里需要注意,一定要选择好自己安装的ROS2版本的micro_ros_agent代码分支,不能下载错了分支代码,因为micro_ros_agent有很多代码分支,默认分支为kilted,这里我们选择humble分支代码下载编译,如下图所示:
0x02 在X86_64平台上编译
这里的X86_64平台就是我们的笔记本电脑、台式机这样的设备,一般都是使用Intel和AMD的CPU。在进行完上述准备工作后,我们就可以开始编译代码了,编译步骤也简单,只需要使用colcon build命令编译就可以,等待编译完成即可,具体如下图所示:
0x03 在RDK X5开发板上编译
我正好有一块RDK X5的开发板,这里顺便演示如何在该开发板上进行编译,准备工作都是一样的,编译命令也是相同,如下图所示:
0x04 在香橙派开发板上编译
我现在手上只有一块香橙派Zero2开发板,正好官方目前提供的最新版本系统是ubuntu22.04系统,我们正好可以在该系统上安装ROS2 Humble版本。由于在香橙派上源码编译micro_ros_agent稍微有点麻烦,所以这里我详细介绍下整个过程,首先从刚烧写好系统镜像开始,需要使用sudo apt update命令更新下系统软件包,可以看到需要更新非常多的包:
然后使用sudo apt upgrade命令更新软件包就可以,后面出现的各种提示信息,我们直接按回车确认就可以的,直到所有的软件包更新都安装完成就可以了。
在安装更新好系统的各软件包后,我建议需要重启一下系统,使整个系统都使用最新版本软件,然后再开始准备安装ROS2 Humble版本,安装ROS2其实也比较简单,我们就使用小鱼的ROS一键安装脚本就可以,可以减少我们操作各种命令的时间,具体命令如下:
wget http://fishros.com/install -O fishros && bash fishros
接下来就是选择从哪个源服务器更新软件了,直接选择[1]“自动测速选择最快的源”就可以了,等待完成,接下来就是选择ROS系统的镜像源服务器了,这里建议选择中科大镜像源,更新速度比较稳定,如下图所示:
接下来就是漫长的安装过程,等待ROS2的humble版本安装完成,当然这里安装结束后,我建议还是需要将系统重启一下,然后我们就可以来准备下载micro_ros_agent源码编译了。
在下载micro_ros_agent源码前,我们还需要安装下依赖包ros-humble-micro-ros-msgs,可以直接使用如下命令安装即可:
sudo apt install ros-humble-micro-ros-msgs
接下来就是创建工作区目录结构,然后下载源码了,具体命令如下:
在编译之前,我们需要根据自己开发板的内存来进行编译,由于编译micro_ros_agent内存消耗比较大,至少要保证3GB的内存吧,我认为这边编译才不容易出问题。由于香橙派zero2内存只有1GB,所以需要增加swap分区,如果你的香橙派内存是4G的,那就不用增加Swap分区大小了,增加swap分区的命令如下:
最后我们就可以在工作区根目录开始编译micro_ros_agent源码了,不过由于香橙派zero2的CPU为4线程,我们在编译源码时,为了防止系统编译源码时卡死,我们只使用2线程编译就可以了。如果你的香橙派性能比较好,例如是香橙派5,内存4GB,那就可以更多线程编译代码了。
如果需要使用CPU的全部线程参与编译源码,那就直接使用colcon build就可以了。若需要限制编译的线程数,例如只使用2个线程编译源码,那就增加一个编译选项"--parallel-workers 2"就可以了,具体编译命令如下:
colcon build --parallel-workers 2
0x05 编译源码后测试
我们在自己的平台上使用micro_ros_agent源码编译好后,需要在.bashrc文件中配置环境变量,这样以后就可以在任何终端里调用micro_ros_agent了,具体操作就是在.bashrc文件中最下面增加如下内容:
source ~/microros_ws/install/setup.bash
然后重新打开一个新的终端就可以使用ros2 run命令来调用micro_ros_agent了,具体可以看在香橙派zero2开发板上的运行效果,具体如下视频所示: