EtherCAT Master for Laelaps II Quadruped
Channel: mustardtrip
Date: 2020-10-04

Recent advancements in embedded systems and the widely popular Internet of Things (IoT) demonstrated the need for firmware running in a real-time manner. This trend depicts in the evolution of ROS, with the introduction of the real-time friendly ROS2. The industry has adopted many protocols to deliver vital data fast. The recent years, the global standard for industrial wire data transfer and machine synchronization tends to be Beckhoff’s EtherCAT. Its architecture consists of a master (commonly running on a PC) and several slaves (usually bare-metal microcontrollers) connected in a daisy chain topology. This work focuses on creating a new ROS package that blends these two worlds, i.e.: ROS modularity with EtherCAT’s hard real-time functionalities. The ether_ros package (which was originally developed by Mike Karamousadakis as part of his Diploma Thesis at the Control Systems Lab of NTUA) interconnects the EtherLAB Master Module API for the EtherCAT protocol, with ROS. As a result, the package not only fully integrates the EtherCAT protocol’s capabilities but also compared to its alternatives has several advantages. The current working version is not a standalone, maintainable ROS package but this is the final goal of this project. 
The timeline for this goal is the next ROS conference. With this in mind, the team has already: 
(a) Updated the EtherLAB module using the latest mercurial changeset. 
(b) Installed patched 5.4-rt kernel to be used with Ubuntu 20.04. 
(c) Built and tested  ether_ros on Ubuntu 20.04 with ROS noetic. 
(d) Tested ether_ros by executing semielliptical trajectories on the quadruped’s toes. 
(e) Controlled all four legs of Laelaps ΙΙ quadruped in a walking experiment.
(f) Added two IMU nodes in the EtherCAT network making the total number of nodes six. 
According, to the Legged team’s schedule, future goals that are planned until June 2021 include: 
(a) Migrating to ROS2.
(b) Updating the existing codebase to follow C++11 features. 
(c) Creating a standalone maintainable ROS package where more EtherCAT nodes may be loaded using YAML files.