Absolutely blown away by how well this version works. And there's only 2k worth of material in there? Sure, that's a lot of money for us DIY'ers, but that's actually seriously affordable for a functional 4-legged walking robot, especially with the capabilities this one has. Those cycloidal drives were a REALLY good idea! Very impressive indeed!
3D printing and good software solutions have lowered the bridge for hobbyists to pass towards the pro-line. Some 13~14 years ago, a hexapod robot would be 6k easy with hundreds upon hundreds of hours worth of work.
"I still check my math online" This statement kinda hit me hard as a programmer. I've never made a "math program" per say, but I have used a lot of math when programming, and I can tell you for a fact that things go wrong more than they go right (because you stop when they work). That's just something to keep in mind.
Dude those inverse kinematic are SO cool. Just something so satisfying about using math to perform complex, compound movements and move the body of the dog in specific ways
I recommend the textbook modern robotics. I took a course with it and it's one of the best textbooks I've ever used. It will definitely help you in your projects if you're curious about being a little more scientific with the algorithms since it looks like you're moving in that direction.
So, which textbook? The one by Kevin M. Lynch Author, Lauren Barrett, Harry Henderson, etc. Sorry not trying to be rude, I would like to know. But you see the issue.
@@joshyoung1440 he's very good at the hands on stuff, this is more of a mathematical approach. Like I said, more algorithms based and learning to use a whole body controller and motion planning. For all I know he's great at it but AFAIK he hasn't shown that he's familiar with all of the usual algorithms in a video yet.
I was worried there was no video today, but I remembered I'm quite a few timezones ahead of the UK. For dynamic stability, have you considered measuring the ground pressure at each foot? this should let you track where the CG of the dog is on the floor plane and how it's moving. If the CG moves outside of the area defined by the dogs feet you can have it move one of the legs out to catch itself. By tracking the velocity and acceleration with which the CG moves, you can predict where it is/will be when it leaves the footprint of the dog. This lets you command the legs to move a specific and dynamic distance to extend the footprint (the area encompassed by the 3 or 4 feet on the ground) to cover the expected position of the CG, rather than taking a fixed or arbitrary step size to catch itself. The hard part is working out where exactly the CG will be when the dog completes a step, so to know where to make that step, since by the time you complete the step, the CG will have moved. The solution could be to pick a high estimate for how long a step would take when working out the anticipated CG location, and just make all steps take this fixed length of time. This would result in the dog taking small steps slowly, and big steps quickly which is kind of natural, like a human that is really off balance will move quickly to take a big step to restore balance, but more slowly when their balance isn't very off.
Hi James, if you ever need to remove bubbles from any 2-part resin without a vacuum chamber, you can do it with a big syringe. Fill it up and put your finger over the end, then pull the plunger, all the bubbles will go to the top.
next up, tensorflow interpretation of the imu data to provide desired leg locations...turn all the code into an opaque black box where 'it works but we don't know why'.
Love the dog episodes the absolute most!!! Great video! The silicone feet are really cool! I'm super stoked to see more of that in the future projects!
Awesome project and video. I saw a bot a few years ago, they said they had done all the geometry for the movement of their bot but then they focused on its gate. If i remember correctly it was a neural network that's job was to refine its movement, and their controller for it just told it a direction to go and how fast to preform the gate. It was neat, like muscle memory for robotic limbs.
James it's so awesome to see you iterate through your designs, learning at each step. an inspiration! I've got an idea for you. Right now you doing everything with position. This works great for slower moving systems. But there are two factors missing. 1) moving systems have inertia. Slowing down or speeding something up. And the requires force. If there was a way to predict the inertia changes needed then you could be able to add additional force into the system BEFORE the position is not what you want it to be. Just because you know that you are slowing down or speeding up a joint. So now you have fancy math. (calculus, inertia tensors, blah blah ). But it's all been worked out before, but I think that's what will take this hardware to the next level. 2) Even non-moving system should be able to know how much they "weigh" and add in some force to counteract the weight. So if a leg knows it should be supporting weight, then one ought to be able to calculate some additional torque/current needed to counteract that weight. If you don't add this in, then you have to wait for the "I" part of a PID system to notice a problem and add that torque/current back into the system.
In terms of the offset between the hip angle and the foot: it might be worth it to go back to belt drives for the rotational hip motion, while keeping cycloidal drives for the shoulder and knee. The thinking is that, since the robot doesn't move side to side that much, you don't need as big a reduction in the hip. and you'd be able to save weight and remove the offset, which would better harness the cycloidal drives in the shoulder and knee. just an idea for a variant
@@antonliakhovitch8306 yep true :) I did mean in the series maybe along with some of his other projects he will incorporate. also I wish he used a form of receded plastic filament for projects
I love this so much!!! All the new movements and mobility that it has! The new remote is so beautiful omg I love all of the progress your making I really enjoy these videos I’d love to build one of these some day I just need to get my 3D printer tuned and learn more about the programs you use
If you get a discard LPG tank, discard the top and find a piece of lexan + gasket, you can make a pressure pot easily using an MDF ring to make a lip up top, glued in place.
2 ปีที่แล้ว +3
you just blew my mind there... i implemented inverse kinematics as an exercise once. it was supposed to be generalized, even so it was meant to control a particular robot arm and that generality made it the most complicated piece of math i ever programmed and it didn't even work particularly well apart from being dead slow. doing it for the special case, i was actually dealing with occured to me, but i was convinced it would be even more complicated to do so... boy was my mentor wrong!!! should i ever try something like that again, there will be a piece of paper and a straight edge first!
James is like a one-man Boston Dynamics. Incredible work, James. I would love to try a project similar to this one day, but obviously on a much smaller, simpler scale. Thanks for your contributions and efforts to make this sort of thing more accessible to the public.
You should just add a real-time looped randomization method to your code that calls another random action method so that when the action method is called, it ignores all input and does whatever it "wants" at random times. Then you could call it Robot Cat lol
Some clay inside the foot balls might help it plant its stance. short, thin rubber tubes filled with clay covered with suede might make nice paws. the motors at the shoulders and hips might gear something in between them adding balance , storing potential energy or adding function like head motion or overall motor tension
Fantastic episode James. I like how you explained your math process to determine the leg positions and even a little bit about the Arduino code. I really enjoyed this in depth look at how this creature actually moves once all the parts are together. It's the projects like this that make you my favorite youtube scientist and an inspiration for making the world a better place through technology.
Hmm, I think you should set the triangle corner in the center of the foot ball, and then just add the radius later if needed. I think it will be equivalent as if the center of the ball was a pointy foot, and the floor was one radius closer?
i think you're on the right path with that idea, i think you would have to do an additional trig calculation to figure out the "imaginary length" of the foot based on the angle of the leg and the radius of the foot. edit: you could cheat and throw all the answers to the math for all angles into a lookup table and then abstract the values from that and just add it to the existing length, though that may not work as nicely in practice.
You could use a 1 to 1 belt drive between the shoulder motor/gear box and a shoulder joint that is directly above the foot then you won't have the problem of weight on the foot causing the shoulder to move
Yep I was thinking this or possibly stick with the belt here as presumably the torque requirement is lower at this point? Especially with the feet directly below which gives zero load in the neutral position?
Stick your shoulder joints between a couple springs that compress along the rotation radius to give it some extra holding power at rest (springs are statically countering the force of gravity when the legs are in rest position). 🔥 Can’t wait for version 4!
For the feet being spheres, could you not use the center of the sphere as the end of the joint for the reverse kinematics. This way the feet will touch the ground when the center is r (radius) above the ground, so uniformly for all feet and possible rotations of the feet
Yes I did that in openDog V2, but the centre still moves as the feet roll along, so it's still not totally accuarate. I may lengthen the lower legs at some point, so I'll need to re-do the kinematics at that point.
at 1:23 you said that you just live with the small change in length that the legs do when touching the ground at a different angle. You can eliminate this however by elevating the height of the theoretical ground in your calculations so that it passes right through the center point of the feet spheres. That way no matter the angle of the legs the spheres will be at the right point *above* the right spot on the ground. And since they are spheres the real ground will have exactly the same contact points every time.
I love all these Robot Dog projects! One thing I've always wished is that they stood a bit taller! I know they'd be a little more top-heavy, but I imagine watching it trot around would look so awesome! Imagine a Dachshund trotting around vs a Great Dane.. :p keep the awesome videos coming!
I just got to say I think this guy would be a great teacher if he ever did teach anyone, if you could get me started on making something like this I would love to do that
I’ve been away for a while but just saw Colin’s secret Santa video and thought I’d see what you were up to, the videos have changed format slightly and I think it’s for the better, keep up the good eork
Surely someone else has already pointed this out, and the inverse kinematics already seem to work pretty well, but accounting for how the feet contact the floor at different points depending on angle of the lower leg should be really easy - in the IK model, pretend the lower leg only reaches the center of the sphere on the foot, instead of to its surface. That way, the IK thinks it's walking 5cm off the ground (or whatever the radius of the foot is), but since the feet are spheres it doesn't matter. The distance from the IK model foot to the real life ground is always the same. The only issue not accounted for would then be how the feet roll on the ground instead of pivoting at the center of the sphere.
James, love your videos. I have a content request: Would you be interested in doing a video describing your general workflow for cad designs? I've always been impressed with how quickly you are able to refine your models and I'm interested in hearing what you consider to be "best practices" in this process. I would like to reduce the number of revisions in my own designs and have less trial and error. For example, I have always struggled to deal with shrinkage problem in the inside diameter of 3d printed holes. Screws, nuts and bearings are always either too tight or have a lot of slop. Also, do you have any "rule's of thumb" for under sizing / oversizing parts that need to key together? I know these types of instructional videos are not really what your channel is about but you appear to have a wealth of knowledge worth sharing.
Very nice. I'd love to see a 2 legged robot based on those legs. Make the torso CoG fairly high and see if it can balance like a 2 wheel balancing robot, but with stepping instead of rolling. Add a foam skirt so it survives training!
Probably very complicated, but it would be fun to connect it to a pc with a self learning algorithm for walking, running etc, and then the animations for the most successful iterations can be used to drive the motors. Of course the dog would also need a calibration cycle to learn its own parameters.
Hi, James. About the small error in the IK you mentioned in 1:20 (feet touching the ground at different angles), if the foot itself is a sphere, one thing I did when working with quadruped robots was just to subtract the radius in z direction from the point that is in the center of the sphere, so that you arrive at the contact point. That will always be true bc it's a sphere
I probably just need to make the lower legs 25mm longer or so, although they will still roll along as the angle chages, so the contact point will vary.
The feet are spherical. I.e. their center will always be lifted off the ground by 1 radius, no matter the angle of the leg. Just do your trigonometry with the lower leg length measured from the center of the spherical foot. You can add the constant offset of one sphere radius for the height of the dog later on if this is important. This eliminates the error due to the different leg angles that you mentioned.
You should try constructing a Planetary IVT (with staggered herringbone gears and/or double-hypoid gears) and/or a Merritt Brown Triple-Differential for a future project.
Hi James. Could you fix the problem mentioned at 1:30 by using the foot sphere’s centre in the kinematic model as the leg’s end point? When the foot is on the floor the sphere’s centre will always be the same height regardless of the leg’s orientation.
@@dara0s See my reply to John Bäckstrand. Offsetting works statically, but causes excess velocity & turning because the ball rolls on the ground as the leg shifts through angles when in ground contact during motion. It's still the right concept to start from, just missing an additional correction.
@@Sn0wZer0 you're right! I think that the correction should be pretty simple, just a factor of the angle from the shoulder for X and Y, (how many cm of are each degree, based on the diameter of the foot)
@@dara0s There's simple, which is making a scalar correction factor based on the step length and assuming sin(x)~=x which works pretty well if you keep the angles
Those cycloidal drives are a great fit for this application, and it's nice that they are mostly 3D printed. I wonder if their size (and cost?) could be reduced by using more traditional manufacturing techniques.
@@jamesbruton true. It seems to fit an underserved niche. Compact, high ratio, high torque, back-driveable, on-axis gearbox seems like the perfect fit for robotics applications, and there's not much else like it.
1:25 Can't you avoid this error by using the center of the foot for your calculations (instead of the tip)? Then its distance to the ground would be the same along every angle
A very nice contribution to the community, thank you very much! Could you make a video testing it "off-road", like climbing hills, walking into vegetation... Do you think it is capable of climbing stairs? Are you planning to integrate it with ROS?
You could fix the issue with the calculations that you mentioned at 1:14 by changing it so your not calculating the entire length of the legg but in stead the length to the center of the silicone feet and then just adding the radius of the feet at the end. Assuming the feet are spherical and not elliptical
Thanks, I find the OpenDog videos Interesting, and informative, with valuable insights. I am particularly interested in further development of OpenDog (V4 perhaps).
Absolutely AMAZING!! I'm expecting to see it just jump up and land perfectly without a single issue LOL are you planning on doing any jumping with it? maybe imitating a horse jumping over one of those gates in professional horse "dancing"(?? idk what it's called) where they run around an obstacle track - bio-mimicry has turned out to be a gold mine of progress in all other systems... it still blows me away that you are doing all of this in your home with off the shelf parts and 3d printers... technology is amazing! ( and so is your brain!! :D )
It stops and stands still when you stop. There's a filter that decays the commands so it always walks on the spot for a bit when it stops so it can get its legs straight.
With the increased gearing of the cycloidal drives, would it not be possible to implement longer lower legs? (like a real dog, or like Boston's Spot). Might make gait and balance a bit harder, but those would be interesting problems to solve.
@@tjpprojects7192 Breeding stumpy-legged dogs to hunt in tunnels is all well and good. But unless Robot Dog is destined for a life hunting badgers, I think a longer leg would be more practical for locomotion.
I would have used vectors for the position of the foot instead of trig. It should be easy as you have the angles which can be combined with the length of each part for the vectors. Just add the vectors and you get the foot position. The only hard part would be the offset, but adding another vector for that shouldn't be too hard.
2 ปีที่แล้ว +5
Isn't the solution to the fact that the legs ends in spheres to simply "cut" that part away from the calculation? You solution will then effectively calculate how to make the sphere centre hit a virtual floor hovering above the real floor.
11:48 nice to know I wasn't the 1st one to think of using this for a maker project. This has a large amount of electricty that it's a shame not to use it for maker projects.
Have you explained in a video as to the possibilities of using commercial cycloidal gearboxes? How much lighter would it be, how much stronger, more efficient, quieter... But also amhow much more expensive? Also, how do you even obtain them? Are they sold at a retailer? Can we browse them? Or do we just have to e-mail ABB an such and ask them for a direct quote? Thank you for the amazing work by the way!
by the end will we ever show this devices climbing stair up and down or its just some capet walker for the rule of cool ?
2 ปีที่แล้ว
Hmm, this offset. Maybe take the best from best of the worlds. Use cycloidial gear reduction, but drive it with belt to solve the offset issue... great work as usual.
I have about 95% of the parts printed now, 1/23/2022. I have one complete leg with hip, leg, and knee motors, waiting for ODrives to arrive. I have had to do a lot of filing and sanding to get things to fit, not sure if it is the differences in printers or what. Most bearings are too tight and required me to file on the holes to get them into place, at least their tight.
That's why I published solid models in STEP format - so you can tolerance everything for your printer. The Cycloidal drives/discs are particularly important to get right so they run freely with minimal backlash.
@@jamesbruton The Cycloidal drives seem real close, I am not sure there as smooth as yours seem but I was thinking they will smooth out with some run time? And the only way I would be able to tune parts for my printers would be to print a part and make changes and print again, so I just put a file to them. He is going to be a lot heavier than I expected, have the motors heated up at all or do they seem to be adequate for the job?
you mentioned building one leg as a test for others to see if they can get things working: perhaps you should make a super cheap robot using this as a demonstration. a simple cheap cart with a single leg that propels it.
Honestly it'd be nice for one of these robot creatures to have a face or at least a head. I realized that what unsettles me about them is that they're walking torsos.
What about slowing the movements down? I am curious what the result might be. It seems like there might be a bit of unwanted movement from the direction change of the joints. Loving this version!
I am quite curious if this thing could sprint like a quadruped does. Here the two back legs are planted while the two front extend, then switch. Obviously his would cause a huge load and it’d have to be moving fast; but I wonder if it’s possible.
That Anker pack actually has a low power mode that you can switch on which is designed for things that have a low load on the usb.
cant like cause 69
I was just about to write the same comment!
Oh, that's really cool. Most power banks can't do that. It's great to see that the manufacturer has thought of the low load issue.
Most often they would turn that mode off after 2 hours
Absolutely blown away by how well this version works. And there's only 2k worth of material in there? Sure, that's a lot of money for us DIY'ers, but that's actually seriously affordable for a functional 4-legged walking robot, especially with the capabilities this one has. Those cycloidal drives were a REALLY good idea! Very impressive indeed!
thanks!
A good chunk of that cost would be the LiPo packs and brushless motors. That stuff is expensive.
@@ericlotze7724 and with 2000 people its only a dollar!
@@jamesbruton mad respect for u man. I too like to get everything nice and cheap
3D printing and good software solutions have lowered the bridge for hobbyists to pass towards the pro-line. Some 13~14 years ago, a hexapod robot would be 6k easy with hundreds upon hundreds of hours worth of work.
"I still check my math online" This statement kinda hit me hard as a programmer. I've never made a "math program" per say, but I have used a lot of math when programming, and I can tell you for a fact that things go wrong more than they go right (because you stop when they work). That's just something to keep in mind.
Unit tests are quite a wonderful thing
it's "per se", not "per say"
it means "by itself" or "in itself"
just use your own language and dodge these stupid errors trying to sound refined
@@giampaolomannucci8281 loquimurne latīne, amīce?
The programmer version is: "I still check my math in a Jupyter Notebook" :P
Dude those inverse kinematic are SO cool. Just something so satisfying about using math to perform complex, compound movements and move the body of the dog in specific ways
I recommend the textbook modern robotics. I took a course with it and it's one of the best textbooks I've ever used. It will definitely help you in your projects if you're curious about being a little more scientific with the algorithms since it looks like you're moving in that direction.
So, which textbook?
The one by Kevin M. Lynch
Author, Lauren Barrett, Harry Henderson, etc.
Sorry not trying to be rude, I would like to know. But you see the issue.
@@Morberis yes I agree I'm interested but there are many books!
@@Morberis my bad! I mean the one by Kevin lynch
I think the guy has a pretty solid basis in robotics already...
@@joshyoung1440 he's very good at the hands on stuff, this is more of a mathematical approach. Like I said, more algorithms based and learning to use a whole body controller and motion planning. For all I know he's great at it but AFAIK he hasn't shown that he's familiar with all of the usual algorithms in a video yet.
I was worried there was no video today, but I remembered I'm quite a few timezones ahead of the UK.
For dynamic stability, have you considered measuring the ground pressure at each foot? this should let you track where the CG of the dog is on the floor plane and how it's moving. If the CG moves outside of the area defined by the dogs feet you can have it move one of the legs out to catch itself. By tracking the velocity and acceleration with which the CG moves, you can predict where it is/will be when it leaves the footprint of the dog. This lets you command the legs to move a specific and dynamic distance to extend the footprint (the area encompassed by the 3 or 4 feet on the ground) to cover the expected position of the CG, rather than taking a fixed or arbitrary step size to catch itself.
The hard part is working out where exactly the CG will be when the dog completes a step, so to know where to make that step, since by the time you complete the step, the CG will have moved. The solution could be to pick a high estimate for how long a step would take when working out the anticipated CG location, and just make all steps take this fixed length of time. This would result in the dog taking small steps slowly, and big steps quickly which is kind of natural, like a human that is really off balance will move quickly to take a big step to restore balance, but more slowly when their balance isn't very off.
Hi James, if you ever need to remove bubbles from any 2-part resin without a vacuum chamber, you can do it with a big syringe. Fill it up and put your finger over the end, then pull the plunger, all the bubbles will go to the top.
Your silicon mould is so cool! Everyone else on TH-cam makes using moulds look so complicated I was discouraged to try it myself. Cheers mate!
It depends on the shape you need - this is basically round everywhere so it doesn't get locked into the mould.
next up, tensorflow interpretation of the imu data to provide desired leg locations...turn all the code into an opaque black box where 'it works but we don't know why'.
3:40 I love how the "else if" under the part you marked there, does absolutely nothing. :D
Love the dog episodes the absolute most!!! Great video! The silicone feet are really cool! I'm super stoked to see more of that in the future projects!
Awesome project and video. I saw a bot a few years ago, they said they had done all the geometry for the movement of their bot but then they focused on its gate. If i remember correctly it was a neural network that's job was to refine its movement, and their controller for it just told it a direction to go and how fast to preform the gate. It was neat, like muscle memory for robotic limbs.
James it's so awesome to see you iterate through your designs, learning at each step. an inspiration!
I've got an idea for you. Right now you doing everything with position. This works great for slower moving systems. But there are two factors missing.
1) moving systems have inertia. Slowing down or speeding something up. And the requires force. If there was a way to predict the inertia changes needed then you could be able to add additional force into the system BEFORE the position is not what you want it to be. Just because you know that you are slowing down or speeding up a joint. So now you have fancy math. (calculus, inertia tensors, blah blah ). But it's all been worked out before, but I think that's what will take this hardware to the next level.
2) Even non-moving system should be able to know how much they "weigh" and add in some force to counteract the weight. So if a leg knows it should be supporting weight, then one ought to be able to calculate some additional torque/current needed to counteract that weight. If you don't add this in, then you have to wait for the "I" part of a PID system to notice a problem and add that torque/current back into the system.
In terms of the offset between the hip angle and the foot: it might be worth it to go back to belt drives for the rotational hip motion, while keeping cycloidal drives for the shoulder and knee.
The thinking is that, since the robot doesn't move side to side that much, you don't need as big a reduction in the hip. and you'd be able to save weight and remove the offset, which would better harness the cycloidal drives in the shoulder and knee.
just an idea for a variant
I like how this gives insight to the general population about robots and machine learning
Small nitpick: This particular project doesn't involve any machine learning; it's all classical algorithms.
@@antonliakhovitch8306 yep true :) I did mean in the series maybe along with some of his other projects he will incorporate. also I wish he used a form of receded plastic filament for projects
I love this so much!!! All the new movements and mobility that it has! The new remote is so beautiful omg I love all of the progress your making I really enjoy these videos I’d love to build one of these some day I just need to get my 3D printer tuned and learn more about the programs you use
If you get a discard LPG tank, discard the top and find a piece of lexan + gasket, you can make a pressure pot easily using an MDF ring to make a lip up top, glued in place.
you just blew my mind there... i implemented inverse kinematics as an exercise once. it was supposed to be generalized, even so it was meant to control a particular robot arm and that generality made it the most complicated piece of math i ever programmed and it didn't even work particularly well apart from being dead slow.
doing it for the special case, i was actually dealing with occured to me, but i was convinced it would be even more complicated to do so... boy was my mentor wrong!!!
should i ever try something like that again, there will be a piece of paper and a straight edge first!
The amount of work that you put into your videos is why I come back week after week. It's just absolutely incredible. Love your work, keep it up!
thanks!
This is amazing! Looks like it's working better than V2 already.
Would love to see it walking up some stairs once you get the dynamics sorted out!
Soon as you call this project compete, I'm printing it. You're an amazing human being.
James is like a one-man Boston Dynamics.
Incredible work, James. I would love to try a project similar to this one day, but obviously on a much smaller, simpler scale.
Thanks for your contributions and efforts to make this sort of thing more accessible to the public.
You should just add a real-time looped randomization method to your code that calls another random action method so that when the action method is called, it ignores all input and does whatever it "wants" at random times. Then you could call it Robot Cat lol
Have you thought of doing stress analysis on all of the parts? Might help with removing some weight making it more efficient?
Some clay inside the foot balls might help it plant its stance. short, thin rubber tubes filled with clay covered with suede might make nice paws. the motors at the shoulders and hips might gear something in between them adding balance , storing potential energy or adding function like head motion or overall motor tension
last time i was this early, semiconductor microcontrollers were sold at msrp
"So I guess you can go and build it"
Nice way of saying good luck!
Seeing Sanjay in the background got me. I'm going to miss his enthusiasm. V3 is looking good!
Fantastic episode James. I like how you explained your math process to determine the leg positions and even a little bit about the Arduino code. I really enjoyed this in depth look at how this creature actually moves once all the parts are together. It's the projects like this that make you my favorite youtube scientist and an inspiration for making the world a better place through technology.
thanks!
Hmm, I think you should set the triangle corner in the center of the foot ball, and then just add the radius later if needed. I think it will be equivalent as if the center of the ball was a pointy foot, and the floor was one radius closer?
i think you're on the right path with that idea, i think you would have to do an additional trig calculation to figure out the "imaginary length" of the foot based on the angle of the leg and the radius of the foot.
edit: you could cheat and throw all the answers to the math for all angles into a lookup table and then abstract the values from that and just add it to the existing length, though that may not work as nicely in practice.
Great work. Especially like how you stitched the IK system together.
You could use a 1 to 1 belt drive between the shoulder motor/gear box and a shoulder joint that is directly above the foot then you won't have the problem of weight on the foot causing the shoulder to move
I've considered it as a modification, but we'll see how it goes.
Yep I was thinking this or possibly stick with the belt here as presumably the torque requirement is lower at this point? Especially with the feet directly below which gives zero load in the neutral position?
Stick your shoulder joints between a couple springs that compress along the rotation radius to give it some extra holding power at rest (springs are statically countering the force of gravity when the legs are in rest position). 🔥 Can’t wait for version 4!
For the feet being spheres, could you not use the center of the sphere as the end of the joint for the reverse kinematics. This way the feet will touch the ground when the center is r (radius) above the ground, so uniformly for all feet and possible rotations of the feet
Yes I did that in openDog V2, but the centre still moves as the feet roll along, so it's still not totally accuarate. I may lengthen the lower legs at some point, so I'll need to re-do the kinematics at that point.
at 1:23 you said that you just live with the small change in length that the legs do when touching the ground at a different angle. You can eliminate this however by elevating the height of the theoretical ground in your calculations so that it passes right through the center point of the feet spheres. That way no matter the angle of the legs the spheres will be at the right point *above* the right spot on the ground. And since they are spheres the real ground will have exactly the same contact points every time.
I love all these Robot Dog projects! One thing I've always wished is that they stood a bit taller! I know they'd be a little more top-heavy, but I imagine watching it trot around would look so awesome! Imagine a Dachshund trotting around vs a Great Dane.. :p keep the awesome videos coming!
I just got to say I think this guy would be a great teacher if he ever did teach anyone, if you could get me started on making something like this I would love to do that
A possible solution to account for the round feet is to use the center of the sphere and add an offset of the feet radius.
I was thinking the exact same thing.
I’ve been away for a while but just saw Colin’s secret Santa video and thought I’d see what you were up to, the videos have changed format slightly and I think it’s for the better, keep up the good eork
Surely someone else has already pointed this out, and the inverse kinematics already seem to work pretty well, but accounting for how the feet contact the floor at different points depending on angle of the lower leg should be really easy - in the IK model, pretend the lower leg only reaches the center of the sphere on the foot, instead of to its surface. That way, the IK thinks it's walking 5cm off the ground (or whatever the radius of the foot is), but since the feet are spheres it doesn't matter. The distance from the IK model foot to the real life ground is always the same. The only issue not accounted for would then be how the feet roll on the ground instead of pivoting at the center of the sphere.
James, love your videos. I have a content request: Would you be interested in doing a video describing your general workflow for cad designs? I've always been impressed with how quickly you are able to refine your models and I'm interested in hearing what you consider to be "best practices" in this process. I would like to reduce the number of revisions in my own designs and have less trial and error. For example, I have always struggled to deal with shrinkage problem in the inside diameter of 3d printed holes. Screws, nuts and bearings are always either too tight or have a lot of slop. Also, do you have any "rule's of thumb" for under sizing / oversizing parts that need to key together? I know these types of instructional videos are not really what your channel is about but you appear to have a wealth of knowledge worth sharing.
Very nice. I'd love to see a 2 legged robot based on those legs. Make the torso CoG fairly high and see if it can balance like a 2 wheel balancing robot, but with stepping instead of rolling. Add a foam skirt so it survives training!
we;; dome mate!!! i'm following singe the beginning of this journey and i'm happy to see it complete and working! sincerely well done!
thank goodness i found this, i thought i need to spend weeks making a dog bot version of the panzerhund from wolfenstein
You have no idea how excited I get when I see a new open dog video!!!!!
Probably very complicated, but it would be fun to connect it to a pc with a self learning algorithm for walking, running etc, and then the animations for the most successful iterations can be used to drive the motors. Of course the dog would also need a calibration cycle to learn its own parameters.
Hi, James. About the small error in the IK you mentioned in 1:20 (feet touching the ground at different angles), if the foot itself is a sphere, one thing I did when working with quadruped robots was just to subtract the radius in z direction from the point that is in the center of the sphere, so that you arrive at the contact point. That will always be true bc it's a sphere
I probably just need to make the lower legs 25mm longer or so, although they will still roll along as the angle chages, so the contact point will vary.
You're a genius and a gentleman and i absolutely love your videos, i wish i knew a tenth of what you know, id be satisfied with that
The feet are spherical. I.e. their center will always be lifted off the ground by 1 radius, no matter the angle of the leg. Just do your trigonometry with the lower leg length measured from the center of the spherical foot. You can add the constant offset of one sphere radius for the height of the dog later on if this is important. This eliminates the error due to the different leg angles that you mentioned.
Awesome project ! Thanks James for all the great work you put into it!
You should try constructing a Planetary IVT (with staggered herringbone gears and/or double-hypoid gears) and/or a Merritt Brown Triple-Differential for a future project.
Maybe use some bungee to cancel out the torque in the hips?
Love the code, , nodal ganglions? each leg goes through a climbing cycle unless told to change, low overhead, to look ahead, great work.
I am beyond inspired.
Hi James. Could you fix the problem mentioned at 1:30 by using the foot sphere’s centre in the kinematic model as the leg’s end point? When the foot is on the floor the sphere’s centre will always be the same height regardless of the leg’s orientation.
Came here to write the same idea, just use the center of the sphere and add the sphere radius to the height.
@@dara0s See my reply to John Bäckstrand. Offsetting works statically, but causes excess velocity & turning because the ball rolls on the ground as the leg shifts through angles when in ground contact during motion. It's still the right concept to start from, just missing an additional correction.
@@Sn0wZer0 you're right! I think that the correction should be pretty simple, just a factor of the angle from the shoulder for X and Y, (how many cm of are each degree, based on the diameter of the foot)
@@dara0s There's simple, which is making a scalar correction factor based on the step length and assuming sin(x)~=x which works pretty well if you keep the angles
Those cycloidal drives are a great fit for this application, and it's nice that they are mostly 3D printed. I wonder if their size (and cost?) could be reduced by using more traditional manufacturing techniques.
well probably yes, but you'd need to make a lot of them to make it worthwhile.
@@jamesbruton true. It seems to fit an underserved niche. Compact, high ratio, high torque, back-driveable, on-axis gearbox seems like the perfect fit for robotics applications, and there's not much else like it.
Awesome work James! Thanks again for sharing so much, have a great Christmas!
CONGRATULATIONS ON 1 MILLION!!!!!
1:25 Can't you avoid this error by using the center of the foot for your calculations (instead of the tip)? Then its distance to the ground would be the same along every angle
As he said , the shape of the feets aren't totally circular which causes the diameter of the feet (as they are round) to vary with the angel....
A very nice contribution to the community, thank you very much! Could you make a video testing it "off-road", like climbing hills, walking into vegetation... Do you think it is capable of climbing stairs? Are you planning to integrate it with ROS?
eventually, but at the moment it hardly lifts its feet.
You could fix the issue with the calculations that you mentioned at 1:14 by changing it so your not calculating the entire length of the legg but in stead the length to the center of the silicone feet and then just adding the radius of the feet at the end.
Assuming the feet are spherical and not elliptical
I think using half of a fractal vice as a foot for a walking quadped robot would be coll to see how well it conforms to uneven surfaces.
Thanks, I find the OpenDog videos Interesting, and informative, with valuable insights. I am particularly interested in further development of OpenDog (V4 perhaps).
Amazing! I can never make tight tolerance mechanical parts on a 3D printer. I'd love to learn how you get your 3D printer to work so well!
Absolutely AMAZING!! I'm expecting to see it just jump up and land perfectly without a single issue LOL are you planning on doing any jumping with it? maybe imitating a horse jumping over one of those gates in professional horse "dancing"(?? idk what it's called) where they run around an obstacle track - bio-mimicry has turned out to be a gold mine of progress in all other systems...
it still blows me away that you are doing all of this in your home with off the shelf parts and 3d printers... technology is amazing! ( and so is your brain!! :D )
I'd like to do pronking, but we'll see how it goes.
This thing looks like it's pretty fast compared to open dog 2
The legs are moving twice as fast, yesy.
You could make the leverage angle smaller by curving the feet inwards like in V2. It is just the feets placement that determines the leverage
I could slightly, but the axis are really closer together.
Nice. It be cool if you can get it to stand still when not moving, and only tap its feet when needed.
It stops and stands still when you stop. There's a filter that decays the commands so it always walks on the spot for a bit when it stops so it can get its legs straight.
You're an absolute legend, great progress James
With the increased gearing of the cycloidal drives, would it not be possible to implement longer lower legs? (like a real dog, or like Boston's Spot). Might make gait and balance a bit harder, but those would be interesting problems to solve.
"Real dog"
"Cries in Dachshund, Corgi, and other short legged dog breeds"
@@tjpprojects7192 Breeding stumpy-legged dogs to hunt in tunnels is all well and good. But unless Robot Dog is destined for a life hunting badgers, I think a longer leg would be more practical for locomotion.
how do you even make these??
can you do a tour of your project management?
very impressive.
I am not sure what you mean by project management. He have over fifty videos over this project for the past two or three years.
Now I'm tempted to make that Cycloidal motor for a 4 wheel recumbent bike project I'm wanting to build. >_>
I would have used vectors for the position of the foot instead of trig. It should be easy as you have the angles which can be combined with the length of each part for the vectors. Just add the vectors and you get the foot position. The only hard part would be the offset, but adding another vector for that shouldn't be too hard.
Isn't the solution to the fact that the legs ends in spheres to simply "cut" that part away from the calculation? You solution will then effectively calculate how to make the sphere centre hit a virtual floor hovering above the real floor.
maybe simplifying the robot to reduce weight and mechanical parts would be a neat v4. (one mechanical joint per leg)
These things are amazing.
I love it, nice work James!
I like your creation. Can you make an XXL robot dog to sit on ?
And control the dog with the joystick that will be attached to the dog.
Love the great work, keep it up!
11:48 nice to know I wasn't the 1st one to think of using this for a maker project. This has a large amount of electricty that it's a shame not to use it for maker projects.
Another great piece of engineering from great engineer
Have you explained in a video as to the possibilities of using commercial cycloidal gearboxes?
How much lighter would it be, how much stronger, more efficient, quieter... But also amhow much more expensive?
Also, how do you even obtain them? Are they sold at a retailer? Can we browse them? Or do we just have to e-mail ABB an such and ask them for a direct quote?
Thank you for the amazing work by the way!
I wonder what it'll take to give it a better range of motion? Perhaps employing some sort of Y/ball joint under tension from multiple angles?
Fantastic choice of sponsor, by the way. It’s nice to get away from the usual suspects that other channels hawk.
Mega as ever!!! Any chance you could do a video on your latest controller? Any update on the Dog would be dope too! :)
make a video of you doing a comparison of all the dogs you've made
Epic.
by the end will we ever show this devices climbing stair up and down or its just some capet walker for the rule of cool ?
Hmm, this offset. Maybe take the best from best of the worlds. Use cycloidial gear reduction, but drive it with belt to solve the offset issue... great work as usual.
I considered it, but we'll see how it goes
I have about 95% of the parts printed now, 1/23/2022. I have one complete leg with hip, leg, and knee motors, waiting for ODrives to arrive. I have had to do a lot of filing and sanding to get things to fit, not sure if it is the differences in printers or what. Most bearings are too tight and required me to file on the holes to get them into place, at least their tight.
That's why I published solid models in STEP format - so you can tolerance everything for your printer. The Cycloidal drives/discs are particularly important to get right so they run freely with minimal backlash.
@@jamesbruton The Cycloidal drives seem real close, I am not sure there as smooth as yours seem but I was thinking they will smooth out with some run time? And the only way I would be able to tune parts for my printers would be to print a part and make changes and print again, so I just put a file to them. He is going to be a lot heavier than I expected, have the motors heated up at all or do they seem to be adequate for the job?
Open dog has finally reached the level where skilled people could be encouraged to build it!
you mentioned building one leg as a test for others to see if they can get things working: perhaps you should make a super cheap robot using this as a demonstration. a simple cheap cart with a single leg that propels it.
Absolutely incredible! Im amazed you haven't been hired by a large robotics firm. Are these projects your day job?
Why not go the the center of the sphere and add the radius after the calculation?
Cool work!
10:38 "I made four huge matches without sticks" 🙂
You should call open dog 2: bulldog, because of the stance, and dog 3: OpenCat because of the triangular “ears” on the “face”.
Honestly it'd be nice for one of these robot creatures to have a face or at least a head. I realized that what unsettles me about them is that they're walking torsos.
What about slowing the movements down? I am curious what the result might be. It seems like there might be a bit of unwanted movement from the direction change of the joints. Loving this version!
I am quite curious if this thing could sprint like a quadruped does. Here the two back legs are planted while the two front extend, then switch. Obviously his would cause a huge load and it’d have to be moving fast; but I wonder if it’s possible.
Any plans to add multiple gaits? Trot, canter, gallop, etc?