Due to generous donations from Maxon, our rover exclusively uses Maxon motors and EPOS2 controllers. While there is already a ROS package that can control EPOS controllers, we found that its capabilities are somewhat limited. Furthermore, it does not fully utilize the simple, dynamic reconfigurability that ROS allows. For this reason, we decided to make our own wrapper that is designed to by highly user configurable.
Some of the benefits of our EPOS package include:
- Ability to control any number of motors without recompiling code. We load the motors and their parameters and runtime. This means that adding additional motors is as easy as adding an additional argument to the program at runtime.
- YAML based parameter initialization. By using the YAML parameter format that ROS commonly uses, you can store each motor’s parameters in a text file. This makes it easy to modify or add different motor parameters without having to modify a single line of code.
- Dynamic reconfiguring of parameters. By using the dynamic reconfigure ROS node, the user can modify a number of parameters (such as acceleration/deceleration profiles) while the program is running. This enables the user to finely tune different motor parameters to their liking without having to restart the program.
While the code is almost complete, we still need to do some bug testing to make sure there aren’t any hidden problems. In the mean time, here is a link to the code repository for EposManager.
Additionally, we have received a number of requests from both universities and private entities for more information regarding how we got the EPOS library to work under Linux. Because this seems to be a common problem, we will be adding an EPOS specific tab to our website detailing all of challenges we have encountered, as well as how we eventually solved them. If you have any questions about the getting the EPOS to work under Linux, please let us know and we will try to help.