Building a Force Controlled Robot Gripper | James Bruton
HTML-код
- Опубликовано: 22 авг 2024
- I'd really like to build a whole robot arm with force control/feedback. I thought I'd start with a gripper - using elastic tendons between the servos and the fingers so I can measure the force that's being applied. I'm using Arduino and flex/bend sensors to measure the difference in position between the servo and the finger.
You can get the CAD and Code from: github.com/XRo...
① HARDWARE/SOFTWARE
What more important hardware is there in life than the clothes on your back and the cup in your hand. You can get your own Robot X tee or openDog mug at the link below:
Teespring: teespring.com/...
Below you can also find a lot of the typical tools, equipment and supplies used in my projects. Some of these links are affiliate links, meaning, at no additional cost to you, I might earn a little extra if you click and make a purchase.
Lulzbot 3D Printers: bit.ly/2Sj6nil
Lincoln Electric Welder: bit.ly/2UyA576
CNC Router: bit.ly/2QdsNjt
Ryobi Tools: bit.ly/2RhArcD
Axminster Micro Lathe: bit.ly/2Sj6eeN
3D Printer Filament: bit.ly/2PdcdUu
Soldering Iron: bit.ly/2DrNWDR
Vectric CNC Software: bit.ly/2zxpZqv
And don't forget the code for some of my projects is available on my GitHub here: github.com/xro...
② GENIUS
No MacArthur grant yet. But while I’m still waiting by the phone for that call, maybe you might patronise me with your Patreon-age or pick up some of my merchandise. Or, if you’re all out of digital cash just comment on one of my hilarious Instagram pics, pop me a Tweet or generally yell in my direction.
Patreon: / xrobots
Teespring: teespring.com/...
Instagram: / xrobotsuk
Facebook: / xrobotsuk
Twitter: / xrobotsuk
Huge thanks to my patrons, without whom my standard of living would drastically decline. Like, inside out-Farm Foods bag decline. Plus a very special shoutout to Aleph Objects, Inc who keep me in LulzBot 3D printers and support me via Patreon.
Why not join my community, who are mostly made up of actual geniuses. There’s a Facebook group and everything: / community
③ XROBOTS
Former toy designer, current RUclips maker and general robotics, electrical and mechanical engineer, I’m a fan of doing it yourself and innovation by trial and error. My channel is where I share some of my useful and not-so-useful inventions, designs and maker advice. Iron Man is my go-to cosplay, and 3D printing can solve most issues - broken bolts, missing parts, world hunger, you name it.
XRobots is the community around my content where you can get in touch, share tips and advice, and more build FAQs, schematics and designs are also available.
④ MUSIC AND SFX
The majority of the music and SFX used in my videos is from Epidemic Sound share.epidemics...
I want to build a whole general purpose robot arm that's force controlled!
Do IT
Maybe it could be used as an arm for an open dog? Like the one spot mini has
@@mantasdaskevicius9595 that would be awesome, James should also make two attached to the front so it looks like a scorpion
this is an awesome idea however I already see another design flaw besides the fingers getting stuck, over time the wire pulling them shut will eat through the plastic and weaken the thing as a whole, you need to put something as strong or stronger than the cable to protect the whole structure.
If its force controlled you have to do it or not, there is no try.
Cheap idea: use a cam at the joint that the bungie passes over. This will compensate for the change in geometry and keep the force constant. E.g. see the "Nautilus" work-out gym machines, which are named for the distinctive shape of the cam.
Love the return to the serious and in-depth style. Thank you for listening to your commenters!
I can't say I'm following all of this (and I'm never going to build a robot) but it really is fascinating stuff...
This is a totally cool idea. I'd like to see James build a robot that walks up and down stairs, like Asumo Honda.
If you need to make springs stiffer you can just cut a couple coils out of them. It makes fine tuning easy.
This is a common misconception. Maybe you know this and are just talking colloquially, but; The spring does not become stronger with less coils, you simply spread the force over a shorter worklength. 1 coil is just as strong as 20 coils, but 20 coils will be able to stretch over much larger distances and actually be useful. So technically, he could take some coils off to make it "stiffer" but all you're doing is now stretching the individual coils further and thus accessing a part of the elastic deformation not previously reached. So be careful about modding springs like this, lest you eventually reach their elastic limit and permanently plastically deform them. Also, before I forget, if you do need to cut coils off, make sure you do it in the middle ;)
Might I suggest, that if you intend to use the general purpose gripper for picking up food, that you add a requirement to the final design that it be easy to wash with soap and water in either your sink (by hand), or a dishwashing machine.
I think you could get acurate results with this hardware. It's just a software problem.
You need to measure a data set (servo value and bend sensor value) for all the positions of the servos (without any force). Next you go into a data analyzing software and let it find a function that returns the corresponding servo value for each sensor value. The difference between the real servo value and calculated servo value will be the force. And the force will always be zero if the fingers don't touch anything. You can do the same data analysis for different forces and positions if you want to get precise force values (not just a good zero).
You need something like a linear tension sensor, like the type of strain gauge used in a set of luggage scales. You're losing a lot of the servo's force in those springs, when all you need to do is measure the tension in each tendon, and either carry on driving the servo or STOP driving the servo depending on the force needed.
3:58 James Bruton sticks crocodile clips into the female XT60 connectors on his batteries? I'm vindicated!
Hi James! Great video as always. If you are thinking about going the full series elastic actuator route (since you are already starting to scratch the surface of deflection-measurement-based force control with this design), please reach out! I'd love to chat more about it with you and maybe help you in a future build.
Correct for the non-linearity in software.
1. Start recording the flex sensor and servo position
2. Move the control slowly in both directions such that the finger moves back and forth throughout its range
3. Load data into excel, make an x y scatter plot, and fit a trend curve to the data (2nd order or higher as needed)
4. Copy the equation into your code. Boom, you've corrected it in software and you should be able to hold any position with consistent force.
Good idea :) I like the concept of software making up for hardware shortcommings. Could use some Python code to dynamically fit the curve, and have auto comfiguring software.
They used to make (may still do) servo horns called "servo saver" which had a spring in them to protect the servo from being pressed too hard or for impacts, like on steering gear. You could probably make something like that yourself to suit your needs
Is this the moment in history where we need to stop James from making our Robot overlords, or do we continue to wait? 😂
Good job James. Great work!
I'm a little skeptical that the flex sensors are actually measuring “force”. I think they're actually measuring a sum of the angle of the joints along a rough axis, in between the points at which the ends of the flex sensor are attached to the robot. The reason for my suspicion is that if the gripper has something in its claws, but the servos pulling the strings continue to increase tension in the strings, the flex sensors will fail to report an increase of force if the object being held is rigid enough to resist the force and keep from deforming.
Yes of course they are. The force is the difference between the servo position and the actual finger position, i.e. how much the spring is stretching.
James Bruton Oh wait! So you know the position of the servo? Okay. Now it all makes sense. The key being the *difference*, like you said, between those two.
If you explained that during the video, I'm going to feel very foolish for missing it…
Interesting stuff. You went with analog tendons (the springs)... and the knuckles immediately needed cartilage (spacers).
I think your analogy is incorrect
6:50 the problem isn't "too little force", it's the placement of the "bearings" in your finger. With that setup the force applied by the spring is pulling the black part to the *rear* and not down
Man, a dock ock set of arms would be cool. Awesome video, as usual
Your new montage is great! Fun music and sound, and interesting to see the assembly process
I saw somewhere that a high carbon foam was being used on the "finger tips" - the resistance across the foam changes as it gets compressed and that relates (I do not think that it is linear though) to the amount of force being applied.
Then you could drive both opening and closing from the servo without the need for bungees and springs and as a safety feature monitor the servo load in case something goes wrong with the tips.
I see this developing into a prosthetic forearm/hand for a youngster - I know there are 3d printed mechanical units being made by the 3d maker community at present but a fully electronic unit would REALLY be cool for one of those unfortunate kids.
AND it makes all the "right" noises... ;>}
The Mad Man The opensource robot at InMoov.fr uses this approach.
Flex sensors wear out, quickly.....Still brilliant, thought. Love your work
I really enjoyed the format of this video, thanks James!
Just put a strain guage inline with your tension leads. Sandwich it between two cups. Like a mated pair of 3 legged tables. Legs facing each other, strain sensor in between. Pull left on the right tables legs, pull right in the left table legs, sensor gets squashed. Once your setup contacts the object, deflection ceases which means your force measurement is no good when you actually want to measure force applied after stopping.
really good work on video quality , especially the construction sound and music sync in the starting part.
Yeah, I'm seeing a new robotics build where you make the arms from Spiderverse's "Liz" Doc Oc in the making. That would be epic. Especially if you could build some form of AI/Camera into the arms like from your Ultron build.
I'm excited to see where this breakfast machine takes you in your skills.
Now, finally the next part in the big series of metal gear: 2:15
I expect to see these on Bender soon.
you were the one who inspired me to make robots! im only 12 but i have made some 3d printed robots and I always watch your content. Great work!
thanks for watching!
I once bought a P5 VR glove that worked with the same kind of bend sensor. It had IR leds and a base stand that recorded the hands position and orientation, and the bend sensors was to emulate the fingers. Worked quite, especially in Black and White where everything is controlled by hand. The company went bankrupt and support ended, but I still have it. Would be cool to try to get it to run again. Perhaps you can use it in one of your projects?
Please keep doing what your doing.
Reminds me of the robots hands from the old lost in space movie.
Can you also place a linear transducer on the springs to monitor their stretching. Kool build!
I linear pot on the other end of the spring would probably do it.
personally I would make this by putting a linear actuator connected to the bungee thread, but it would be a lot heavier and bigger, but also it would give more force and be synced up immediately.
You should use potentiometers on the joint and mesure the change on a torsion spring.
I'd have to do both joints...
You should create a look up table for the for the forece graph of the servos. That's what you do in racing sims to get the best force feedback on your wheel. there is a program that takes controle over your whell and tests how much time and force it actually needs to reach any position (tested in increments). you could do the same by testing how much the servo has to move to make to get the fingers in a certain place. If you took something like 100 increments for the full finger actuation, you could the controle the fingers linearly instead of the servos
cool idea, better music, better format +1
Music only degrades the video
The format was superb
Well you can still record the calculated force for each pot position with the empty gripper to a list and subtract the values from what the sensor gives right now. Or approximate it with formulas if it's a bit fitting. Improving the design might be easier indeed though :)
Suggestion: use current sense resistors in the motor drive to measure and control motor torque, then you can do away with a lot of the mechanical hardware.
Much simpler approach - let the string before the spring go through a loop on a pot, measure the pot's position - you will have the information about the real movement of the joins comparing to position of the servos ;) You just need to set the diameter to ensure you can cover the length of the line even with single-turn pot.
A slide pot would probably work...
@@jamesbruton Yep, but they are more expensive :) I tried to keep it simple, cheap and relatively reliable. You can also use multi-turn pot, but that would cost the same as sliding, so...
Adjustable spiral tension springs at each joint instead of 'elastics + drag across all' to open them would give an easy way to tune the curve of potential return strain energy. The outside of the hinge 3D print would have to be modified to have a circular cogged adjustment coin at the pivot point though. Wouldn't just measuring the potentiometer of each servo (i.e.. the length that the cord has shortened ) give you the same info as the flex sensors? If not, then hooking the back of each servo to a force sensor for the strain on the cord and adding it to the shortening distance would I think , also it would keep more stuff out of the working area.
I want one of these on a shoulder mount.
A weapon to surpass metal gear servo
New music is great, and good content as always
Well you've made a Spider man theme build........Do I see a potential DOC OCK Cosplay????????????? lol Awesome build James!!!!!!
Perfect timing , James. If you want some fresh and cool ideas for the design of your robot arm, you can check Devil May Cry 5 and the Nero's Devil Breaker 😉
Impressive achievement
Thanks for sharing😀👍
Great work and great explanations!
Nice job
For some strange reason, at this late night as I right this comment, I'd be inclined to use lasers and light sensors in so many ways to determine the position of the fingers, to monitor the size of the items and anything else.
QQ: why not making the tips a bit flexible (on inside, perhaps with a fluid cushion) and measure the force (grip force=pressure) from there?
Or maybe floating finger tips that move a little? Just spitballing.
Hey ! Try compensating the exponential force to actuate the finger in regards to how much it is bent
mind-blowing and easy
my guess without context: You want to recreate the eggs and sausage machine from Chitty Chitty Bang Bang.
About how much filament do you use per month?
Prob close to distance from the earth to the moon
@@rpyrat I said per month not day
@@weirdlines4465 oh right... My team is still trying to work out the numbers then, but our supercomputer crashes each time we try to calculate it...
@8:01 It really looks like you could make that hand walk :)
This is probably a useless nitpick but 5:23 in the arduino code, you are printing servoOut2 twice. I know it's a useless mistake because with should be the same value regardless. Great video. Love the concept
I see it was fixed later on. Great video!
I think if you remove the springs and only see when the fingers do not flex anymore and then you can calculate the force in relation to the torque
Cool,Keep up the good work!
Would love to see some soft robotics projects
Nice project.
ohh this doggy is awesome
Nice, can you expand on how you use only 3 motors to control 6 DOF? Won't it make it very hard to get any precise control as you can't really know the exact position of the hand. or your gripper weaker because the max force will be limited by how much force is needed to get the extra joint out of the way?
I think that the 6 dof is actually a misnomer.
You will be able to move the 2 joints without affecting the actual force being applied at the finger tip.
Yes!! I’ve been waiting for a robotic arm to come to this channel! 6 axis? Will the whole arm be force sensing?
It'll probably be a SCARA arm. It'll be force sensing yes
You should build a tentacle arm now. Air powered since you are messing around with pneumatics anyway.
Hey James
Great great Video. I also really love your open dog project as I'm building a robot dog myself in the same size. You gave me quite some inspiration.
But I really sometimes cringe at your mechanical assembly. I don't know if it's just me but things like just using an undeburred piece of round stock in in the 3d Print is kinda sketchy.
Still love your work keep up the good vids.
Like your thinking
Ah I see the Goldilocks spring. not too hard and not too soft
It's Buck converter, not linear
Thanks, it doesn't get hot at all so I think the heatsink is unnecessary
Nice project! I was thinking about something similar, and had the idea to hack the servos and conncect their internal pot to the arduino so you can read their actual values. You could then use a force resistance or like you mentioned measure the current to determine the force applied.
James, have you ever considered doing a universal gripper with a balloon, coffee grounds and a vacuum motor? Maybe not for this project (though it would work well for eggs), but for any project?
Hi James, Love your videos! I've watched quite a few of them. Like the concept here, but you need to rethink your design. As currently implemented, it is not actually measuring force. Instead you have a very low resolution rotation indicator. think about it... you will see that I am right. at best you are measuring the amount to which the object is compressed i.e. crushed.
I'm measuring the stretch of the spring - the difference between the motor position and the finger position. The result is the force.
These flex sensors are crazy expensive unfortunately :(
I like the idea of this, but feel the flex sensor are measuring more of the arc than actual force.
You seem so productive
Trying not to imagine him with four robotic tentacle arms attached to his back with these grippers attached...
im no genius but i think he should have rounded the edges of the joints so the bungie worked smother.
This is actually very interesting and watching to see how this could be adapted to my hexbot.
Maybe a stupid question but, would there be any point in adding contact sensors to the finger tips as well as using the bend sensors?
BTW have you heard of Nitinol or Muscle wires?
Yes you could add finger sensors so it can close until it reaching the object and then apply a certain amount of force to it.
It's not really force controlled. You're just setting a maximum force to use if the kinematics don't comply.
Instant subscribe.
Amazing :)
It would have been nice to see it pick something up.
maybe a newb question, but why control each finger separately?
Can you design a flying eagle bird drone with this robotic claws
I assume that you can measure how much current servo draws with Arduino, then you wold know the position and how much work servo is trying to do to get there? My uneducated guess is that could be enough information to control how much force is applied to the object?
Yes it might work, but I don't want to directly back-drive the servos and tear the gears apart.
I need bungee cord like this for a different application. What is it, 1/16" nylon bungee cord?
Great Video! but you forgot to show us how it picks something up :D
Why don't you use strain gauges and a sections of a solid piece of metal instead?
Why not use a worm gear to move all three of the fingers instead of servos and steel wires?
why not?
Hi! I’m a high functioning Quadriplegic with very limited arm movement and no hand or finger function I’m on IV Treatments that require dexterity that I do not have. What I would need is a three “finger” robotic “hand” that would grip and release items that are as small as 1/4” in diameter. These “hands” do not need to be fancy at all, just functional. Would you consider helping to make these with/for me? It would life changing!!! Please get back to me. I’d be forever in your debt!! Of course, I’d pay for all supplies needed for this! Thank you in advance! -Lynn Simoneau
You are probably optimizing a part that doesn't need to exist. Rather than using servos, why not just use PWM and a DC motor, which will run until the power is not enough?
Why couldn't you use force sensitive resistors in the finger tips? Then you would know how much force was in each of the fingers and could control each finger that way?
@@evanbotics but he's closing the fingertips around objects?
I just keep wondering how much power is being wasted from stalling the servos in one position. A linear servo would be nice
How do you measure force using the current on the servos? I think that you mentioned it and seems a more accurate way of measuring force.
Do servos pull more current when they're being forced out of position? Is it proportional to the force being applied or just constant?
How difficult would it be to create a bot that tracks its limbs/hands/feet with IR instead of relying on feedback from joints?
I imagine that practically, a robot could be much more precise about where its body parts were if it could see them, as opposed to trusting wiggly numbers from joint feedback.I reckon it would be a whole shubbang to code something like that, not to mention the AI involved. But you've done VR/virtual tracking projects before, so how much worse could it be?
you could use muscles wires but they are not as strong but simpler concept
Nice!
I would use PID control on the joints (with all three parameters, D seems pretty important here), and make your own servo object (in code) for each finger that wraps the raw servo, and sensor and abstracts the PID loop away.
If you find that you need finer measurements than the bend sensor, maybe look at those cheap optical mouse sensors to close the loop. But that's probably overkill for this.
wonder if you could get away with using a lever or gear for the knuckles, instead of the bungie cords?
Hi James.
Thanks for the great videos.
Have you thought about measuring current on servo motors? So, too, can measure force.
Sorry for my English. :-)
He said that in the video.
Yes - but the servos don't back-drive easily.