# communicate_interface **Repository Path**: fu0609/communicate_interface ## Basic Information - **Project Name**: communicate_interface - **Description**: 存放各个机器人的ROS2 humble自定义消息package - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-02 - **Last Updated**: 2025-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # communicate_interface ## 介绍 本仓库是 ROS2 Humble 机器人通信接口集合,包含了多个机器人平台的自定义消息定义和话题转换工具。 ## 软件架构 ``` communicate_interface/ ├── msg/ # 消息定义目录 │ ├── mit_msgs/ # MIT Cheetah 风格消息 │ ├── qi_msg/ # 齐机器人消息 (S3, L1, ZSL1) │ └── unitree_msg/ # 宇树机器人消息 │ ├── unitree_api/ # Unitree API 消息 │ ├── unitree_go/ # Go2 系列消息 │ └── unitree_hg/ # G1, H1 系列消息 └── topic_converter/ # 话题转换节点 ├── qi_topic_converter # 启灵机器人话题转换器 └── unitree_topic_converter # 宇树机器人话题转换器 ``` ## 包含的消息类型 ### 1. MIT Messages (`mit_msgs`) 通用的 MIT Cheetah 风格控制接口,只用于强化学习控制器与mujoco仿真,其他消息需要通过消息转换节点转成本消息格式。 - `MITJointCommand`: 单关节命令 (位置/速度/力矩/PD参数) - `MITJointCommands`: 多关节命令数组 - `MITLowState`: 低层状态反馈 (IMU/关节状态) ### 2. Qi Robot Messages (`qi_msg`) 适用于启灵机器人 (S3, L1等) - `IMUState`: IMU 状态 - `MotorCmd` / `MotorState`: 电机命令和状态 - `LowCmd` / `LowState`: 低层命令和状态 ### 3. Unitree Messages (`unitree_msg`) #### unitree_api Unitree API 通信协议消息 - Request/Response 系列消息 #### unitree_go (Go2 系列) - `LowCmd` / `LowState`: 低层控制接口 - `MotorCmd` / `MotorState`: 电机控制 - `IMUState`: IMU 数据 - `BmsState`: 电池管理系统 - `WirelessController`: 无线手柄 - 其他传感器消息 (LiDAR, UWB, 视频等) #### unitree_hg (G1, H1 系列) - `LowCmd` / `LowState`: 低层控制接口 - `MotorCmd` / `MotorState`: 电机控制 - `HandCmd` / `HandState`: 灵巧手控制 - `IMUState`, `BmsState`: 传感器消息 ## Topic Converter 话题转换器负责在不同消息格式之间进行转换,使得强化学习控制器可以使用统一的 MIT 风格接口。 ### qi_topic_converter 转换启灵机器人消息 ↔ MIT 消息 **订阅话题:** - `/lowcmd_topic` (qi_msg/LowCmd) **发布话题:** - `/mit_joint_commands` (mit_msgs/MITJointCommands) - `/mit_low_state` (mit_msgs/MITLowState) ### unitree_topic_converter 转换宇树机器人消息 ↔ MIT 消息 **订阅话题:** - `/lowcmd` (unitree_go/LowCmd 或 unitree_hg/LowCmd) **发布话题:** - `/mit_joint_commands` (mit_msgs/MITJointCommands) - `/mit_low_state` (mit_msgs/MITLowState) ## 安装教程 ### 依赖 - ROS2 Humble - ament_cmake - rclcpp ### 编译 ```bash cd colcon build --packages-select mit_msgs qi_msg unitree_api unitree_go unitree_hg topic_converter source install/setup.bash ``` 或使用符号链接安装(推荐开发时使用): ```bash colcon build --packages-select mit_msgs qi_msg unitree_api unitree_go unitree_hg topic_converter --symlink-install ``` ## 使用说明 ### 1. 在你的 package.xml 中添加依赖 ```xml mit_msgs qi_msg unitree_go unitree_hg ``` ### 2. 在 CMakeLists.txt 中查找包 ```cmake find_package(mit_msgs REQUIRED) find_package(qi_msg REQUIRED) # 或其他消息包... ``` ### 3. 启动话题转换器 对于宇树机器人 (Go2, G1, H1): ```bash ros2 run topic_converter unitree_topic_converter ``` 对于齐机器人 (S3, L1): ```bash ros2 run topic_converter qi_topic_converter ``` ### 4. 在 launch 文件中使用 ```python from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='topic_converter', executable='unitree_topic_converter', name='unitree_topic_converter', output='screen' ), ]) ``` ## 支持的机器人平台 - ✅ Unitree Go2 - ✅ Unitree G1 - ✅ 启灵机器人 S3 - ✅ 启灵机器人 L1 ## 开发指南 ### 添加新的消息类型 1. 在对应的 msg 目录下创建 `.msg` 文件 2. 在 `CMakeLists.txt` 中添加消息声明 3. 重新编译包 ### 添加新的转换器 1. 在 `topic_converter/src/` 中创建新的转换器源文件 2. 在 `topic_converter/include/` 中添加头文件 3. 在 `CMakeLists.txt` 中添加可执行文件编译规则 ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 许可证 请查看具体项目的许可证要求。 ## 联系方式 - 维护者: nanhaibei - Email: 371743175@qq.com