ETHERCAT + ROS2环境搭建

2026-06-09 11:19 技术

ros2 机器人

# ETHERCAT + ROS2 环境搭建

搭建 EtherCAT + ROS2 环境是一个涉及底层系统、实时内核、通信协议栈和上层控制框架的系统工程。 以下为您整理的详细搭建步骤,以目前最主流的 Ubuntu 22.04 + ROS2 Humble + IgH EtherCAT 组合为例:

系统级准备与安全启动检查

IgH EtherCAT 主站需要加载未签名的内核模块,因此必须首先禁用系统的安全启动(Secure Boot)。

1。 安装检测工具并检查状态:sudo apt-get install mokutil && mokutil --sb-state。 2。 若显示SecureBoot enabled,请重启电脑进入 BIOS 设置,在安全选项卡中禁用安全启动并保存退出。

配置 Linux PREEMPT_RT 实时内核

为了满足 EtherCAT 微秒级的硬实时控制需求,必须安装实时内核。

1。 安装低延迟内核(快速测试方案):sudo apt install -y linux-lowlatency linux-headers-lowlatency。 2。 安装 PREEMPT_RT 实时内核(推荐方案):通过 Ubuntu Pro 官方源免费获取(个人最多 5 台设备免费):

```bash
sudo pro attach
sudo pro enable realtime-kernel
sudo reboot
```

3。 重启后验证内核是否生效:uname -a | grep PREEMPT_RT

编译与安装 IgH EtherCAT 主站

1。 安装编译依赖:sudo apt install -y git autoconf libtool pkg-config make build-essential net-tools。 2。 获取源码并切换稳定分支:

```bash
mkdir ~/EtherLab && cd ~/EtherLab
git clone https://gitlab.com/etherlab.org/ethercat.git
cd ethercat && git checkout stable-1.5
```

3。 配置与编译:

```bash
./bootstrap
./configure --prefix=/usr/local/etherlab --disable-8139too --enable-generic
make all modules
sudo make modules_install install
sudo depmod
```

4。 系统配置:

- 创建符号链接:`sudo ln -s /usr/local/etherlab/bin/ethercat /usr/bin/`
- 复制配置文件:`sudo mkdir -p /etc/sysconfig && sudo cp /usr/local/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat`

5。 配置网卡:编辑 sudo nano /etc/sysconfig/ethercat, 将 MASTER0_DEVICE 修改为您用于 EtherCAT 通信的网卡 MAC 地址,并将 DEVICE_MODULES 设置为 "generic"
6。 启动主站并测试:sudo /etc/init.d/ethercat start,随后运行 ethercat master 查看状态,若PhaseOperation 则主站正常。

安装 ROS2 Humble 与 ros2_control

1。 安装 ROS2 Humble 桌面完整版:

```bash
sudo apt update && sudo apt install -y curl gnupg2 lsb-release
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros2.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update && sudo apt install -y ros-humble-desktop
source /opt/ros/humble/setup.bash
```

2。 安装 ros2_control 核心框架及预置控制器: sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

配置 ros2_control 控制器

在您的 ROS2 工作空间(如 my_robot/config/control_config.yaml)中编写 YAML 配置文件,定义控制周期和硬件接口:

controller_manager:
  ros__parameters:
    update_rate: 1000  # 控制周期(Hz),需与EtherCAT通信周期匹配

# 关节状态广播器(必须)
joint_state_broadcaster:
  type: joint_state_broadcaster/JointStateBroadcaster

# 关节轨迹控制器(适用于机械臂)
arm_controller:
  type: joint_trajectory_controller/JointTrajectoryController
  ros__parameters:
    joints:
      - shoulder_joint
      - elbow_joint
    interface_name: position

集成与启动测试

1。 在 URDF/Xacro 文件中声明硬件接口,将插件指向 EtherCAT 硬件接口(如 ethercat_ros2_control/EthercatHardware), 并配置对应的 command_interfacestate_interface
2。 编写 Python 或 C++ 的 Launch 文件,依次启动 robot_state_publisher、controller_manager(加载上述 YAML 配置)以及各个控制器的 spawner 节点。 3。 运行 Launch 文件,使用 ros2 topic echo /joint_states 观察电机反馈数据,验证整个控制链路是否打通。