Building a Lower-power Linear Actuator with Arduino | James Bruton
Вставка
- Опубліковано 14 жов 2018
- Building a Lower-power Linear Actuator with Arduino: quite a few people have asked me about scaling down openDog to make it lighter and cheaper, so I thought I'd discuss the options in this video. I'm using a motor with an encoder and an Arduino Uno to control position and velocity.
You can get the CAD and code from: github.com/XRobots/Actuator_L...
My open source robot dog project. It includes everything from 3D printing to coding, including a lot of CNC cutting and installing all the electronics myself.
If you want your very own four-legged friend to play fetch with and go on long walks then this is the perfect project for you. This way a dog can literally just be for Christmas. The full CAD is available at the link below for anyone that’s keen to build their own.
github.com/XRobots
Get your openDog T-shirts: teespring.com/stores/james-br...
① 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, 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
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. www.lulzbot.com/
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 UA-cam 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.epidemicsound.com/xrobots - Наука та технологія
I propose we call the scaled-down version of the Open Dog project Open Pup.
I second this
LOL yes! I 3rd this!
im gonna leave this dot(.) in case this gets many likes...
Opup
I 4th this.
What a great series of videos. I've been working on building a smaller quadroped, and am planning on making my mk2 version roughly 1/2 the size of OpenDog using a combination lead screws and custom planetary gears as well as pancake brushless motors like the ones I use on my drones. Thank you for the great vid!
James knows this, but for anyone that was interested in how to tune the pid controller for not quite reaching the set point. That’s the integral value being zero. The i in pid will gradually increase the power if it’s not strong enough to reach the set point, so having it zero means that it won’t be able to speed back up after its started slowing down.
James awesome video as usual.
Awesome example of making a smart cheap linear actuator...useful for many projects..Thanks James.
Love your work and quality content! As a robotics dev, I'm inspired by your passion!
Yes, this is nice. Especially, I think that most people like to make such a robot more to learn, as a hobby and to show to friends. With these components it becomes much more affordable and it still allows to learn about mechanics, electronics, try all the algorithms and future machine learning to make it walk, automatically follow a path, recognize the environment etc.
This is fantastic 👏 as always, I'm amazed you did this for breakfast as a small 'break' from the big project lol 👍
Its great to see you doing more hobbyist level content. thinks like open dog are great but I enjoy the projects that I can build on a hobby budget.
Thanks James . Your leading the way forward
Thanks for sharing this. It was good to see a cheaper alternative to ball screws on the Open-Dog.
Thanks for this breakdown, awesome!
Twelve 2kW motors means this robot has a max power of 24kW...that's a 32 horsepower robot!
yes that's the peak, but they are limited to 30A at 24V at the moment and it looks powerful and fast enough
I work with horses. The power of 32 horses? I really cannot imagine this touches any reality.
@@computerjantje rather hilariously one horse is actually equivalent to 15 horsepower. So it's about the same as two horses(?) which is still pretty scary
Lol. Just shows you the flaws that can arise in measurement techniques.
Still, it worked at the time to establish a point of reference...
@@jamesbruton James, It seems, then like you could make a saddle for Open Dog. You know you want to ride it.
(whispering) Doooooo iiit
Ask Colin to help with the seat design, or ask him to ride it if you want a crash test dummy. :D
Also this makes me want to expect galloping not just walking from the OD.
Thanks for the info in this video, I was trying to do something like this to mimic hydraulic functions on an R/C excavator.
Cool. Can't wait for the next Open Pup video.
Great video James, really useful to go through, and I learned some stuff that I didn't pick up from your other open dog videos, very interesting! I would love to see someone build a mini open dog!
thanks!
"Open Pup"
I APPRECIATES YOU BROTHER,YOU'RE LIVING MY DREAMS.
Thank you James
looks like a good start on a way to do this on a tighter budget, for a half scale project. my experments with planetry gears have not been a lot of success so I may look at going this way, though I may want to gear down some, since the current motors I have a re much to fast.
beautiful design
You're just procrastinating programming the walking gait.. ;)
Well that stuff is a ball buster, essentially still the final frontier of robotics.
I love that coupler for the motor
Woof woof. Doggy wants to go walkies.
This is the greatest channel ever ! hands down...
James is the Elon Musk of "just do it" robotics technology education. This guy needs a Knighthood. Seriously.
In fact, i bet Elon Musk watches this channel with his kids.
thanks!
Your welcome James ! ... I love all of it !
Boston dynamics has just upped the game.
We want to see it dance!!!
You have got a good range of motion, and once you are able to lift the legs,
I am sure you will be able to choreograph something.
Cool idea this makes it much more realistic for the amateur, I think I figured that there was several thousand in motors and controllers in open dog, this should significantly reduce the cost.
Beautiful machine
You also need a dead zone. Most actuator drivers have a dead zone. If you don't have a dead zone your motor could end up riding the edge all the time and kill the motor or the battery power.
Yep - you could set a condition that if the output of the PID is less than some amount, then just make it zero.
You again at top of my searches... ok ok subscribing 😒
Good stuff
I would love to see more tutorial for this where you show different components of a robot, I hope you can create more videos like this (e.g. bending a leg of a Robot, rotate head, tilt, etc. ) More power!
I would like to do that
Stay subscribed or become a Patreon. I'm not saying he's planning on it, but he has alluded to it.
To remove the final position error of the motor, increase the Ik factor of the PID by just a little bit. If Ik is 0, you only have a PD controller, not a PID controller.
Exactly. Integral gain is what controls the accuracy of the final setpoint, derivative gain controls the responsiveness to quick changes and proportional gain controls the overall speed. James (I hope he reads this) your should also tune your PIDs using some method like Ziegler-Nichols instead of manually
The main problem with brushed motors is that they have a very limited speed range. For robotics it's important to be able to move from very slow to very fast. Otherwise the robot won't be able to react fast enough to compensate failing balance while still be able to move slow enough to do smooth tracking movements.
This is very visible in all those cheap servo driven robots: If they are able to move fast, they are also quite jittery. And they are generally open loop systems, so they aren't able to balance and use fixed, precalculated movements.
So I don't think that brushed motors are a good replacement for BLDC motors, unless you don't want a real balancing robot.
That is true, but it's fine for someone who wants to learn on a budget
I disagree with this. Just because one uses brushed motors does not mean one cannot set up position feedback systems and make it closed loop in that way. You can also create custom motor controllers that vary the voltage in order to vary the speed for slow movements that are smooth tracking movements and crank the voltage way up for high-speed movements. Or to slow the speed down you could simply pulse width modulate the current flowing to the motor to slow it down that way. I think you are too quick to rule out brushed DC motors which are way cheaper and because they're so cheap custom solutions and accommodation should be made in order to use them as effectively as brushed DC motors. This can and should be done and can give you professional results no less than a brushless DC motor would give you.
so... uh... boston dynamics made a dancing spot video...
*THEY'RE ONTO YOU!!!*
Awesome!
Great Job! that's nearly an infinite pinion :=)
Hope id have those recourses ur the best thank you
I've done a bit with quadrature encoders with Arduino before and found PJRC's / Paul Stoffregen's "Quadrature Encoder Library for Arduino" to work quite well.
There does exist dedicated chips for quadrature encoders, but these are pretty difficult to source in the age of super cheap microcontrollers.
good video. thanks.
Great video. I initially thought the encoder difference was a partial derivative dx but since the loop is running at a constant time interval it’s actually dx/dt with dt being a constant 20ms. BTW James, do you have a dev server running on a raspberry pi? If not, that would be a cool and easy project :)
Ball Screws! Count me in.
i had a project when i was in college that i made a bi directional dc motor using astable multivibrator circuit driven by 555 ic for pwm, if i could get a gear, belt, linear actuator guide, i could theoretically make a small OpenPup (as name suggested by fellow commentators). I wanted to make one using the small drone motors.
Hello ! How can I put a switch that tells the actuator to finish the movement and then go to the other direction? Thanks so much!
Yeah, Awesome, Cool! (first edited)
Which type of actuators has the spot robot by boston dynamics?
I heard the magic words that just made my day: "...a humanoid robot in the future....." YES YES with James on a humanoid robot project, the world will finally get an affordable build-able help around the house (Sonny, I Robot 2004 C3PO, Stars Wars). Or if the autonomi is the bottleneck then at least we can have a remote control robot like in Surrogates (2009). Boston Dynamics are good but they are very very slow considering the size of the team and the money they have. I set my hopes on James :) :) :)
Have you not looked at his other bi-ped projects?
Ofcourse I did. I just am hoping James will eventually put a lot of knowledge and energy in an new and better humanoid.
A T-800 endoskeleton could be useful, too, lol.
I also work on a belt driven linear actuator if you interested we could discuss it in detail.
Hi James, do you think it's conceivable to make a miniature version powered by servo motors, rather than using a brushless motor / ball screw combo? Of course this would come at the cost of performance, but it would be a lot cheaper. Right now I'm doing calculations to figure out the joint torques, but in the meantime I'm just wondering if an expert such as yourself thinks it would be possible? Thanks.
I take it you've seen the new Boston Dynamics UpTown Spot video, James? Am really enjoying the progress you are making. This has to be my favourite project to date.
yep - looks good!
SAME!
I was a little disappointed with that video. It was impressive, but I feel like Spot could do a backflip or at least a handstand using its gripper to balance.
AHHHH, I've been waiting to see OD walk! Now it's another week....hopefully...if we don't get another 'filler' video.
Yep - it 'walks' in part 12, but there's a long way to go!
I bet, being a one man show and all. Great job! Looking forward to part x when it climbs stairs and buries a bone :-D
me: simply usin' some 1$ 9g servos here😂
Just kidding, great video as always👍
Can you please explain to me how you would calculate the actual load/force on the motor if this was a vertical actuator ? how much cant it lift ?
is there anyway of modifying the code to use digitalinput signals to position the rail rather then using the identifier a ?
since we seen spotmini do the running man dance, you've got to make openDog do it too
i'm having accuracy problems with this setup. i ran this exact code on my Arduino Nano connected to an encoder with 32 steps/rev. No motor, just an encoder and the Arduino Serial Plotter. It misses about 20% of the steps. What can i do to improve it?
Once you get it walking you should work on using ROS for object recognition, SLAM, and path planning with like the Xbox Kinect or something similar.
That's the vague plan!
James Bruton Can’t wait!
What kind of bearings have you used
Hello, I have a small project for my car spoiler and I wanted to customise the spoiler. Like when I reach to 120km the spoiler will rais up and when I slow down the spoiler goes down to its zero position, so I got my 3d printer for my first time and I designed an linier actuator that works either steper motor or servo and I got arduino uno, the quastion is how can I control the actuator to rias up at 3600 turns to rias 15cm hight and to be signaled by reaching the speed 120km and when u slow down it gives a signal ( order) to the actuator to go down? Please if you could help me
I like it is there going to be an other episode or part 2
nope, this one is a one-off
Use hydraulic pumps to push a cylinder that compresses an air volume and release a valve on the hydraulics to quickly and forcefully discharge the air and push the cylinder back out so that the robot legs move a lot faster. You could use an air pressure sensor in the air chamber to read feedback from the actuator so the robot can feel what it is touching.
Now this is dog
You can buy linear actuators which are basically this, and are available with position encoders. Although I think this could be done cheaper.
Yes you can, but as you say DIY with 3D printing is often cheaper and fits the machine better
Couldn't you use a standard pot at a hinge joint or a linear pot on the actuator as feedback and it would work as a standard servo with proportional speed each direction?
long linear pots are hard to find
Would a tail theoretically work on a model like this?
James your project is impressive, but I'm concerned about the maximum speed of the legs. Isn't it too low (especially for dynamic gaits)?
The actual dog is pretty quick, the speeds are turned right down so far and there's deceleration due to the first order filter
Where can I get those rotary encoders? I mean the ones in use on the large Open Dog. Would be really grateful if you could let me know.
The ODrive Robotics web shop
Thank you, I will have a look
I recommend you look at the electric skateboard motors, that are based on the 6374 and 6354 motors. For a little bit more money ~$20 more, you can get a higher quality, better wound, better wire motor, that will put out 3.2kw in the same package, and also stay cooler. DIYelectricskateboard, and enertion both have motors like this. They started with the same motors as you, and have had a nicer version made for skateboard use.
can you do something with hydraulic motor like boston dynamics atlas
In this case we will be requiring two external interrupts per encoder(motor actuator), Since uno has only 2 external interrupts we would need that many controllers for each actuators. Mega has 6 interrupts would still be less in case we need to build more actuators.
Next option would be to use pin change interrupt as in Due so as to use all pins as interrupts.But I am not sure about its reliability.
Another bit expensive option would be use external counter circuit and send data to Arduino via SPI or I2C. This solution would reduce the load on Arduino for counting the pulses.
What would be your preference in such scenario?
I wonder, how did mechanics in 28cm toy robot dogs like SONY Aibo and Silverlit i-Cybie work? It must have been pretty damn cheap and simple at least in the latter.
Nice 😍😍😍😍😍😍
I wonder if the big robot is powerful enough to carry a person and make it the most insane way to get around the city.
Probably with some metal upgrades, although balancing and waling would be a lot harder
I'm sure the levitated platform I've got planned would rival it in insanity, lol.
If I were to make my own Dog I would use variable compliance/stiffness actuators. They seem to act more organically and I like that.
Yup. Anyone taking a go at this needs to stop thinking in terms of commanding absolute positions and start thinking in terms of applying force to soft joints. All your stiff maths goes up in a puff of smoke in the real world the first time you tried "positioning" one of the legs straight trough a pebble you didn't know was there.
@@AttilaAsztalos Exactly.
You have a point, but walking in an controlled environment is hard enough. Get THAT working, and then enhance it for less predictable ground.
Any way to control the motor not by typing in the serial monitor. Fx a button with a fixed position?
yes - just by updating the setpoint variable from your own code...
On some of the robots, it seems like the maximum speed of the movements is greatly restricted by the fundamental nature of ball screws connected to motors. I wonder if using linear motors instead would speed things up. Perhaps they couldn't take the required weight.
I'm wondering how Boston Dynamics did their legs for SpotMini. They are very fast, slim and dynamic.
I think that is an entirely different setup with complaint joints - some discussion is coming up in the openDog series
They're using compliant actuation. Could probably do something similar with OpenDog by adding some springs in the leg joints to create Series Elastic Actuators. In fact James did a video on this a few years ago.
I don't understand why you need two interruptions? It is possible to have only one rising/falling interrupt and check the status of another pin.
It is, but two is more accurate
Hi James, please take this in the spirit intended but the misses and I tune in every week to see it walk! It's hard enough to maintain her interest through all the coding stuff as it is! Can't you focus on getting this one to walk before its offspring?
Yes I'm not actually going to make a smaller one - it was more of an educational video. It 'walks' in the next video, but it's not pretty. Part 13 deals with dynamic stability and the discussion about what's needed next to make it work well.
Wow, a practical lesson about cheap Arduino linear actuator AND cascaded PID control ! That's amazing ! Would a Mabuchi RS-540 work for the same purpose ? They are so cheap and powerfull ! And also a technical question, I cloned you repo from GitHub, what Arduino version is needed to compile the files ? Keep up the fantastic work, I am amazed by your projects every day ! Do you have also an actual job ?
yep - you could use any motor with an encoder on
@@jamesbruton I would think about a combination, for the top motors a screw like you did, but for the knee and hip 10kg servos, would they work for a smaller dog ?
The Odrives he uses in open dog go for $129 a piece, and if I recall correctly I think open dog uses 4 or 5 of them. Given the cost of just the drivers, I think this diy method is the only chance I'm going to have at making a robot dog myself XD.
Cool
Well, it's really a nice project!However I wanna to know how to make the opendog walk and rotation? how to do the gait planning?
some of it is coming up next week, but it's a lot of development
Sorry to bother you again. But Thanks a lot! It is worthy of waiting indeed.
If you're going to scale it down, why not use servos? They're cheap, readily available and have all sorts of options for torque, from the motor/gearing in them to the length of horn used, etc. They can be pretty quick/snappy, too.
Exactly. All the headache in this video readily solved & packaged for you and the joint becomes the axis of the servo itself. All you need to worry about is telling it where to go. It's the obvious way.
This video made me realise how cheap all of these things are. I never expected you can buy a linear ball bearing for anything under 250 pounds, let alone for 25 quid.
why not use cable and pulley instead of screw ?
Can anyone recommend an easy to use program to design 3d models for printing?
TinkerCAD?
James Bruton thank you, love your work btw
Wow! Like! c;
How to interface linear actuator with load sensor or with strain gauge ??
Check out my Sonic the Hedgehog series for info on that
@@jamesbruton thanks for the replay
@@jamesbruton sir which encoder is best among AS5047P and AS5048B
Sir please answer thise question
You should work with Boston Dynamics. You just build an amazing robot by yourself.
I'm not sure powering the encoder from 5v is the best idea here, the Arduino appears to be configured for 3.3v, and you can't be sure the encoder outputs won't go above the Arduino's 3.3v supply rail.
Edit: I might have been looking at it wrong, can you clarify on the Arduino supply voltage?
It's a 5v Arduino
@@jamesbruton All is good in that case, thanks for the clarification James.
The next step is to make this dance like the Boston Dynamics bot :)
The challenge has been made James - Boston Dynamics, Uptown Spot (UA-cam).
Make it so :)-
Cheers,
- Eddy
Well that's something nice to aim for!
Have you seen Boston Dynamic's latest video? I think dancing should be the next priority after walking... :-)
yes
Is that Optimus Prime on the right and Megatron on the left?
When you're gonna let openDog to dance battle with Spot?
Ah! Screw that, make it bigger!
From what I've been able to research, linear actuators are not the way, because of space and the inefficiency of lead screws. I think boston dynamics and the ishikawa lab just use geared motors with 90 bevel gears right at the joints.
There are worm geared motors on ebay that are ugly and cant be back driven but offer a huge bang for your buck. I'm about to order some of those. Some smart programming can make up for the lack of compliance.
I have a challenge for you, look up newest Boston Dynamics video "UpTown Spot" xD
How come you use dc motors not stepper motors?
Encoder driven will never lose steps...
James Bruton same as a stepper motor with closed loop? Sorry just trying to work out the best motor for me to use on a project
WrapItToTapIt Why use stepper motors when the video says its a CHEAP alternative
Pan_Czerwony Stepper motors are cheap. Plus I been following all his builds for a while It was not really related to this smaller build.
WrapItToTapIt I actually wondered the same thing. For a smaller version, why not use nema17 steppers + encoders? Have good holding torque, and don't need to be geared down like the DC motor. Plus, from the DIY 3D printing kits these are quite cheap (bg has sets of 5 for $60)..
Make like a Big Dog sized robot
But can it dance tho?
One day
Would be awesome if you could do the same as the recent one from Boston dynamics :D
Is nobody developing or using linear induction motors as actuators in robotics? They would seem to be the ideal solution (at least in my head this morning).
To answer my own question - ieeexplore.ieee.org/document/5379608 (but you need an account to read all but the first few paras unfortunately, and I haven't got one). Edit: full article here - www.researchgate.net/publication/224099052_Novel_design_of_biped_robot_based_on_Linear_Induction_Motors . It's quite an old article and seems not to have been taken further. An issue was power consumption, but with the latest battery tech maybe less so now?? Fancy having a go James? :)