As part of the push towards RoboHUD v2.0.0, which focuses on a shift to a modular design and an improvement in code quality, the RoboCupServer-Current code, which enables driving, was identified as a major weak point in the stack. This pull request introduces a complete redesign of the server, towards a more modular, class based system that focuses on address descriptions rather than addresses themselves.
The code introduced in this pull request enables multiple Dynamixels to be connected to the server under different protocols, as well as unlocking functionality at a lower level, such as reading from any readable address.
The Dynamixel class introduced in dynamixels.py contains the following functionality:
Read
Write
Joint/wheel mode
Protocol 1 & 2 support
Additionally, dynamixels.py provides:
Automatic U2D2 directory detection
A function to initialise a Dynamixel based on the control table specified in a CSV (The client redesign will introduce code to parse the control table from the related Dynamixel EMANUAL and convert it into a CSV)
server.py features less drastic updates, instead implementing the Dynamixel class for the following to be able to:
Move a Dynamixel as a wheel/joint depending on the current mode
Read any valid address on a Dynamixel
Modify any valid address on a Dynamixel
Initialise/delete Dynamixels at any time
Change the mode between wheel/joint of any Dynamixel at any time
Please feel free to comment with any queries, suggestions or issues before I merge this code!
As part of the push towards RoboHUD v2.0.0, which focuses on a shift to a modular design and an improvement in code quality, the
RoboCupServer-Current
code, which enables driving, was identified as a major weak point in the stack. This pull request introduces a complete redesign of the server, towards a more modular, class based system that focuses on address descriptions rather than addresses themselves.The code introduced in this pull request enables multiple Dynamixels to be connected to the server under different protocols, as well as unlocking functionality at a lower level, such as reading from any readable address.
The Dynamixel class introduced in
dynamixels.py
contains the following functionality:Additionally,
dynamixels.py
provides:server.py
features less drastic updates, instead implementing theDynamixel
class for the following to be able to:Please feel free to comment with any queries, suggestions or issues before I merge this code!