代码开发与编译方法
OriginMan开发完全遵循ROS2的开发方法,这里简要介绍功能包的常见操作,ROS2详细的开发原理,请参考ROS2入门教程。
工作空间
在ROS机器人开发中,我们针对机器人某些功能进行代码开发时,各种编写的代码、参数、脚本等文件,都需要放置在某一个文件夹里进行管理,这个文件夹在ROS系统中就叫做工作空间。
OriginMan的官方镜像中,已经创建好了工作空间,位于/userdata文件夹下,名为dev_ws,叫做工作空间的根目录,其中包含五个子文件夹:
- 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实现的机器人演示示例 |
编译代码
修改功能包中的代码或者配置文件后,需要使用如下命令编译工作空间,如果有缺少的依赖,或者代码有错误,编译过程中会有报错,否则编译过程应该不会出现任何错误:
设置环境变量
编译成功后,为了让系统能够找到我们的功能包和可执行文件,还需要设置环境变量:
$ source /userdata/dev_ws/install/local_setup.bash # 仅在当前终端生效
$ echo " source /userdata/dev_ws/install/local_setup.bash" >> ~/.bashrc # 所有终端均生效,只用运行一次
Hint
OriginMan的镜像中,已经在.bashrc配置文件中设置好了如上环境变量,无须再次配置。