软件结构简介¶
openArmX 软件系统采用模块化设计,主要包含电机控制、ROS2 集成、遥操作等功能模块。
📦 核心功能包¶
| 功能包 | 功能说明 | 主要用途 |
|---|---|---|
| openarmx_description | 机器人描述 | URDF 模型、可视化配置 |
| openarmx_motor_manager | 电机管理系统 | 电机状态管理、参数配置、上位机 |
| openarmx_ros2 | ROS2 集成包 | ROS2 节点、硬件接口、MoveIt配置 |
| openarmx_teleop_bimanual | 双臂遥操作 | 双臂协同遥操作控制 |
| openarmx_tools | 工具集 | 夹爪面板、参数面板、示教功能 |
📂 目录结构¶
~/openarmx_ws/src/
├── openarmx_description/ # 机器人描述
├── openarmx_motor_manager/ # 电机管理系统
│ ├── config/ # 配置文件
│ ├── scripts/ # 电机测试脚本(重要)
│ ├── ui/ # 用户界面
│ └── utils/ # 工具函数
├── openarmx_ros2/ # ROS2 功能包
│ ├── openarmx/ # 基础包
│ ├── openarmx_bimanual_moveit_config/ # MoveIt 配置
│ ├── openarmx_bringup/ # 启动配置
│ └── openarmx_hardware/ # 硬件接口
├── openarmx_teleop_bimanual/ # 双臂同构遥操作
└── openarmx_tools/ # 工具集
├── openarmx_gripper_panel/ # 夹爪控制面板
├── openarmx_kp_kd_panel/ # Kp Kd 参数面板
└── openarmx_teach/ # 示教功能
注意:python脚本或上位机不能和ros2控制同时使用,否则机器人可能会异常运动,导致机器人损坏!!!
🛠️ 机器人运动模式¶
openArmX 支持多种电机控制模式,主要使用 MIT 模式和 CSP 模式。
MIT 模式¶
Motion Control Mode(运动控制模式) - openArmX 默认使用
控制方式:
- 位置 + 速度 + KP + KD + 力矩混合控制
- 实时可调节刚度参数(KP/KD)
- 支持力矩前馈
主要特点:
- ✓ 负载高 - 额定负载达 5 KG。
- ✓ 柔顺控制 - 低刚度参数实现柔性交互
- ✓ 力矩控制 - 可叠加力矩,支持重力补偿
- ✓ 参数可调 - 实时调整 KP/KD 适应不同任务
- ✓ 混合控制 - 位置、速度、力矩灵活组合
- ✗ 精度低 - 由于重力和经摩擦力的影响,在 PID 设置的比较小的时候很难达到目标位置
适用场景:
- 示教录制(低刚度,易推动)
- 人机协作(柔顺安全)
CSP 模式¶
Cyclic Synchronous Position(周期同步位置模式)
控制方式:
- 纯位置控制
- 电机内部 PID 闭环跟踪
- 参数固定(出厂调优)
主要特点:
- ✓ 简单易用 - 只需发送目标位置,无需调参
- ✓ 精度稳定 - 出厂优化,一致性好
- ✗ 负载低 - 额定负载为 2KG 左右,做大负载测试时容易过流烧毁电机
- ✗ 刚度固定 - 无法调节柔顺性,不适合示教
- ✗ 无力矩控制 - 难以实现重力补偿和力控
适用场景:
- 固定自动化任务
- 高精度重复定位
- 批量生产部署
- 标准设备集成
📊 模式对比¶
| 特性 | MIT 模式 | CSP 模式 |
|---|---|---|
| 控制方式 | 位置+速度+KP+KD+力矩 | 纯位置 |
| 参数调节 | 实时可调 | 固定 |
| 柔顺控制 | ✓ 支持 | ✗ 不支持 |
| 力矩前馈 | ✓ 支持 | ✗ 不支持 |
| 灵活性 | ★★★★★ | ★★☆☆☆ |
| 人机协作 | ★★★★★ | ★☆☆☆☆ |
openArmX 推荐: 默认使用 MIT 模式,因其灵活性高、支持示教和力控,适合研发和多样化应用场景,而且该模式下额定负载大,不容易损坏。