resibots / dynamixel_control_hw Goto Github PK
View Code? Open in Web Editor NEWHardware interface for ros_control and the Dynamixels actuators
License: Other
Hardware interface for ros_control and the Dynamixels actuators
License: Other
Hi guys,
I installed both libdynamixel and dynamixel_control_hw, and when running my launch file I so have this error message:
1 servo was declared to the hardware interface but could not be found
However when I try it using the command line you provide (./build/src/tools/dynamixel -p /dev/ttyUSB0 -b 57600 list
) it finds my MX64.
I also changed the communication time to 4 as stated in the doc!
Any ideas why?
Is there a method to read the signed position from dynamixels? If I move the dynamixel to -PI/2 (confirmed through dynamixel wizard) the get_present_position_angle
method returns 18301.
Hey, First of big thanks!
I am trying to increase my loop frequency and saw that you have - bunch of different branches.
I will be running Dynamixel MX-28R P2.
What branches of dynamixel_control_hw and libdynamixel should I use to utilize bulk read?
Thanks /RF
The default frequency for this control loop is 10 Hz for us. Let's set cycle_time_error_threshold
to 0.1, i.e. the maximum allowed duration of an iteration to ensure 10 Hz iteration frequency. I observe on Positronic that the threshold is regularly exceeded (see bellow). Admittedly, the excess time is very little, but it shows that we are already close to the limit.
[ WARN] [1458293591.557913852]: Cycle time exceeded error threshold by: 3.7721e-05, cycle time: 0.100037721, threshold: 0.1
[ WARN] [1458293592.057749621]: Cycle time exceeded error threshold by: 2.0122e-05, cycle time: 0.100020122, threshold: 0.1
[ WARN] [1458293592.557678208]: Cycle time exceeded error threshold by: 4.261e-05, cycle time: 0.100042610, threshold: 0.1
[ WARN] [1458293593.158254929]: Cycle time exceeded error threshold by: 0.00104895, cycle time: 0.101048953, threshold: 0.1
[ WARN] [1458293593.358195718]: Cycle time exceeded error threshold by: 0.0010338, cycle time: 0.101033797, threshold: 0.1
[ WARN] [1458293595.658286463]: Cycle time exceeded error threshold by: 0.00106704, cycle time: 0.101067042, threshold: 0.1
[ WARN] [1458293595.858179759]: Cycle time exceeded error threshold by: 0.00102926, cycle time: 0.101029257, threshold: 0.1
[ WARN] [1458293596.857821194]: Cycle time exceeded error threshold by: 1.7817e-05, cycle time: 0.100017817, threshold: 0.1
[ WARN] [1458293597.057700941]: Cycle time exceeded error threshold by: 5.8185e-05, cycle time: 0.100058185, threshold: 0.1
[ WARN] [1458293598.257216257]: Cycle time exceeded error threshold by: 2.11e-05, cycle time: 0.100021100, threshold: 0.1
[ WARN] [1458293598.357235889]: Cycle time exceeded error threshold by: 2.033e-05, cycle time: 0.100020330, threshold: 0.1
[ WARN] [1458293598.458147884]: Cycle time exceeded error threshold by: 0.0009539, cycle time: 0.100953900, threshold: 0.1
[ WARN] [1458293600.757213708]: Cycle time exceeded error threshold by: 1.0134e-05, cycle time: 0.100010134, threshold: 0.1
[ WARN] [1458293600.858150496]: Cycle time exceeded error threshold by: 0.000973175, cycle time: 0.100973175, threshold: 0.1
[ WARN] [1458293601.457944227]: Cycle time exceeded error threshold by: 2.1029e-05, cycle time: 0.100021029, threshold: 0.1
[ WARN] [1458293603.157214574]: Cycle time exceeded error threshold by: 3.4369e-05, cycle time: 0.100034369, threshold: 0.1
[ WARN] [1458293603.258169032]: Cycle time exceeded error threshold by: 0.00100335, cycle time: 0.101003347, threshold: 0.1
[ WARN] [1458293603.957935811]: Cycle time exceeded error threshold by: 1.621e-05, cycle time: 0.100016210, threshold: 0.1
One possible axis of improvement is the find operations on _dynamixel_corrections in each read_joints() and write_joints(). Nonetheless, the C++ reference states that it's an operation with log complexity. The impact of these operations should be limited, because until know, we never used more than 18 actuators at the same time.
The alternative choice is to consider that the control loop cannot run at such frequency. I think it would be a sad limitation.
Hi, what about we tag current version of the code with something like v0.1.0 since we changed the library dependency ?
Hi, thank you for publishing great software.
I would like to ask you why you write CMake as the following:
dynamixel_control_hw/CMakeLists.txt
Line 6 in 0d21d0d
In this implementation,the right hand STREQUAL
of
dynamixel_control_hw/CMakeLists.txt
Line 25 in 0d21d0d
true
in my understanding. So, even though I set LIBDYNAMIXEL as a environment variable, this cmake uses default settings if I do not set RESIBOTS_DIR.
I think it (Line 6) should be as the following.
set(LIBDYNAMIXEL "$ENV{LIBDYNAMIXEL}")
Regards.
I have a dynamixel XL430-W250 and ran into issues compiling this package (branch: XL). Is this expected or is that branch tested with the appropriate dynamixels?
Quoting @fedeallocati:
It is possible [to read current speed from the servos], in 3 steps:
- Find for each dynamixel model what is the unit of the current speed field (they may differ for model to model). The issue with this is that not every model is well documented, for example in the Pros I couldn't find it, but maybe with the Dynamixel Software we can get it.
- Add a double field called something like current_speed_unit in the traits of all models, putting the specific value for each one of them.
- Add the functions get_present_speed_m_s and parse_present_speed_m_s both in BaseServo as virtual functions that throw exceptions (like in get_present_position_angle), and in Servo as the implementation and also as static functions available for the models
Hi all,
Following the instructions here http://www.resibots.eu/dynamixel_control_hw/tutorials/simple_example.html, I'm unable to detect a dynamixel XM540 using the command ./build/src/tools/p2-dynamixel -p /dev/ttyUSB0 -b 3000000 list
. I've verified the serial port as well as the baudrate and protocol version of the dynamixel. I'm also able to connect and control it through the dynamixel wizard.
Any other ideas on why I'm unable to detect the motor?
As noted in #5, we should spend some time improving the CMakeLists...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.