View Full Version : [Question(s)] How can avoid the jerking of 6-DOF arm made up of AX-12

02-14-2014, 12:24 AM

We are made a 6DOF robotic arm using AX12A. It is jerky while playing back a recorded motion. (We are controlling the dynamixels using ROS(Robotic Operating System) and ROS-dynamixel library) . What all are the parameters in AX-12A helps to reduce the jerking.

How the Moving Speed and Punch value parameter helps to avoid jerking ?. I am changed Moving Speed parameter to 60rpm, but reconnecting the dynamixel its value is resets. I am updated the firmware again this happens. How can I update its value.

02-14-2014, 12:49 AM
How frequently are you sending new positions to the servos? Are you using a 'sync_write' packet, or a single 'write_word' packet for each servo, to update the goal positions?

I am pretty sure that only changes to the EEPROM range of the control table persist after poweroff. RAM entries in the control table return to default or sensed values at power on.

I know that I had at least two posts describing, in quite a bit of detail, how the algorithm (as I understood it) controlling the AX-12 used the various parameters, but searching for posts by tician containing 'slope' produces nothing. It will take a while to finish digging through my posts to find it.

02-14-2014, 12:57 AM
Found it (http://forums.trossenrobotics.com/showthread.php?5501-Generating-a-sine-wave-angular-velocity-motion-with-AX-12).

02-14-2014, 12:57 AM
Thanks for the replay.. How changing the Moving Speed and Punch value parameter helps to avoid jerking ?.

02-14-2014, 01:10 AM
Again, I ask:

How frequently are you sending new positions to the servos? Are you using a 'sync_write' packet, or a single 'write_word' packet for each servo, to update the goal positions?

How often you send the goal position to the servos has a very powerful effect on whether or not you can achieve smooth motion.

02-14-2014, 02:04 AM
I am using ROS dynamixel library.I am recording joint positions from ROS node and playing back its positions. I dont know which of these 'sync_write' packet, or a single 'write_word' is using

02-14-2014, 11:51 AM
There are lots of dynamixel libraries for ROS, which one are you using?

At what rate are you saving and later replaying the poses? (10Hz, 30Hz, 60Hz. Need a number.)

02-14-2014, 12:46 PM
Also, jerking can be caused by overloading or too much inertia in the arm. Leverage from arm length is a pain!

There are at least two kinds of jerking:
- Sending updates too slow, with enough power, so that the servos go to the next position, and stop, and then get the next command. High update rates will usually prevent this. 60 Hz is good. 30 Hz might be enough. Reducing the speed of the servo movements will also help with this.
- Too much mass/inertia in the system, often coupled with flex (insufficient rigidity) in construction and backlash in gear trains. This causes oscillation and secondary motion in the system that causes the servos to jerk around, trying to get the system to the desired state. Stronger servos, more rigidity, lighter weight, and shorter levers/segments are the solutions for this problem.

02-14-2014, 01:52 PM
Have you guys ever tried calculating the inverse velocity kinematics and programming the servo Moving Speed accordingly for each time step? That's on my list of things to play with.

02-14-2014, 02:05 PM
I heard that someone else seemed to remember claims that the servos tend to overheat if you use the speed control instead of interpolation (see here (http://forums.trossenrobotics.com/showthread.php?6517-3DOF-Quadrupedal-AX-12A-Mech-Fang&p=61523#post61523)). I haven't actually tried it, just something I thought you might want to be aware of.

02-14-2014, 02:34 PM
I think they're referring to using servo speed to control an entire large movement. Say from foot on the ground to foot up in the air with no interpolation.

My code runs at 50hz and calculates the position IK at every frame. It does use the default servo move speed though. In order for perfectly smooth motion those, the servo speed should change depending on the distance traveled for the set frame rate. I believe default is full speed, which may be too fast for a short distance and might introduce some jitter since it may arrive too soon and have to wait. It probably overshoots its position a bit as well.

I'm picturing real-time position and velocity IK at 30-50hz. The servos should move to the correct position at the correct speed for every frame. Ideally that would be pretty smooth

02-14-2014, 08:44 PM
If you send IK updates at 50 Hz, and you're getting a lot of jitter, then your problem is much more likely that the servos aren't strong enough, and/or the build is not rigid enough, for what you're trying to do.

Post video, and perhaps a drawing of the different linkages/lengths, and someone might be able to help better.

02-15-2014, 01:31 PM
No, I'd say my robot is pretty smooth. But things can always be better. If i were to calculate the proper move speeds i could probably dial back the frame rate to like 30hz and possibly end up being even smoother.

We're learning about inverse velocity kinematics now in class so i may try to roll this into our class project since its relevant.