Describe Your Robot Arm For Kinematic Robot Skill
We are in the process of developing a dynamic configuration system for robot arms, which will be compatible with a variety of robot arms and joint numbers. We kindly request your valuable input regarding your robot arm configurations to make this system as versatile and effective as possible.
One of the critical aspects of this project is understanding the layout and specifications of various robot arms. Your insights and contributions will significantly aid in developing this dynamic configuration system. Here's what we're interested in:
1. Configuration Description: Please describe or provide a picture of your robot arm's layout. Share details such as the number of joints and a brief overview of each joint's axis of motion. For example, does the base servo rotate the arms UP/DOWN, LEFT/RIGHT, or have any other specific functionalities?
2. Joint Axis Information: Provide specific details about each joint, including its range of motion, degrees of freedom, and any unique features or constraints.
By sharing these pictures or details about your robot arm (or plans), you can help us build a more inclusive and adaptable system, accommodating a wide range of robotic arms with different configurations. This system will open doors to numerous applications, including object manipulation through camera detection, remote control via hand tracking in VR, and many more.
Feel free to reply to this message with your robot arm details. Thank you for your time and expertise!
Be nice if it worked with a standard open source 3D printed arm with cheap PWM servos so we can all build them. Maybe something like the eezbotarm https://www.thingiverse.com/thing:1454048
I would advise against that robot arm because the second joint is lever-driven so the kinematic calculations won't be accurate. Can you post a different robot arm that uses a traditional and less complex assembly that you would like to build?
Reviewing that 3d model, i wonder if the lever is equal on both sides so it would be equal degrees. The challenge i'd be wondering is if the servo moves 10 degrees, does that result in the joint moving 10 degrees? The servo's rotation is critical for kinematic calculations.
This one would be extra easy to configure: https://www.amazon.ca/Mechanical-Analog-Steering-Manipulator-Industrial/dp/B081FC4Q52/ref=sr_1_12
I have all the pieces in my busy box to build that robot arm. The challenge with the cheap 996 servo's is that as soon as you have 6 DOF they don't have enough torque to barely lift themselves let alone hold an object heavier than a feather. I typically upgrade it with some 25Kg servos for the load bearing servos and they work reasonable well. You can see one on my roomba.
https://www.youtube.com/shorts/5ua8yFFzz28
edit I wonder if @Jeremie could come up with a quick design using EZ-Robot parts as most of us have these laying around. The dome from Six or Adventure bot with pegs around it may make a good base and the Claw from JD or Roli. Its opensource so we can all print the components. Just not sure if Servo's would hold up at 6 DOF either.
lol I wouldn’t be caught dead using the 996 servos hehe. Id swap them with ezrobot hdd in a heartbeat.
and yes the hdd servos will hold more than 6 dof. We’ve done some funny stuff with them plus they have stall protection
Maybe something like this.
Thank you, @nink, for confirming that this is a feasible configuration for the dynamic system. My reason for asking was to better understand the diverse configurations involved in constructing the 'kinematic builder' or 'joint builder.' I'm interested in exploring the various setups that can provide insight into which values and settings should be made available to the user. Striking the right balance is essential; too many settings can make the interface overly complex, while limiting them to popular use cases can simplify it.
Not the best robot arm I have used and you have to slow servos down or it literally falls apart but hey took like 30 minutes to get a somewhat working robot arm. I think it needs someone smarter and with more patience than me to create a working control panel that doesn’t allow the servos to smash into each other or objects when moving. It was able to lift weight of a servo and manipulate an object.
Do you think it could lift more if the rotation servo before the gripper was removed? I don’t see the use for that gripper as the arm can rotate from the base anyway
I honestly didn’t weight test it just picked up a servo cause it was on my desk. The rotation servo proved useful as I was trying to draw on my iPad with the pen.
Okay but there already is a rotation servo at the base. So it’s redundant. I don’t see how it would benefit a kinematic solution. I do it it would ever get used by the system because the base rotation servo would take priority as it moves the entire arm.
also that would make the gui designer super extra complicated for you to use. I think it’ll be best to leave it out as it’s extra weight that doesn’t have an advantage. Let me know if you think otherwise if I’m missing something
What do you think about developing a skill that could control an arm that has both DC gear motors with encoder feedback and servos? DC motors are strong and quick. They are good to use on big arms at the joints that need to move a lot of asymmetrical weight quickly, like the elbow or shoulder of a human arm. Servos are good for precise and careful movements like positioning and griping. like the wrist and fingers.
The arms on my full sized Lost In Space B9 Robot is built with both DC motors (at the elbows) and servos for the wrists and claws. They are strong and quick and work a lot like human arms (about the same size and weight). However it was a struggle in ARC to get the dc motors to work in unison with the servos to look like natural arm movement. I ended up using ARC's auto positioning skill for the servos and placed scripts in it to read encoders and move the DC motors. I had to place these DC motor scripts in the proper AP frames that moved the servos. I hope that makes since.
Good point and it was just an evolution as I was playing. Initially in top photo the gripper was mounted vertically under the rotation servo so I could rotate the gripper to pick up a pen from the table. I’m the second photo I just moved the gripper so I could write with the pen. Could you reach every point on a horizontal plane without the second rotation server if I just mounted the gripper sideways? I think you could but I don’t have inverse kinematics cool
You will soon nink haha
dave, the encoders will need to be connected with a robot skill that converts them into servos. That’s possible with kangaroo and saber tooth.
so I’m mocking up the designer. You’ll add each joint with parameters that define what axis it moves and the offset. I’m trying to make it easy friendly. It would be nice if it created a graphic as you did it. So I’ll work on that next.
The dimensions from joint centers is crucial so get your caliper out. No guessing or it won’t work. Has to be accurate to the mm
ok this probably won't work with EZ-Robot_Arm as there is lot of play in it. I think you will need something more rigid to calibrate this with screws and aluminum horns / brackets like the initial Arm you posted with EZ-Robot servo's.
It’ll work but not accurately. You see, the only thing the system knows is the joint angle ranges, distances of joints, axis of joint, and the target end effector position.
There is no way for the computer algorithm to know if the arm ks saggy from plastic clips. Of course, you can pretend to guess by adding mass to a simulation and predict the sagging. But that’s going to be wrong as often as not trying to predict haha. So a lot of effort for less reliability.
To get the most accuracy out of this, we’ll need a robot arm that doesn’t sag. Even the robotis open manipulator sags on each joint a little, which causes the end effort to be closer to the y axis (table) than expected. That’s the similar result you’ll probably get with an arm made of ezrobot plastic servo clips.
I made a quick arm that is a little more robust. I had to use a mix of 35kg servos and ez-robot servos as it has a lot of weight to it. It’s 7 DoF because I added one for the gripper and 2 in the Center but I can remove both of these if not supported. I put ez-robot servos near the end and on swivel and gripper and rotary base. I hot glued a camera on the gripper because umm why wouldn’t you!
Okay nice! The second servo is redundant if you had another metal bracket to extend that arm to replace it.
A good test to see if you have more joints than needed (or not enough) is to grab the end effector and move it around the table to ensure it reaches the areas.
Oh, one more advice... the upper arm (closest to the rotation base) should be longer than the lower arm (closest to the gripper). You'll be able to reach inward toward the home (0, 0, 0) coordinate if the lower arm is a bit shorter than the upper arm. It'll also help your gripper hold more weight by having less mass on the lower joint.
I have a stack of brackets I purchased from China a few years ago so I will have a play with some different configurations. I really hate this gripper, why is this garbage claw so popular on robot arms? I will spend some time on thingverse and see if there is something a little more suitable.
Okay i have a GUI for designing the joint definitions. Here's a screenshot of how it'll work...
From the image it looks like 3DoF will be supported in calculation or is it 4DoF including the rotary server at the base (not shown in GUI). For the last servo that connects to the gripper will we measure to the end of the gripper? Should the servo range degrees include max and min or is this just set up when you configure the servo and you put what the delta is between max and min? What position will every servo need to be when we set this up or is this the offset degrees. Would it make sense to set a starting position for each servo during calibration (ie 0 or 180) ? Depending on the way the servo is mounted do we need to be able to specify if 0 degrees is forward or if 0 degrees is backwards?
Eak, lots of question before the chicken laid the egg
You can add as many joints to customize your robot arm. Press the ADD JOINT button to add. Or press DELETE to delete the joint. Yes. Each joint/bone has a length. No. The center of the servo range is used so you have a full range that starts from the center. You calibrate your servo attachments. Yeah i should probably add an inverse button there so the direction of the servo. It's also missing the actual servo port too. But that's because it's not done - it's a UI that i'm using to test the whole system with simulation before adding the final piece. I'm doing this robot skill on my own so it's a part-time gigThis is the latest version. You can see the joints to make it more clear of where the joint starts and the length of it.
I have a 3d printable arm I designed for my online courseware classes. It was modelled and is set up to begin in this configuration:
Base Rotation (180 degrees) First Joint (90) Second Joint (120) Wrist (180) Gripper (45) (No rotation on end effector yet)
Assembled and First test:
Short movement cycle:
Will, noice. That's a perfect 3d print model - thanks for sharing. this robot skill will work well for it.
I added the ability to move joints up and down in the arm for reorganization...
Hey @will so are you going to share
@nink There will be several robots offered in my upcoming online courseware, including this one. Downloadable files will be available for purchase on my ecommerce store when they become available.
Will, I’m glad to hear that you’re starting a course. I’m excited to see what comes of it! Now I know why you’ve been so busy
I found the robot arm on amazon Canada available without the MG996 servos for a lower price (but order comes from china) also found it on aliexpress but they charge for shipping. https://www.amazon.ca/misppro-New-6DOF-Mechanical-Robot/dp/B0C4924JPT/ref=sr_1_4 https://www.aliexpress.com/item/1005005606163486.html I don't know these vendors so don't @me if they steal your money or send you a bad product.
If you scrounge around Thingiverse you can find all the parts to print. Here is a sample list I have not printed any yet. https://www.thingiverse.com/robotfoot/designs #U Bracket and servo Holder built in horn (I think) https://www.thingiverse.com/thing:4544347 #U Bracket desgined to work with Horn https://www.thingiverse.com/thing:4544344 #servo holder to work with a bracket https://www.thingiverse.com/thing:942114 #great collection of servo brackets https://www.thingiverse.com/thing:4179067 #gripper guards and a rotary base, Ubracket
Okay so it seems to be working. I am testing it with the robotis open manipulator, but i need to build a custom arm to make sure it works with that as well. I'll make one with ezbits and i'm sure it'll work fine. This is the configuration for the open manipulator and you can see it working really well....
I am really looking forward to this. I have struggled in the past trying to get a robot to pick something up. I have to think armed with this, object recognition and perhaps a D435 to accurately pinpoint object location I will finally be able to teach Roli to play fetch. https://synthiam.com/Community/Questions/How-do-you-pick-something-up-20110
You can load and save configurations as well now...
Seems like it's ready to go. I'll have to get someone to create a manual page for it and publish it. I can probably do that on Monday unless I find time this weekend. I'll be at my buddy's garage watching hockey tonight so i'm done for the day!
Neat - i wanted to try quickly with a JD robot. Even though it's only 3 DOF + gripper, it works well!
This is the JD config...