Dynamixel Servo Position Feedback

 
#1

Hi everyone,

I have just joined the EZ-Robot community and I am so far enjoying it!

Im having an issue reading a dynamixel servo's position feedback.

I followed the tutorials and successfully connected the servo thru D5 and the supplied plug in.

I have tried the tutorial and sample project from this thread:
https://www.ez-robot.com/Community/Forum/Thread?threadId=6963

However, it doesnt work Frown

Am I missing something? *confused* *mad* *confused*

Can the servo provide position feedback based on the connection to port D5? A code snippet would definitey help Frown

Thanks for your help,

Sadashi

#2

No it will not provide feedback using d5.

#3

Thanks for the quick reply,

is there any tutorial that covers dynamixel servo feedback?

Thanks,

#4

I don't think anyone has implemented feedback because it hasn't been much use or practical. Everyone here uses the auto position control, which makes more sense: http://www.ez-robot.com/Tutorials/Help.aspx?id=180

As for the dynamixel integration, you need to use the plugin here: http://www.ez-robot.com/EZ-Builder/Plugins/view/39

With the auto position control you can link the actions to eZscript events of other controls. Such as speech recognition or camera object detection. Or joysticks. Or wiimote. Or myo gesture arm bands. Or any of the other kabillion controls.

#5

Thanks for the reply DJ,

Well, I need to position feedback in my research (Robotics + Haptics) , so we need to know the position of servos after users' manipulate their positions...

Since it is not implemented, would you kindly point me to where should I start digging to implementing it please?

Thank,

#6

Okay! That sounds like a super fun project.

The code for the plugin is open source, so it could be modified. Someone here may have done it I think. I'll search for you a little deeper

#7

I've been there too. I've plans to use a Dynamixel servo to obtain position feedback, temperature, and torque.

i believe is not possible using only the plugin framework, and without extra hardware.

DJ has a lot in his plate, and no one else asked for Dynamixel feedback, i started to look other low level solutions.

BUT

While we have DJ's attention, i can share my findings/questions:

1) plugin framework:

Currently we have:
EZBManager.EZBs[0].Servo.OnServoMove += Servo_OnServoMove;
EZBManager.EZBs[0].Servo.OnServoRelease += Servo_OnServoRelease;
EZBManager.EZBs[0].Servo.OnServoSpeed += Servo_OnServoSpeed;

but no OnServoGetPosition event or similar, to allow query the servo position.

2) EZB Hardware:

Dynamixel servos have a single Data pin.

The plugin uses Uart1 D5 (TX) and the following SDK calls:

Code:


EZBManager.EZBs[0].Uart.UARTExpansionInit(1, baud);
EZBManager.EZBs[0].Uart.UARTExpansionWrite(1, cmdData.ToArray());



we need to be able to read data too (.UARTExpansionRead, .UARTExpansionReadAvailable)

So the question is how to tell EZB/Firmware to Write & Read on pin D5 ?

#8

1) You don't need a OnServoGetPosition because the position is set and stored with SetServoPosition().

So what you would do is have a button on the dynamixel control that "Get Servo Positions" and it would query the servos and set the positions in the software.

2) The hardware will support reading and writing but not on the same port for obvious reasons.

What you would do is connect the dynamixel communication wire to both the respective TX and RX ports of the selected EZ-B uart. Then, when ever you send the "give me your positions" command to the servos, simply send a uart INIT directly after that command which will reset the input buffer. Pause for a second until enough time has passed to assume the data has been sent from the dynamixels to the ez-b and voila. You now have every dynamixel position in the UART RX buffer.

#9

finally came back to the forums for the first time in about 7 months just to see my Dynamixel guide again :^)

i wouldn't use that guide anymore, it's outdated out the wazzoo and doesn't account for any new changes or plug-ins that may have been added to EZ-Builder for Dynamixels