davetcoleman / clam

ROS software for controlling 7-DOF low-cost robotic manipulator
http://correll.cs.colorado.edu/clam/
31 stars 58 forks source link

Changing Servos #10

Open davetcoleman opened 10 years ago

davetcoleman commented 10 years ago

I am copying this conversation from email so that others can use it...

On Thu, Jul 10, 2014 at 7:54 PM, Nicolas Alt wrote: Hi Dave, We are planning to buy/build your ClamArm. I noticed that you use both TTL and RS-485 servos. Is there any reason for that choice? After all, you need to install 2 busses on the arm. Why not just use TTL servos? (I guess you could connect the TTL signal to RS-485 data+, but that would be quite a hack.)

My response:

I did not design original hardware, only the software and controls and website. I agree it is silly that there are different servos on two different busses. However, I looked into it one time and did at the time seem like the best way to keep the cost down. The lower cost servos, used further up the arm kinematic chain, used one bus, while the higher torque servos used a more expensive version that used the other bus. Let me know if you find a better combination of servos. Thanks!

davetcoleman commented 10 years ago

Nikolaus then wrote:

since we did not need to go for the lowest possible costs, we took MX servos. Now we have them all on one bus (1-wire), and some of the joints could even turn more than 360°.

That's great! What is the increase in cost? Using just 1-wire is a much needed improvement. Do you have any documentation we could put on the website?

Looking into ikfast, I found your post about on the OpenRAVE mailing list about generating the code. Have you eventually solved these issues?

I got it working with 2 decimals, yes. It was so long ago, I'm not sure what the status is now.

You are now using only 2 decimals for the rounded DAE file. I assume you had to go down that much in order to make ikfast say its magic message "INFO: found 3 consecutive intersecting axes links[8:13], rotvars=[j4, j5, j6], translationvars=[j0, j1, j3]" or so.

Correct

However, the model accuracy of the arm translations go down to only 1cm like that. So I experimented a bit with rounding in the DAE file. It worked for me to round the angles to 0 decimals (then you get exactly 90°, etc), and keep the rotation axes and the translations at 5 decimals.

So you only rounded part of the URDF, instead of all the numbers? This seems like a good improvement. Except 0 decimals seems like it would loose a lot of accuracy.

However, for other reasons I had also changed the orientations of the axes in the URDF before, and I made sure the 4 lower and 3 upper joints are really along one line. There were small translation deviations (like 0.0001) in the URDF before.

Can you pull request those changes back into this repo please?

If you gained some more insight about how to make the ikfast code generation, please let me know. If you think it helps, I can of course send you my code/results.

Thanks for the report, committing it back would be great!

nalt commented 10 years ago

About the servos:

We are now using MX-28T, MX-106T, 2xMX-64T, 3x MX-28T (in that order, from joint 0 to 6). The MX-28T is currently the smallest usable MX model - there is an MX-12W, but it is low-torque/high-speed. At the shop I checked, the MX models cost <10% more than the respective AX/RX models. We needed to upgrade from the AX-12+ to the more expensive MX-28. However, the position sensors of the MX models are also more accurate.

For these upgrades of joints 0 and 6, the drilling pattern in the ground plate had to change. To connect servos 5 and 6, there is a connection frame called FR07-X101. We are designing a 3D printed part which ensures that the axis of servos 5 and 6 are aligned.

I will upload a repository for the documentation as soon as we are done.

Wouldn't it be better to create another issue for IKFast?

Best Regards!

davetcoleman commented 10 years ago

Please do share, we have plans to rebuild the hardware ourselves.

IKFast - sure, please open one.

nalt commented 10 years ago

My repository is here: https://github.com/nalt/lmt-clamarm. Sorry for the modified structure...