参考:https://book.guyuehome.com/ROS2/2.核心概念/2.1_工作空间/
【ROS2】机器人操作系统安装到Ubuntu简介-CSDN博客
ROS2的概念概述
- 工作空间(Workspace):开发的大本营,组织代码、依赖和构建输出的根目录。
- 功能包(Package):功能源码的聚集地,包含节点、接口、配置等独立功能模块。
- 节点(Node):机器人的“工作细胞”,最小执行单元,负责单一功能(如传感器驱动)。
- 话题(Topic):节点间异步传递数据的“桥梁”,基于发布/订阅模型(如传感器数据流)。
- 服务(Service):同步的“你问我答”机制,适用于需即时响应的短任务(如开关控制)。
- 动作(Action):复杂行为的“流程管理”,支持长时间任务、反馈与取消(如导航到目标点)。
- 通信接口(Interface):数据传递的“标准结构”,定义消息(
.msg
)、服务(.srv
)、动作(.action
)格式。 - 参数(Parameter):机器人系统的“全局字典”,动态键值对配置(如超时时间、IP地址)。
- 分布式通信(Distributed Communication):跨多计算平台的“任务分配”,支持机器人集群协同工作。
- DDS(Data Distribution Service):ROS2底层的“神经网络”,实现实时、可靠的通信中间件
工作空间
绝大部分操作都是在src中进行的,
编译成功后,就可以执行install里边的结果,
build和log两个文件夹用的很少。
包含四子空间
-
src,代码空间,未来编写的代码、脚本,都需要人为的放置到这里;
-
build,编译空间,保存编译过程中产生的中间文件;
-
install,安装空间,放置编译得到的可执行文件和脚本;
-
log,日志空间,编译和运行过程中,保存各种警告、错误、信息等日志。
创建工作空间
源码使用示例代码
mkdir -p ./dev_ws/src
cd ./dev_ws/src
git clone https://gitee.com/guyuehome/ros2_21_tutorials.git
自动安装依赖
从社区中下载的各种代码,多少都会有一些依赖,我们可以手动一个一个安装,也可以使用rosdep工具自动安装:
sudo apt install -y python3-pip
sudo pip3 install rosdepc
sudo rosdepc init
rosdepc update
cd .. # 需要进入需要编译文档的上层
# humble 是ubuntu 22.04的版本,如果保存可以不加
rosdepc install -i --from-path src --rosdistro humble -y
开始编译
sudo apt install python3-colcon-ros
cd dev_ws/src
colcon build
编译如果报错
AttributeError: module 'em' has no attribute 'BUFFERED_OPT')
明明自动安装了依赖,可能python路径的问题是问题
em
模块错误 (`AttributeError: module 'em' has no attribute 'BUFFERED_OPT')
原因:
rosidl_adapter
依赖的empy
模块未安装或版本不兼容,且当前使用了Conda环境的Python(/home/zengxy/miniconda3/bin/python3
),而非ROS2所需的系统Python环境
隔离Conda与ROS2环境
Conda环境与ROS2的系统Python环境冲突是根本原因。需在编译时完全退出Conda环境:
# 退出当前Conda环境
conda deactivate
# 验证Python路径是否为系统路径
which python3 # 正确路径应为 /usr/bin/python3
在.bashrc环境中修改
vi ~/.bashrc
键盘输入a,可以复制
source /opt/ros/humble/setup.bash
export PYTHONPATH="/opt/ros/humble/lib/python3.10/site-packages:$PYTHONPATH"
export PATH="/usr/bin:$PATH"
方法2
# 更推荐直接加载ROS官方环境(避免手动复制模板)
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
# 立刻生效
source ~/.bashrc # 或简写为 . ~/.bashrc