Love digging up a horse and beating it again? Well fellas I'm here to help you out!
Lets start another up to date discussion about the use of, and the support of, Dynamixels and the HerkuleX line of professional servos. I'm moving up a level with some upcoming projects and steering away from the hobby style servos. I've spent days researching, using geared stepper motors, geared DC motors as servos and have come back full circle to serial servos. Due in part, by all the unknowns and unreliability associated with creating a servo from scratch.
Tell me about your success and failures of using the Dynamixel and HerkuleX servos with EZB. Please be detailed in your experience and add something to what is already written in the prior threads about subject. What needs to change/improve for better support? Perhaps this is adding to existing plugins or writing new ones? Speaking of plug ins (this is probably another topic), but i wonder if there would be more incentive to create plug ins if there was a pay for development? Like how the app store works? Just a thought there.
I really believe in everything EZ robot and want to continue using the products, because well its so EZ and the results are amazing. I'm well aware the majority of sales is in the education market for EZ Robot and therefore guides their company. But, how can we work together as a group to build support for the next level of servos and professional robotics? And ask ourselves what is the motivation to do so?
Asked
— Edited
You bet ezrobot is focused on education, and has been since day 1. Are you saying that you've learned nothing using the platform?
So my design includes mx 64 servos , 2 for the elbow joints. These run of of Ttl logic.
Then I was using the classic ax12a servos for elbow rotation and wrist rotation. These should be able to run off of the same buss. In all the robotis videos I have seen there are all different size dynamixels including the ax12a daisy chained together and working. However....
That did not work. And still does not. I then upgraded the ax12a servos to the mx 28t to be daisy chainable. That seems to work but the resolution of these servos is much greater than standard servos so the positioning is way off. I will dig back thru my notes to see what else is not working correctly.
I can say with 100 percent certainty after spending 2,000 on dynamixels that there are still a lot of issues when trying to be controlled with ezb. I have a bunch of ax12a servos laying around now.
Edit: digging back a little the ax12a has a different bit resolution (8) bit? 1024 count while the mx series servos have (12)bit 4096 resolution. There was no way to control the 2 different types having the different resolutions. I could control one servo or the other. As I dig more I'll post more. This issue as well as a couple of personal issues has caused this project to stall.
The resolution can be fine tuned as well in the plugin. As mentioned in numerous threads and your thread, the plugin can always be modified to change the maximum servo position globally of the entire ARC project.
You bet I've learned alot!
So with the plug in I should not have any issues with any of the dynamixels (as long as I don't mix versions unless i code)? Thats great news. My project will use the $500 a piece Dynamixel MX-106 servos. There are two flavors, the rs-485 ver and the ttl ver, I'm assuming the ttl ver will be the one I need?!
@kamaroman68, so you are saying that you are unable to get the fine resolution (12bit) with the EZB? I assume it defaults to the 2 degree per step in ARC? Have you tried getting this controller and have the EZB control it?
http://www.trossenrobotics.com/p/arbotix-robot-controller.aspx
I like the HerkuleX but its a lot of plastic (horns, gears etc), the Dynamixels have an all aluminum choice. My project will have to be continuous duty for 52 weeks out of the year, and these servos offer warranty as well.
the arm:
http://www.trossenrobotics.com/widowxrobotarm
has mx64t, mx28t, ax12a all in the same bus.
If i read correctly after the upgrade you have a mix of mx28t and mx64t ?
How many servos ? did you get success with ARC ?
Here I thought I'd have relaxing evening at home... nerd life!
@kamaroman68 will like this update.
Each servo can be configured individually per protocol version and per max position. Also, the global ARC servo resolution can be altered to provide an increase of resolution in all native ARC controls.
This means you can set the global max value from 180 to 360 to provide double the resolution. You may also set it to 720 for 4 times the resolution, etc...
Now I just have to wait for the servos to arrive :/
Thanks so much DJ for your continued commitment. Once again EZB has raised the bar.. it's all in the code! And that was crazy fast!
I'll let you know how I get along.
Another thing about these servos and ezb is that I'll never realize full potential of them. Meaning for example, position feedback, temperature... etc etc. This is not a knock down of ez robot or the ezb, after my beginning issues with ezb I have come to like it quite a lot. I tend to be an over thinker which sometimes hinders more than helps. I just don't know enough about this type of coding to make plug ins. I am a factory controls engineer working with Allen Bradley plcs and Hmi"s. Much different.
Again I am no longer using the ax 12a servos so no need. Thanks
As for protocol 1 and 2, does this relate to ttl and Rs-485 protocols?
Dynamixels come in two versions the TTL version (3 wire) and the RS-485 Ver (4 wire). On the plug in description you have "Each Dynamixel servo contains a microprocessor. The microprocessor is told what position to move the servo into over a RS485 protocol."
I just want to be clear on my understanding.
@Dj, ok sounds good, I'll see what we can get going with this now i got the right one ordered! Thanks!
However I can not move the mx 28t dynamixel servos. I can not make the leds turn on and off on the mx28t servos.
My dynamixel bus is left arm mx28t - mx64t - mx28t
right arm mx28t - mx64t - mx28t
Again I can not communicate with the mx28t servos at all.
Thanks
Addressed all servos using the utility in ARC.
CAN NOT communicate with the mx28t dynamixel servos.
:elbow
Servo(v5,0)
sleep(1000)
servo(v5,180)
sleep(1000)
goto (elbow)
I changed max position like you said... when I put 4096 in the servo does nothing.
When I put 1024 in it goes 90 degrees.
When I put 2048 in it goes 90 degrees.
Currently working with v5 which is a mx64t dynamixel servo. Sorry but it does not work. Shoot Id let you remote into my computer if you wanted to.
Too make things simpler for my small mind lately, I have simply put one servo on the line mx64t nothing else addressed v5. I can communicate with it but cannot get it to travel over 90 degrees.
Interesting find... when I put 4095 in the servo works again but still 90 degrees only. Thanks again
Chris
It may come to that. Please expand on how that works. Do you have program predefined movements in the arbotix controller and then "call" them from ARC? For example sounds simple but apparently not....
"Robot take this"
Gripper opening as the shoulder joint rotates upward. Elbow begins to bend out, wrist rotates into position, gripper closes on object and stops. Do all of these movements need a predefined code? Thanks
Chris
BTW id much rather script all of that in ARC. How hard was the learning curve for the arbotix. For some reason I am picturing arduino type coding.
You have to get a piggy back board to go onto ArbotiX to use any of the dynamixels other than the 12
But still going to try the plug in and work through that first.
@kamaroman68, I'll post my progress here.
Dynamixel Information
Most Dynamixel servo documentation states the operating voltage is between 9-12 volts, with optimal being 11 volts. Check the documentation for your dynamixel servo model to ensure your power source is sufficient. If you experience unusual behavior of Dynamixel servos, the first common issue is insufficient power. Symptoms will be flashing error LED's on the servos or non-operation.
Dynamixel plugin can be found here: https://synthiam.com/redirect/legacy?table=plugin&id=39
If ezrobot did not wish to work toward a resolution, I would let you know - even for support of this third party product.
Please be patient until a resolution is achieved. It'll happen and get you up and running.
Again we know you are super busy and much appreciation for your time.
Please ensure you have closed ARC and restarted before installing the new plugin to ensure the Windows .Net environment has not cached the assembly, otherwise you will receive an error as discussed in the past.
:elbow
Servo(v5,0)
sleep(3000)
servo(v5,180)
sleep(3000)
goto (elbow)
And for troubleshooting purposes only 1 servo on the line. V5
And 4096 or 2048 in the max position equals the same 90 degree movement.
Chris
I verified the values are being sent - all the way to 4096 and. When I set Servo(v5, 180) and the Max Position is 4096, i can visually see 4096 being sent to the servo via the protocol.
Please check if there is a "reset to defaults" or "factory reset" or some option that you can set for those servos.
I even ran a test for 4 hours straight with the servos running in a loop back and forth with no issues.
In all honesty I took the servos out of the box and used ARC utilities to address the servo ID. I don't know of any other software reset with these servos. I will see if I can google anything about resetting these types of servos. Thanks again!
Chris
I reinstalled the other mx64t servo addressed as v2. To clarify I physically connected the second servo to the buss and took the v5 servo off the buss.
I will now say that the second servo is working. But when I put 180 in the servo actually goes a full 360.
I need to look into finding software to reset a servo or something, as mentioned by DJ in an above post. Im glad to see some of this being resolved. Thanks very much. I will let you know my further progress.
Chris
So 180 may be 360 degrees on a third party servo-motor.
However, i'm not sure what else i can do at this point for trouble shooting. I believe your results, however i'm unsure what could be causing them as i see the correct values being transmitted to the servo during testing.
In my tests...
If Max Position = 1024, then 180 = 1024.
If Max Position = 4096, then 180 = 4096.
See if there is a factory reset or something that could be causing the limited range.
Chris
Do you have software to configure the servos?
All good progress so far.
Just found the software as well. Downloaded it. Of course it needs to be connected to a servo to step thru the setup steps. Anyways thanks again, it looks like this has been cleared up on the ez robot side of things. I will update as I get more working and when I get an adapter.
Chris
Will you should be able to use EZ robot directly without the arbotix controller. I have confirmed it with one of my servos. Now Im sure for whatever reason the other servos fault are my own. Will keep everyone updated.
Stay tuned
Found out why I could not communicate with my mx28t servos. Factory default baud rate for these servos are 57,600.
MX64t factory default baud rate is 1000000.
Now I guess I need the usb2dynamixel adapter to change the baud rate of my 4 mx28t servos. What a pita.
You have no idea the past 6 months I have had, no idea! I have made so much progress in the last 2 days. It has really lightened the mood, and actually put a smile on my face. Im hoping the new year changes for the better. Thanks again for all you do!
I'm working on the plugin to change baud rate now. Shouldn't take much longer
Edit: I won't even be able to tell anyone about this project for a year :/ but happy I get to stay with the EZB for testing!
Will the mx28t servos come default 57,600 keep that number in mind. It comes in very handy and with DJ's update you will be able to change it to whatever suits you.
Of course the price is not for the faint of heart, but you get a one year warranty with your purchase!
I'll be starting to figure out using the virtual servo feature with my DC gear motors today. I hope I have the success you have worked for. Alan (thetechguru) was kind enough or work up a Example Project about using Virtual Servos with motors and posted it in my project thread. Did you use that Example Project for working through your scripting with the virtual servos?
Whether DJ gets to it before another developer takes up the reins and writes the plugin is the question. Lots of stuff on DJs todo list, and supporting 3rd party stuff is great, but tends to get less attention (reasonably so).
Alan
Alan
https://www.ez-robot.com/Community/Forum/Thread?threadId=9789&page=1
If i understood well, the IoTiny does not have UART ports.
ARC help:
Code:
Dynamixel @ IoTiny:
The Dynamixel plugin code uses the EZ UARTxxxx API methods, to support the IoTiny needs to use SendSerial API method.
DJ can validate my assumption.
The plugin can be modified to use one of the digital pins, however. The only limitation would be the max baud of 115,200. That baud should not be a problem, as it's still considerable Fast and actually will be more reliable than the default 1,000,000bps of some dynamixel servos. The 1mbps actually has quite a bit of frame errors in my testing IF data lines are routed near devices causing electrostatic interference (i.e. Motors and high frequency CPUs or power supplies).
Great to hear you got some cool stuff to come in 2017!
Looking forward to see what you are up to...
I am waiting for my 3D printer being shipped to get stuff going...
*superexcited*
click here: https://www.youtube.com/watch?v=6v-mMH-mjeM
But does demonstrate the importance of how powerful these servos are! Use caution to keep from maiming yourself !
I don't want to create another thread as this is still on topic. Do virtual servos support invert direction? I can seem to get a dynamixel to invert on the camera panel.
So many variables in this set up want to rule out broken plug in first before I run down thru the list.
I switched laptops and new dynamixel and working again!
Also dynamixels do invert direction as talked about above thread! Yay.