Giter Club home page Giter Club logo

dynamixel_control_hw's People

Contributors

costashatz avatar dogoepp avatar fedeallocati avatar otamachan avatar pedrodesrobots avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dynamixel_control_hw's Issues

Servo not recognised when using dynamixel_control_hw

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?

Read signed position

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.

What branches for bulk read

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

Improve performance of the control loop

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.

Setting of LIBDYNAMIXEL in CMake

Hi, thank you for publishing great software.

I would like to ask you why you write CMake as the following:

set(LIBDYNAMIXEL "")

In this implementation,the right hand STREQUAL of

if ("$ENV{RESIBOTS_DIR}" STREQUAL "" AND "${LIBDYNAMIXEL}" STREQUAL "")

always returns 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.

Compiling XL branch

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?

Read current speed

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.