跳转至

代码开发与编译方法

OriginMan开发完全遵循ROS2的开发方法,这里简要介绍功能包的常见操作,ROS2详细的开发原理,请参考ROS2入门教程

工作空间

在ROS机器人开发中,我们针对机器人某些功能进行代码开发时,各种编写的代码、参数、脚本等文件,都需要放置在某一个文件夹里进行管理,这个文件夹在ROS系统中就叫做工作空间

OriginMan的官方镜像中,已经创建好了工作空间,位于/userdata文件夹下,名为dev_ws,叫做工作空间的根目录,其中包含五个子文件夹:

image-20220920221905698

  • src,代码空间,未来编写的代码、脚本,都需要人为的放置到这里;
  • build,编译空间,保存编译过程中产生的中间文件;
  • install,安装空间,放置编译得到的可执行文件和脚本;
  • log,日志空间,编译和运行过程中,保存各种警告、错误、信息等日志。
  • config,配置文件,保存人体跟踪、手势识别应用的模型配置文件(非ROS2工作空间所需文件夹)。

这五个空间的文件夹,我们绝大部分操作都是在src中进行的,编译成功后,执行install中的编译结果。

功能包

OriginMan机器人端的功能包都放置在/userdata/dev_ws工作空间下的src文件夹中,功能包描述如下:

功能包名称 作用描述
originman_airiltag_detect 机器人检测和定位AirTag标签的功能包
originman_kick_ball 机器人执行踢球动作的功能包
originman_teleop_keyboard 通过键盘遥控操作机器人的功能包
originman_audio_control 音频控制机器人动作功能包
originman_line_follower 机器人视觉巡线功能包
originman_transport_lab 机器人运输实验相关的功能包
originman_color_detect 机器人颜色检测与识别功能包
originman_llm_chat 机器人与大语言模型交互的聊天功能包
originman_action_imitation 机器人模仿人类动作的功能包
originman_demo 机器人ROS2版本驱动示例功能包
originman_pydemo 使用Python实现的机器人演示示例

编译代码

修改功能包中的代码或者配置文件后,需要使用如下命令编译工作空间,如果有缺少的依赖,或者代码有错误,编译过程中会有报错,否则编译过程应该不会出现任何错误:

$ cd /userdata/dev_ws/
$ colcon build

image-20220920222359026

设置环境变量

编译成功后,为了让系统能够找到我们的功能包和可执行文件,还需要设置环境变量:

$ source /userdata/dev_ws/install/local_setup.bash # 仅在当前终端生效
$ echo " source /userdata/dev_ws/install/local_setup.bash" >> ~/.bashrc # 所有终端均生效,只用运行一次
Hint

OriginMan的镜像中,已经在.bashrc配置文件中设置好了如上环境变量,无须再次配置。

图片1