ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Maxon Motor EPOS 4 - Cyclic Synchronous Modes - EtherCAT in ROS

asked 2018-10-31 05:12:27 -0500

stex2005 gravatar image

updated 2018-10-31 05:31:39 -0500

Hello everyone,

I am working on a 5-joint motorized robotic arm, where each joint has to be controlled in current, speed and position (feedback with optical encoders) in a cyclic synchronous mode, so that a higher-level controller performs the path planning (IK solvers) synchronized for multiple axes. The setpoints for position, speed and current are constantly updated.

Higher-level controller has to perform 1-to-1 cyclic set/read values operations to all motor drivers. Typical update rates are in the range of a few milliseconds - up to 100Hz.

I am thinking to use MAXON EPOS 4 Positioning Drivers and I was wondering which is the best option to connect Maxon EPOS 4 to a linux-based higher level controller to operate in Cyclic Synchronous Modes.

I believe that Maxon only provides CANopen c++ libraries to work with SDO, while for cyclic modes PDO is needed and a CANopen master needs to be programmed, so I decided to try with EtherCAT.

According to EtherCAT I was not able to find a solid and robust library that could directly interface the EPOS 4. Given that I need to develop my own library (according to Maxon datasheets) I was wondering what you suggest, ros_Ethercat/ros_control or SOEM approach? Is there any example to interface etherCAT in ROS? Is there anyone who tried it?

Thank you Stex

edit retag flag offensive close merge delete



Can you clarify how this is related to ROS? This is not a generic robotics support forum, so we try to keep everything as much as possible on topic.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-31 05:17:55 -0500 )edit

Sorry, I was not clear, I am looking for a ROS-based library like SOEM to interface with Maxon Motor Driver through etherCAT, if anyone tried it.

stex2005 gravatar image stex2005  ( 2018-10-31 05:25:11 -0500 )edit

Hi Stex,

I am trying to do exactly what you mentioned here in your post. Were you able to develop what you set about to do? Could you guide me on how to do this, and if you could share the files of the project.

Thank you,


Rejin gravatar image Rejin  ( 2019-04-25 11:56:04 -0500 )edit

@stex2005@Rejin , What do you have reached for that? I'm making an Articulated Robot that will be used in industry, it has delta drivers that can communicate through EtherCAT protocol. I want to control it using ROS. I have found a lot of ways that made me confused such as SOEM package, Hardware_ethercat package, and connecting EtherCAT master devices What should I do? And what are the hardware components that I will need to buy? what I have are a PC with ROS installed (or a Jetson controller), industrial drivers with EtherCAT protocol, and motors

Omar_Alkassas gravatar image Omar_Alkassas  ( 2023-06-22 03:47:33 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-03-12 02:22:25 -0500

mgruhler gravatar image

Well, you already mention the examples yourself.

Interfacing SOEM with ROS is possible, as it is only C++. So this all depends on your implementation. The hardest part will most probably be to set up/implement your driver correctly. But afair there are non already available. You'd have to implement this yourself.

I integrated a Elmo Gold DC Whistle with ROS using SOEM. Here is an example script which shows the interfacing of SOEM and Elmo. The rest was really just putting this into a proper ROS package, adding ROS interfaces and making it nice :)

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2018-10-31 05:12:27 -0500

Seen: 1,228 times

Last updated: Mar 12 '19