通过开发板来学习ROS2 21讲(基础环境配置)

简介

ROS2 21讲是古月居倾力打造的ROS2 的入门学习视频,相信有很多小伙伴也是通过ROS2 21讲入门的ROS2。在学习过程中,大家有可能是使用虚拟机/PC机来运行ROS2上的案例,但是假如大家手上有一块开发板,比如RDK X3/树莓派/JestonNano… 那么理应由开发板上手会更好了,毕竟我们最终都是将ROS2 部署到开发板上来实现一些功能。

本系列内容将以RDKX3/OriginBot机器人为例,将ROS2 21讲中的内容在板端实现一遍,根据大家的反馈,本系列将分别以Python3/C++的方式实现代码,并实现一样的功能供大家作为参考。

参考资料

ROS2 21讲视频 :【古月居】古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统_哔哩哔哩_bilibili

ROS2 21讲图文文档:ROS2入门教程 (guyuehome.com)

基础说明

在正式开始内容之前请大家先部署好自己的环境,我目前的软硬件环境如下:

  • RDK X3/OriginBot,镜像为OriginBot v2.0.2

  • PC端为Windows 11

连接板端环境

如果你之前没有接触过机器人相关内容,你将遇到第一个问题,就是如何连接到板端,这里推荐两个工具,大家可以根据情况选择不同的方式进行连接。

配置网络环境

连接到板端后,大家可能会为了方便起见配置一个网络,由于这个镜像是服务器版本镜像是没有界面的,所以大家需要通过命令行的方式进行连接,命令如下:

#查找周围WIFI
sudo nmcli device wifi rescan
#打印WIFI列表
sudo nmcli device wifi list
#连接WIFI
sudo wifi_connect "wifi名" "密码"

以上操作适用于Ubuntu系统,大家可以参考使用。

内容简介

完成以上配置后,我们就基本完成了基础的环境搭建,可以正式开始ROS2 21讲的学习了。

这里再和大家强调,本系列文章为大家观看ROS2 21讲的补充内容,可以先观看视频和文档的同时配合本文看板端是如何操作的。

接下来给大家一一演示以下内容。

工作空间创建

在板端创建工作空间的流程和虚拟机端是一致的,本质上它们都是一个Ubuntu系统。

#创建dev_ws工作空间,src文件讲存放后续的功能包
mkdir -p ~/dev_ws/src
cd ~/dev_ws/src
#此处拉取基础版本的课程代码
git clone https://gitee.com/guyuehome/ros2_21_tutorials.git

安装功能包依赖

如果是大家自己创建的功能包是不需要执行这一步的,那么为什么要执行一下内容呢?大家可以注意到功能包内由一个package.xml文件,其中由如下部分

这部分就是大家需要关注的依赖,如果当前环境系统中没有这些依赖,程序将编译失败,所以一般的做法为安装从github/gitee…的功能包是要先安装功能包的依赖,具体做法如下:

sudo apt install -y python3-pip
sudo pip3 install rosdepc
sudo rosdepc init
rosdepc update
cd ..
rosdepc install -i --from-path src --rosdistro humble -y

rosdepc是什么呢?是一个国内开发者小鱼制作的工作,可以帮助大家方便的使用ros/ros2.要知道之前安装ros/ros2也是初学者入门的一个大难题,大家可以执行一下命令体验一下

wget http://fishros.com/install -O fishros && . fishros

功能包编译

之后就到了功能包编译环节,这里请大家千万注意,一定是在工作空间下进行编译,编译后的文件是与咱们一开始创建的src在同一文件级下的。

#安装编译工具“colcon”,镜像中已经下载了
sudo apt install python3-colcon-ros
cd ~/dev_ws/
#编译工作空间下所有的功能包
colcon build

完成以上步骤后就完成一个基本的环境部署了。

再啰嗦两句,colcon build 是ros2开发中经常使用的命令,但是由于在开发中我们不会一次性改动特别多文件,所以除了第一次编译需要colcon build外,其余时刻一般使用单独编译的命令。

#colcon build --packages-select  功能包名,如下例
colcon build --packages-select learning_interface

编译结束后如下所示,可以看到install、build

这里需要说明的是和ROS1不同,在ROS2中不管Python/C++改动后都需要进行编译,编译后产生的执行文件都会存放到install中。为什么提到这一点?后续在开发中假如大家发现编译后并没有像自己预期一样执行内容,不妨到install看看是否真的生成了可执行文件。

设置环境变量

最后还需要设置环境变量

source install/local_setup.sh # 仅在当前终端生效
echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc # 所有终端均生效

再啰嗦一下,local_setup.sh和setup.bash的区别在于setup.bash还会source一遍foxy的setup.bash 。