Operation with ROS, PyPot and Other Robot Platforms
Preamble:
With the transition from the ARES to EROS architecture, some minor changes in the control tables may affect existing software. The document EROS vs ARES architecture: What's new and What's changed explains these changes.
Nevertheless, for the purpose of using existing libraries that mainly handle torque settings and position settings, full compatibility has been maintained.
Furthermore, this document has been updated with information regarding the new design of the Robotis XM series Control Tables and compatibility with libraries built for this architecture.
Introduction:
Seed Robotics units can be controlled via the Dynamixel Protocol (version 1.0 and 2.0).
In addition to the Dynamixel Protocol, they can also be controlled using Seed Robotics STP Protocol (please refer to the documentation of your particular model for more information).
For the purpose of this document and for integrating with existing Robotics systems, we selected the Dynamixel protocol (version 1.0) because it is already widely used in Robotics and has very good support, with several libraries being already available for it.
DISAMBIGUATION:
Due to the detailed nature of each framework, they have been organized in their own, dedicated pages:
You may also want to refer to the protocol documentation directly. Please refer to your product's documentation for information on the Dynamixel Protocol and STP protocol.
Introduction to operation with PyPot
PyPot is another popular framework for controlling Dynamixel devices.
To get started with PyPot see here https://poppy-project.github.io/pypot/
Using PyPot, you have two options:
- Integrate the Seed Robotics models into the framework and use the High Level functions. This is recommended if you already have a system with other Dynamixel Devices
- Use the
DxlIO
class, which provides a low level access to the bus and the unit's control table. For more information please see here https://poppy-project.github.io/pypot/dynamixel.html
1. Integrating Seed Robotics models into the High Level Framework
To integrate the models into the framework you need to apply a small number of patches to let the Framework correctly identify the models. Please see the document Pypot Patches before continuing.
Once the framework is patched, you can use all the tools to interface with your unit. We recommend starting with the Herborist tool (a graphical tool) to test your units.
When using the High Level PyPot functions, like in ROS, the position functions take parameters in Degrees (-180 to +180). These are then mapped to the raw positions of 0 to 4095 used by our devices.
However, the range of 0 - 4095 does not necessary correspond to a 360º turn in our units. Therefore the user should observe caution and understand that in PyPot -180 would mean a raw value of 0 and +180 would mean a raw value of 4095. Any value inbetween is mapped to the RAW range which means you can still access the full range of motion.
Knowing this, you will be able to move your hand accordingly.
As with ROS, the Pypot framework enables access and control of the hand in Position Control mode.
The Current measurement features are not natively supported, but with PyPot the framework can be easily extended to access the necessary memory positions for this purpose. You can also access these positions by using a DXLIo class.
2. Using the DXLIo class for low level access
The DXLIo class provides a low level access to all the memory positions/Control table fo the unit. It is not as tightly integrated in highly level functions as solution 1 but it gives you access to all the features in the unit, including advanced ones like current measurement.
The DxlIO
class can operate with RAW values or values in degrees. While Seed Robotics units expose the Raw positions in 10 or 12bit values, the same range as Robotis Dynamixel servos, these values don't necessary map to a 360º angle.
Furthermore, when working with PyPot in degrees, 0 represents the center position, with -180º and +180º representing the minimum and maximum range.
Therefore, when using the library, bear in mind that a RAW 0
or -180º
will correspond to the minimum position in the motion range of the joint and 1023/4095
or +180º
will correspond to the maximum position in the range.
Other Robot Platforms
By using the Dynamixel Protocol, Seed Robotics can be controlled by multiple libraries. At the base of all of them is the the architecture of the Dynamixel Protocol.
At the time of writing, Dynamixel 1.0 and Dynamixel 2.0 are supported.
However the Control Tables for Seed Robotics units, remain the same regardless of your protocol version. This may be relevant if you are using packages built for the new Control Table design introduced by Robotis with the XM series servos. Read below for more information.
Dynamixel is a protocol that is used over a Serial connection where devices connect in a daisy chain method. For control purposes, each device has a unique I D on the bus and uses a kind of Memory Mapped approach: by reading and writing to specific positions in the Control Table you operate and manage the unit in all of its features: starting with setting or reading position up to controlling the LEDs or resetting the units.
For further information we recommend reading the following:
- If you have an RH4D with ARES architecture (units built before March 1st 2017): Control Tables of the SR-DH4D Ares
- If you have a unit with EROS Architecture (all other models and units): EROS Control Tables
To learn about the Dynamixel Protocol, the Robotis e-Manual website is the most valuable source of information. There you will learn how to use the Dynamixel protocol with all its features.
Control Table design and Dynamixel 2.0 considerations
Seed Robotics units have a Control Table designed to be as close as possible to that of the Robotis Dynamixel servos (AX Series, original MX Series units that use Dynamixel 1.0 protocol), for ease of use and compatibility with the largest number of existing libraries and frameworks.
Therefore the control table positions for getting/setting position, speed and torque are the same as with any Robotis Dynamixel motor of these models (AX/original MX series).
Additional features of Seed Robotics units are exposed in separate locations of the Control Tables, distributed in positions typically not used by Dynamixel motors, to avoid any ambiguity.
Further separation is achieved if you have a unit with the EROS Architecture: in this architecture most of the Seed Robotics specific features are concentrated in the Control Table of the Main Board, leaving the Control Table of the Actuators are close as possible to that of other Robotis Dynamixel Actuators.
At this point it is important to make a clear distinction and clarification:
- The Dynamixel Protocol version (1.0 or 2.0) defines the structure of the commands used to READ or WRITE from the units. Seed Robotics units support both protocols.
- The Control Table design is a separate topic, and pertains to the organization of the Memory Mapping of the units functions. This is the point to look out for: Seed Robotics uses one single Control Table design regardless of the Dynamixel Protocol version used. This control table design mimics the Control Tables of the AX/original MX series actuators.
The new Robotis Dynamixel Pro Series and XM Series of actuators (and subsequent models) introduced a new design of the Control Tables which completely breaks compatibility with the previous design of the Control Tables (used by AX/original MX series and Seed Robotics units).
Despite this different Control Table, as long as you use the same protocol version, Seed Robotis units and Robotis Dynamixel Pro and XM units (and subsequent models) can be connected on the same bus.
The only thing to watch out for is that the memory positions for each specific function is different whether you are addressing the Seed Robotics unit or the Robotis XM series unit.
This is only relevant in case you make use of newer libraries built for XM series units. In this case, you should ensure you use functions that can address the memory positions in the Control Tables of Seed Robotics units.
Dynamixel version and Control table design can be a complex topic if you are new to this architecture. If you have further questions, do not hesitate to contact us on support@seedrobotics.com and we'll be happy to answer them.
Copyright © 2015-2023 Seed Robotics Ltd