☰
简历技术栈全面复习——ROS2缺口
2026/9/28 5:24:09 网站建设 项目流程

工程架构:

上层程序 ↓ JointTrajectory ↓ ROS2 control Node ↓ 关节映射 ↓ rad → encoder count ↓ EtherCAT command ↓ CiA402 Drive ↓ Motor

反馈方向:

Motor ↓ Encoder ↓ EtherCAT ↓ encoder count ↓ count → rad ↓ ROS2 ↓ JointState / Controller

1. 参数化 launch

为什么叫“参数化”?

例如:

robot.launch.py

可以接受:

robot_ip can_interface ethercat_device use_sim joint_config

于是:

开发环境 ↓ use_sim=true

真实机器人:

use_sim=false

同一套启动逻辑可以适配不同环境。

这就是工程上的:

配置与代码分离。


2. 为什么需要“关节映射”?

这是你简历中很重要但容易被忽略的一点:

实现关节映射。

假设 ROS2:

left_elbow right_elbow left_knee

而底层驱动器编号:

Motor 1 Motor 2 Motor 3

系统需要建立:

ROS Joint Name ↓ Motor ID

例如:

left_elbow → Motor 3 right_elbow → Motor 7 left_knee → Motor 10

所以:

上层关节名称 ↓ Joint Mapping ↓ 底层电机编号

这就是软件抽象层之间的适配。


3. 弧度为什么还要转换?

ROS2 机器人软件通常使用:

rad

例如:

1.57 rad

但是电机编码器可能使用:

encoder count

比如:

100000 count

所以必须:

ROS2 ↓ rad ↓ 转换 ↓ encoder count ↓ EtherCAT ↓ Drive

反馈反过来:

encoder count ↓ 转换 ↓ rad ↓ ROS2

4. ROS2 和 EtherCAT 为什么要解耦?

一个非常好的工程架构应该是:

ROS2 ↓ Hardware Interface ↓ EtherCAT Driver

而不是:

ROS2 Node ↓ 到处写 IgH API ↓ 到处操作 PDO

因为如果 ROS2 节点直接操作 EtherCAT:

ROS2代码 + EtherCAT代码 + CiA402代码

全部混在一起。

以后换硬件就非常痛苦。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询