ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

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

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

stex2005 gravatar image

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

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 -0600 )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 -0600 )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 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

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

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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


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

Seen: 989 times

Last updated: Mar 12 '19