How to Use Mecanum Wheels in 200 Seconds
HTML-код
- Опубликовано: 21 июл 2024
- An animated guide to using mecanum wheels or omni wheels. This video visually demonstrates how to mount and program mecanum wheels.
The code in this video was created for FTC using the Qualcomm RobotCore platform, but it should be trivial to translate to a different programming language.
Chapters:
0:00 Intro
0:24 Mounting
1:02 Programming
3:02 End
Programs used:
Blender
Adobe After Effects
Adobe Illustrator
Desmotion (Developed by a friend and me)
link: www.monkeyflowermath.com/desm...
Krita
Audacity
HitFilm Express
IMPORTANT CORRECTION:
In method 2, inside of the if statement the turn values should be inside of absolute value functions:
If ((power + Math.abs(turn)) > 1) {
leftFront /= power + Math.abs(turn);
rightFront /= power + Math.abs(turn);
leftRear /= power + Math.abs(turn);
rightRear /= power + Math.abs(turn);
}
By far the best video I've ever found to describe mecanum drive. Absolutely wonderful, keep up the good work!
Amazing visuals, explanations, love the video style 🙌🏻pls keep making videos
Thanks. Really well made video.
Super well made video
the animations are awesome
It is a wonderful tutorial. Thanks.
More contents like this please.
Super useful to know how to position the wheels correctly. My challenge will be how to implement this motion into the controller that I'm using. I was thinking to use stepper motors and reuse an old 3D printer controller I had laying around. But I'm not sure how to work out the kinematics. I'm very new to that.
thank you so much for this video, I used these 200 second for a couple of hours now to try to implement a mecanum wheel based movement system in my robot. I'm using an arduino UNO with a FS ia6B receiver and noticed, that by using my own implementation of your code (yours seems to be in Java whereas the UNO uses c++ as its coding language, also my motor drivers dont use negative numbers but instead forward/backward + speed between 0 and 255) that my motors behave weirdly using method 2.
I only get a limited range on my sticks when trying to move diagonally, when i go to full throttle 45 degrees it will just stop after moving the stick past 75%ish. method one however works flawlessly, so i think im going to stick with that. Also apparently using method 2 was too much for my arduino as it started drawing all my current with method 2 and basically none with 1.
I'm kinda proud of my implementation of your method 2 but it's sad that all the time I spent on it was for nothing...
Ty, I have been looking on how to program a Mecanum wheel but so many videos only show which way the motor turns and no methods.
Nice and useful content. Greetings!
Great video and explanation, does this solution also work for 3 wheel omni drive "kiwi" systems? what would change?
I really think that you should enter SoME4 when it comes around and cover a topic similar to this
A different way to do the first half of method 2 with x and y input is to look at them as a vector and rotate them -45 degrees using a rotation matrix. Then you get the new axis. For field centric drive all what is needed is to put the angle of the robot in the rotation: (θ-45).
Very nice video! What are your controllers values at stick fully up, stick middle, stick fully down for Speed control? The final output to a wheel is in? (percentage or min / max bits for motor controller?)
The programming was primarily created for FTC, which has the vertical axis inverted so up is -1 and down is +1 the middle is 0. The horizontal axis has left as -1 and right as +1. The final output for each wheel is a range from -1 to +1 which you could convert to whatever scale your specific controller uses. I hope this helps
Noway you have such less subscribers. Keep working hard may god bless you.
Ty for helpful video. btw what if I just what to control it in 4 direction, then could I short 2 motor in same side together?
Oh my god thank you
This video has a 3blue 1 brown vibe, What software did you use ?
Really cool animation btw
Thanks :)
I used many different programs to make this video here is all of them:
Blender
Adobe After Effects
Adobe Illustrator
Desmotion (Developed by a friend and me; link is description)
Krita
Audacity
HitFilm Express
Very helpfull video! Im trying to code the second method in c ++ for arduino, but i was wondering what the " /= " operator does. You state in your video it scales them down so the values dont exceed 1, does it scale each wheel's speed by the same value?
/= means to divide itself by something. Thus the example from the video:
leftFront /= power + turn;
is functionally equivalent to:
leftFront = leftFront / (power + turn)
Hi, have you been able to make the code for Arduino work ?
Do you have a code to move the robot in a circular path ?
Amazing tutorial, explained everything very clearly and accurately without using vectors and had clean animatoin. However, the dividing by the maximum power to achieve a different direction was not explained clearly.
This may be silly, but do you need to be reading from encoders for this, or is it open loop?
If you are ok with potential slight inaccuracies I think you can just use percentage speed control using the pwm motor controller your dc motor is connected to.
how about a demo
Why do we subtract with Mat.PI/4 to convert to radians? Is this because you rotate the whole robot by -45°?
No because X would be one set of wheel and Y would be the other that way
Bro this c++?
Bro this c++?