Quaternions would be the most 'professional' way, but if it works it works. 0.1mm tolerance on a metre-long 50kg robot dog is probably close enough for jazz
I really don't understand why people would give this video a thumbs down. I postulate they're either REALLY smart or INCREDIBLY dense. Not sure at this point... Either way, my 20 month old boy loves this video series. He's so fixated... I LOVE IT!
There are several similar projects that I'm aware of that people have done, but I've never heard of one person designing and building every aspect of such a build by themselves. Hats off to you buddy, this is some amazing work.
James I’ll be buying and open dog mug! Love it. This series is just brilliant I look forward to your vids so much! Cheers for all the effort you put in.
This looks a lot more menacing in real life! Had the pleasure to see it in action today at the tct show :) Keep up the good work and thanks for the chat too!
Thank you so much. Within minutes this is now my favorite youtube "series". I have to catch up and watch the older videos. Great work so far. I learned I lot from this kinematic video(s) so far
As a person that doesn't like computers very much but is interested in mechanics. I have to say: That's a nice project. The mechanical solution is clever and not to dependent on overly complicated custom parts.
Probably one of your most impressive project to date, imho. The movement look so fluid and agile it's quite stuning. Btw, I know you call this robot OpenDog since the beginning of the project but, ever since you decide to make it all yellow, i can only see it has a robot cheetah.
Fantastic! What I love about this series is that it doesn't feel like prototyping anymore. It's almost as if you have built 5 previous versions already. Amazing work James. I ordered a T-shirt right away!
looking Awesome. I know you can do the yaw, pitch and roll, the big step of course will be getting it to take a step, then another and another. I can see you can do it. good luck.
Serious reply though: If you built it large/powerful enough to have a human ride it, it would also be large/powerful enough to seriously injure or kill the rider if it moves the wrong way or rolls, much like a horse is large and powerful enough to kill people. So there's that. I don't know if I would feel comfortable riding a machine I programmed myself if it were capable of crushing me.
Yonder Bagel at the size it is now, it could injure or kill someone if it fell wrong or a limb gets caught. I would like to see @James Burton do power fail tests to see how it does "lay down" and then more tests at various stages of it's locomotion to see what happens. Maybe add code along the lines of "if motor stalls for x seconds then move motor to y position" where y is the position where the gap is largest (in case of a unintended object being in the way and allow it's easy removal) kind of like a lift doors automatic open feature if it can not close fully. Also some code linked to battery power (or voltage if using LiPo batteries) that will make some kind of audio-visual warning then power the OpenDog down, both to protect the dog and nearby people (If Voltage
Hey James, have you noticed any DARPA vans out side your house lately? lol can wait to see this walk man!! one small step for man, one giant leap for James's openDog robot
This is absolutely cool as hell. I've been following your channel for years and you've done a ton of cool stuff, and this is the most exciting thing you've done thus far. Seeing you actually move openDog around felt so satisfying.
Instead of tying z height to the angle of the stick, you can use the rotation as the desired change from the current height. You'd twist one way to raise, other way to lower, with some comfortable dead zone in the middle. Would make controlling height a little more simple. I've used that approach in the controls for a pan-tilt mechanism controlled by a Nintendo Wii nunchuk. Stick isn't mapped to position, it's mapped to delta from current position.
thanks for doing what you do, i ordered a teeshirt to show support. Your channel has really opened my eyes to what one person can do, if you set your mind to it. Since i started watching, ive designed built and coded my own one wheeled self balancing skateboard :)
Great work James! Explaining software to viewers is always difficult, and you're doing a great job so far. If you need any help programming your algorithms it might be a good idea to build a simulator. Very useful for debugging, and allowing people to play with your work. Also makes for great visuals.
You can avoid the divide-by-zero issues by using the Pythagorean theorem to get the hipHypotenuse, legHeight and legLength values directly from the desired XYZ positions rather than using the angles. hipHypotenuse = sqrt( sq(X) + sq(Z) ) legHeight = sqrt( sq(hipHypotenuse) - sq(HIPROD) ) or even better as legHeight = sqrt( sq(X) + sq(Z) - sq(HIPROD) ) legLength = sqrt( sq(Y) + sq(legHeight) ) These will work even if X or Y is 0 since there is no division.
If i could make a kinda big suggestion, change your joystick assignments to match a common mode 2 radio. basically left hand joystick would be forward/back, side strafe and yaw rotating, and right joystick would cover pitch leaning and roll leaning.
Hi Awesome project as always! Regarding degree to radial conversion: Because you are doing this only for the read purposes, you really should not use this converted back and forward values for calculations . Especially if you are proceeding operations like dividing, or multiplication on the results. This code (9:52) can be easily refactored to calculate directly on radians , and store converted degrees values aside for your debug purposes. I know that it looks harmless, but depending on how much time you multiply double-converted values you will see that the error here might end up somewhere around 10% (even using doubles as data types). I came into similar issue with some AI project. My values looked grate, but the results were way off!! Spare yourself time on figuring out why something might now work as you would have expected in the future, and fix it asap (or let contributors do it :D ). You are doing awesome, fingers crossed for this project !
Hello James. I realize you have already solved all your triangles so maybe I'm a bit late, but for next time. There is a convention that can be used to solve the forward and inverse kinematics of a serial link manipulator in a relatively easy and systematic way. Just plug and chug some measurements from your CAD model into matrix formulas, multiply the matrices, and you have your forward kinematics. This forward kinematic model will not only give you the x,y,z position of the foot, but also the angular orientation. Solving the inverse kinematics is just a matter of re-arranging the forward kinematics which can easily be done with some matrix software, or it can even be done by hand. If you don't have any experience in matrix math it can seem a little daunting, but I'm confident that with a matrix calculator and a couple youtube example videos that you could get through it without much problem. The convention is called the Denavit-Hartenberg convention. In my day job I am a control systems engineer with a background in mechanical design and mechatronic systems. I work with a lot of custom built machines for automation, and sometimes it requires solving the forward and inverse kinematics of a serial link machine. The DH convention is by far the easiest method to achieve this.
Thanks a lot for going into the IK stuff, I've been working in CG for years and IK has always been black magic for me, I'm so happy that you explained that! Thankfully now I'm in electronics and product development so I see an awesome project to start at +MakeraustriaAt
The movement looks very sexy! When I think about all axis and calculations that have to be done in realtime during walking.... not an easy task that's for sure! But this seems to be no problem for James. Really cool project!!!
Quite lucky as you don't seem to be suffering with any double solutions to the IK. One thing with CGI cahracter rigging is that there's often 2+ ways to solve the IK and you have to add mid way compensaters to help with the solving.
In six axis robotics, when the 5th axis is at 0, axes 4 & 6 are lined up. This results in an infinite number of solutions, also known as a singularity. To maintain linear movement when the robot is near singularity, axes 4 & 6 have to move considerably faster than all of the other joints. Passing through singularity is impossible to do elegantly.
Consider laser alignment of legs, an ultra capacitor or something to amp up those motors and more titanium or other alloy , particularly towards ends of limbs. Nice dog.
I’ll say it again, James, you’re a bloody clever bloke! And where do you find the time?? This is the best thing on RUclips right now 👏👏 I can’t wait to see this walking. Great work!
A double on AVR is the same as a float (4 bytes). It is better to move to ARM for better precision and speed since you need a lot of calculations. The Arduino due is pretty good and still got the same pins and the switch is almost no work. A STM32 could also be used with some work for the 5v tolerant pins.
When it comes to inverse kinematics, you might want to take a look to Forward And Backward Inverse Kinematics (FABRIK) that is an iterative approach. Worked well for me. Nice video, thank you for entertainment!
James you can link your tspring account to your youtube account so links and pictures of your merch auto appear before the comments section on all your videos - cheers!
This is my favorite series on RUclips right now.
just commenting to give traffic but same :)
same here!
check out wintergatan!!
I love wintergatan. I've been following his channel for some time now. Hahah
Howl lol you have great taste then
Pitch, Yaw, and Roll comes up in a future video, there's a preview already out for Patrons only!
It's kinda awesome.
Why don't you use raspberry pi with or instead of arduino
Awesome work James
This thing is freakin' awesome!
You legend!
Easiest way to avoid divide-by-zero errors when using atan() is to use atan2() instead 🙂
Great work, opendog looks amazing!
Joel Bernstein seems pythagoras fixed that in the second version
I must have gaming on the brain; I read that as '[...] atari() is to use atari2() [...]'
Atan2 is the best thing ever tbh.
He could also just wrap the existing code in a condition. if(value > 0) { do_trig } else { /* you're dividing by 0! */}
Quaternions would be the most 'professional' way, but if it works it works. 0.1mm tolerance on a metre-long 50kg robot dog is probably close enough for jazz
I really don't understand why people would give this video a thumbs down. I postulate they're either REALLY smart or INCREDIBLY dense. Not sure at this point... Either way, my 20 month old boy loves this video series. He's so fixated... I LOVE IT!
There are several similar projects that I'm aware of that people have done, but I've never heard of one person designing and building every aspect of such a build by themselves. Hats off to you buddy, this is some amazing work.
James I’ll be buying and open dog mug! Love it. This series is just brilliant I look forward to your vids so much! Cheers for all the effort you put in.
This looks a lot more menacing in real life! Had the pleasure to see it in action today at the tct show :) Keep up the good work and thanks for the chat too!
Thank you so much. Within minutes this is now my favorite youtube "series". I have to catch up and watch the older videos. Great work so far. I learned I lot from this kinematic video(s) so far
thanks for watching!
As a person that doesn't like computers very much but is interested in mechanics. I have to say: That's a nice project. The mechanical solution is clever and not to dependent on overly complicated custom parts.
James, this project is amazing and your videos are so content dense. I can't believe the pace at which you are progressing. Thanks for sharing!
Great to meet you today James. The open dog looks even more awesome in person
you too!
Probably one of your most impressive project to date, imho. The movement look so fluid and agile it's quite stuning. Btw, I know you call this robot OpenDog since the beginning of the project but, ever since you decide to make it all yellow, i can only see it has a robot cheetah.
SonicUnderground316 MIT already stole the cheetah moniker for a dog robot :/
Fantastic! What I love about this series is that it doesn't feel like prototyping anymore. It's almost as if you have built 5 previous versions already. Amazing work James. I ordered a T-shirt right away!
Hey kids! This is why you need to learn Trigonometry. So you can build killa robots! Great video James! : )
How has nobody already written these algorithms for these natural joints and movements? Amazing videos. Cheers mate.
They have and there are much more comprehensive software solutions for this, but its probably overwhelming for anyone with entry level understanding
I love when a new video from you comes up
This is the coolest thing I've ever seen on RUclips.
looking Awesome. I know you can do the yaw, pitch and roll, the big step of course will be getting it to take a step, then another and another. I can see you can do it. good luck.
Important Question: will you be able to sit on it while it's moving?
Not only me that wants to see a seat or saddle on it then
this is getting into zoids territory
Serious reply though: If you built it large/powerful enough to have a human ride it, it would also be large/powerful enough to seriously injure or kill the rider if it moves the wrong way or rolls, much like a horse is large and powerful enough to kill people. So there's that. I don't know if I would feel comfortable riding a machine I programmed myself if it were capable of crushing me.
Just wrap it in cushions, crybaby.
Yonder Bagel at the size it is now, it could injure or kill someone if it fell wrong or a limb gets caught. I would like to see @James Burton do power fail tests to see how it does "lay down" and then more tests at various stages of it's locomotion to see what happens.
Maybe add code along the lines of "if motor stalls for x seconds then move motor to y position" where y is the position where the gap is largest (in case of a unintended object being in the way and allow it's easy removal) kind of like a lift doors automatic open feature if it can not close fully.
Also some code linked to battery power (or voltage if using LiPo batteries) that will make some kind of audio-visual warning then power the OpenDog down, both to protect the dog and nearby people (If Voltage
Reminds me of when I was doing all those inverse kinematic calculations a few months ago, Fun stuff
Holy heck, I've been following this project from the beginning, but seeing actually move like that is truly mindblowing! Amazing work!
I just want to say this is a lot of work done! Well done James!
Hey James, have you noticed any DARPA vans out side your house lately? lol can wait to see this walk man!! one small step for man, one giant leap for James's openDog robot
Love your Videos, im waiting for them tuesday before school!!! Exactly what i needed for my Robot!
Open Guard Dog
"You are illegally parked on private property, please remove your vehicle. You have 20 seconds to comply..."
This is absolutely cool as hell. I've been following your channel for years and you've done a ton of cool stuff, and this is the most exciting thing you've done thus far. Seeing you actually move openDog around felt so satisfying.
This is one of your coolest projects EVER!
Can't wait till it takes its first steps, its like watching a child learning to walk. Top work James👍🏼
This is no easy feat! What a great journey we're all on here. Can't wait to see the finished rodo!
Wow! The robot looks absolutely great! You have great vision making this happen.Cant wait to see the first walking gait!
Instead of tying z height to the angle of the stick, you can use the rotation as the desired change from the current height. You'd twist one way to raise, other way to lower, with some comfortable dead zone in the middle. Would make controlling height a little more simple. I've used that approach in the controls for a pan-tilt mechanism controlled by a Nintendo Wii nunchuk. Stick isn't mapped to position, it's mapped to delta from current position.
I like it!
Your amazing! I loving that you shared this with everyone, so cool of you!
Fascinating, I'm totally hooked and looking forward to the next episode!
James is humble I found a guy ' styropyro' who shows himself prudent.
Incredibly well done! Must feel great to see your own creation awake to life.
Hey James, this is becoming my favorite of your projects, movement looks almost organic, very nice.
So cool to meet you at TCT on thursday James. openDog is even cooler in the 'metal' such a great series.
thanks for doing what you do, i ordered a teeshirt to show support. Your channel has really opened my eyes to what one person can do, if you set your mind to it. Since i started watching, ive designed built and coded my own one wheeled self balancing skateboard :)
Thanks!
So awesome seeing it move!
Great work James! Explaining software to viewers is always difficult, and you're doing a great job so far. If you need any help programming your algorithms it might be a good idea to build a simulator. Very useful for debugging, and allowing people to play with your work. Also makes for great visuals.
Looking awesome! Have the notification bell on! Really looking forward to each of these videos!
You can avoid the divide-by-zero issues by using the Pythagorean theorem to get the hipHypotenuse, legHeight and legLength values directly from the desired XYZ positions rather than using the angles.
hipHypotenuse = sqrt( sq(X) + sq(Z) )
legHeight = sqrt( sq(hipHypotenuse) - sq(HIPROD) )
or even better as
legHeight = sqrt( sq(X) + sq(Z) - sq(HIPROD) )
legLength = sqrt( sq(Y) + sq(legHeight) )
These will work even if X or Y is 0 since there is no division.
This is amazing-- The sounds are incredible and the work is just mind-boggling
Great to see OpenDog in the flesh at TCT today!
Cant wait for the next video!! I would totally buy a kit for this.
If i could make a kinda big suggestion, change your joystick assignments to match a common mode 2 radio.
basically left hand joystick would be forward/back, side strafe and yaw rotating, and right joystick would cover pitch leaning and roll leaning.
I dont know how this come to my feed but i kept watching your videos and im excited for you to make it walk...
Your videos are awesome. Thanks for all you do. Had to get myself a new shirt!
Hi Awesome project as always! Regarding degree to radial conversion: Because you are doing this only for the read purposes, you really should not use this converted back and forward values for calculations . Especially if you are proceeding operations like dividing, or multiplication on the results. This code (9:52) can be easily refactored to calculate directly on radians , and store converted degrees values aside for your debug purposes. I know that it looks harmless, but depending on how much time you multiply double-converted values you will see that the error here might end up somewhere around 10% (even using doubles as data types). I came into similar issue with some AI project. My values looked grate, but the results were way off!! Spare yourself time on figuring out why something might now work as you would have expected in the future, and fix it asap (or let contributors do it :D ). You are doing awesome, fingers crossed for this project !
Mr. Bruton... you're awesome sir.... Thanks for doing this project and sharing it. :)
Hello James. I realize you have already solved all your triangles so maybe I'm a bit late, but for next time.
There is a convention that can be used to solve the forward and inverse kinematics of a serial link manipulator in a relatively easy and systematic way. Just plug and chug some measurements from your CAD model into matrix formulas, multiply the matrices, and you have your forward kinematics. This forward kinematic model will not only give you the x,y,z position of the foot, but also the angular orientation. Solving the inverse kinematics is just a matter of re-arranging the forward kinematics which can easily be done with some matrix software, or it can even be done by hand.
If you don't have any experience in matrix math it can seem a little daunting, but I'm confident that with a matrix calculator and a couple youtube example videos that you could get through it without much problem.
The convention is called the Denavit-Hartenberg convention.
In my day job I am a control systems engineer with a background in mechanical design and mechatronic systems. I work with a lot of custom built machines for automation, and sometimes it requires solving the forward and inverse kinematics of a serial link machine. The DH convention is by far the easiest method to achieve this.
Thanks a lot for going into the IK stuff, I've been working in CG for years and IK has always been black magic for me, I'm so happy that you explained that! Thankfully now I'm in electronics and product development so I see an awesome project to start at +MakeraustriaAt
Now when you control a single leg, you can make him play checkers :p Amazing job!
The movement looks very sexy! When I think about all axis and calculations that have to be done in realtime during walking.... not an easy task that's for sure! But this seems to be no problem for James. Really cool project!!!
James is like a single person DARPA. Wicked smart, it's ridiculous. I'm just over here like: "Heh I made some servos move".
SOH CAH TOA ... been 20 years, never forgotten that
also, it needs big googly-eyes on the front pivots! :P
Getting there nice! Can wait to see it fully walk, great job.
Quite lucky as you don't seem to be suffering with any double solutions to the IK. One thing with CGI cahracter rigging is that there's often 2+ ways to solve the IK and you have to add mid way compensaters to help with the solving.
Aaack Aardvark And the leg angles correspond to spherical coordinates, except for the case where the knees are backwards.
In six axis robotics, when the 5th axis is at 0, axes 4 & 6 are lined up. This results in an infinite number of solutions, also known as a singularity. To maintain linear movement when the robot is near singularity, axes 4 & 6 have to move considerably faster than all of the other joints. Passing through singularity is impossible to do elegantly.
Very good explaining, I want to start my hexpod now.
Exciting. Cant wait for more
My OpenDog mug has arrived! it's possibly the finest mug i have EVER drunk from. i will never drink from anything else, ever!
thanks!
This is is crazy (the good way); awesome work James (the bar has been mega-raised :).
This is just such a cool project!
Consider laser alignment of legs, an ultra capacitor or something to amp up those motors and more titanium or other alloy , particularly towards ends of limbs. Nice dog.
I’ll say it again, James, you’re a bloody clever bloke! And where do you find the time??
This is the best thing on RUclips right now 👏👏
I can’t wait to see this walking. Great work!
I love the colour scheme. Reminds me of Lego Technic.
Hey James, nice build and very good explanation in IK! Would be interesting to see if walk soon!
You are so incredibly talented! Excited to see the future of it.
this looks like those drawings on artstation, but this one is REAL
Amazing stuff James! I can’t wait to see this project complete! Keep up the great work, have an awesome week!
This is amazing, your so good at this robotics. i'm sure you'll have that dog doing tricks in no time.....Sit boy, sit....good dog
this seems like a good candIdate for a crepp gait
Amazing Job, So jealous of your skill and knowledge
starting to look a bit creepy and organic in the movements, good stuff!
Wow, robotic dog food. That's nuts. ;)
You are NOT "cheating", its called "intelligent coding and design".
Great project James
Love watching your vids James, Cannot wait to see this bot running around :)
can't wait to see it walk :D
AHHHHHHHHHHHH this is so mad! crazy work as always James
Spot, the boston dynamics dog robot has another axis of movement, each leg can rotate horizontally around its own axis
This is going very well can't wait to see what's next for it! Maybe some type of claw at the front or something to pick up objects?
Looking forward to the video of him walking the dog in the street😁
Very interesting .. my favorite project on RUclips
Awesome video! I'm so inspired by your project!!
you lost me after the t-shirt! Still love watching!!!
A double on AVR is the same as a float (4 bytes). It is better to move to ARM for better precision and speed since you need a lot of calculations. The Arduino due is pretty good and still got the same pins and the switch is almost no work. A STM32 could also be used with some work for the 5v tolerant pins.
Amazing, and very good explanation as always ! Bought a T-Shirt, will wear it to MMF Sifi in November
Brilliant
Well done James
You sir, are a genius
Bruton Dynamics!
I learned something new today thanks a lot
complexly amazing!
now let it jump :P
great work man, keep on going.
When it comes to inverse kinematics, you might want to take a look to Forward And Backward Inverse Kinematics (FABRIK) that is an iterative approach. Worked well for me. Nice video, thank you for entertainment!
James : What I need ideally is to position my finger .
Me: THAT'S WHAT SHE SAID.
James you can link your tspring account to your youtube account so links and pictures of your merch auto appear before the comments section on all your videos - cheers!
Just replying, so he's more likely to see this :)
I just figured out why James is doing this... lonely headless robot man needs a cuddly headless robot dog to take for walks! :o)
John Colvin somehow reminds me of Wallace and grommet
Always apply golden ratio in design whenever possible :D And do tell us when it is going to fight the Boston BigDog
Very attractive. It's getting a little bit of joint workout in this one.