Тёмный
DrBatanga
DrBatanga
DrBatanga
Подписаться
I have been coaching the FIRST Tech Challenge team 5064 - "Aperture Science" since the 2011 Bowled Over season. During all those years, I had the privilege to work and have fun with many talented students. Even earlier, I had started and FLL team with my own kids who are done with college by now and who are coaching and helping within the FTC community themselves.

The channel videos are mainly a showcase of what my students have accomplished each season. By sharing the robot runs, I hope to give other teams some insight into the team's work and solutions the students came up with.
2024 FTC CenterStage Asheville, NC Qualifier
7:36
5 месяцев назад
Комментарии
@marcserraortega8772
@marcserraortega8772 Месяц назад
Thanks a lot!
@DrBatanga
@DrBatanga Месяц назад
You're welcome!
@hi_beemo1808
@hi_beemo1808 2 месяца назад
I ince was doomed by the high speed and low torque of my robot in a compitition does anyone know if there is a way to control torque mechanically
@DrBatanga
@DrBatanga 2 месяца назад
Roughly speaking torque * speed = power. So since the FTC motors have a fixed maximum power they can produce, you either can choose between low torque+high speed or high torque+low speed and everything in between. And that's done by selecting the appropriate gear box for the motor. If you don't have the exact motor+gearbox you need, you can further gear down your wheels by an external gear set or pulleys with a timing belt or sprockets with a (plastic) chain.
@snikklemakes
@snikklemakes 4 месяца назад
Buddy got a stackmat a mat but cant get a real speedcube? Crazy
@Funrollercoaster606
@Funrollercoaster606 4 месяца назад
oh my I absolutely love thus
@glitchtime404
@glitchtime404 4 месяца назад
Trying to figure this code out was like trying to read ancient hieroglyphs with no water and the Rosetta Stone alone, but at least it explained it quite well so that’s nice 7.5/10 tutorial
@GrimCC1052
@GrimCC1052 4 месяца назад
Thanks for carrying us -24063
@selimgozel1132
@selimgozel1132 4 месяца назад
portal 2 reference 👀
@GrimCC1052
@GrimCC1052 4 месяца назад
Yes it is portal reference
@mexicosbestnoobpubg4668
@mexicosbestnoobpubg4668 5 месяцев назад
Where did you guys buy your scissor lift.
@DrBatanga
@DrBatanga 5 месяцев назад
GoBilda off the shelf 1102 Series Flat Beams, 11 holes. Screws with locknuts to keep it flexible.
@belugapanda3852
@belugapanda3852 5 месяцев назад
THE TEEMO HATS
@butterpeep1859
@butterpeep1859 5 месяцев назад
How does your hanger work?
@DrBatanga
@DrBatanga 5 месяцев назад
I hope it works reliably right now, but when it works we're using two hooks at the end of a lead screws that are powered by an Axon Max servo each. Pretty amazing that you can lift such a heavy robot with a couple of servos! This setup is fairly slow, but we only lift the robot off the ground by an inch. We have to extend the scoring slides to perfectly balance the robot though.
@ignhoopz
@ignhoopz 5 месяцев назад
sam callouts go crazy
@benhicks3011
@benhicks3011 5 месяцев назад
Me when aperture science :)
@safynator8050
@safynator8050 5 месяцев назад
I was on team 20086 and we thank you for carrying our butt in our one game together. 1:33 we played with yall and had our robot get demolished by static electricity.
@DrBatanga
@DrBatanga 5 месяцев назад
Glad to hear that! I hope you had a good time at the qualifier, that's what counts most.
@ceezee5712
@ceezee5712 5 месяцев назад
Nice video!
@shailesh9rai
@shailesh9rai 5 месяцев назад
Hi, I’ve 3 wheel odometry but I cannot place my 3rd wheel exactly aligned to centre of rotation. In fact I’ve to place it near my rear wheel. I put feed forward offset as negative value but how do I accommodate angle in the code? Any suggestion what to do when centre of rotation and third dead wheel is not aligned?
@benhicks3011
@benhicks3011 6 месяцев назад
turtle turtle turtle turtle turtlte turtle NOT TURTLE SHAPED @ryanhcode. ROBOT BLUE
@PeterRyden-jp6pz
@PeterRyden-jp6pz 6 месяцев назад
you should pick us
@eleelena1208
@eleelena1208 6 месяцев назад
Hello! This video helped me a lot to understand the concept of odometry. Sadly, when our team ordered the materials for this season we could only afford 2 rev encoders. I was wondering if there is any way we could implement odometry just by using two encoders on the x axis.
@DrBatanga
@DrBatanga 6 месяцев назад
Yes, I can think of several options here, though I don't have any hands-on experience on those. In essence you need to track 3 parameters of the robot, moving forward/backward, moving left/right and turning, so you also need 3 sensors in the general case, but you could get away with 2 sensors if you don't move the robot in all 3 orientations at the same time. If you have fixed wheels (not mecanum or omni) the robot can only go forward/backward and turn, but it cannot go sideways limiting the need of sensors to 2. We have use that in the past and it worked reasonably well for not too complex autonomous programs, by just using the motor encoders. If your robot uses a mecanum drive base, you could use the IMU in the controller to get the turn angle for the robot and use the two odometry sensors for x and y. However the IMU's angle tracking is not extremely accurate, but it may work just fine.
@herambsawant50
@herambsawant50 8 месяцев назад
Hello I am from team sigma #20890. I wanted to know if there is any way where we can avoid restarting of control hub after uploading the code?
@DrBatanga
@DrBatanga 8 месяцев назад
You should be able to upload new code onto the control hub without restarting it, at least most of the time. Occasionally, something gets stuck and requires a power cycle. If you have to restart your control hub each and every time you upload code, something's wrong. But that's impossible to troubleshoot with RU-vid comments. Contact another team close to where you live and ask them for help on site.
@gabogaona1282
@gabogaona1282 8 месяцев назад
Hi, im the captain of a mexico´s ftc team, i have some quiestions about the coder, what library did you use to define the XYHpos and where can i find it?, i´ve been trying to use the odometry in our robot and your video its so well explainded but i have those questions, i´d be glad if you can answer it, THHAAAANKSS
@DrBatanga
@DrBatanga 8 месяцев назад
There is no official library or third party code that I could share. All you need is a class that holds the three variables for x, y and h (heading). See code in the description of the video. Getting the odometry values is one thing, following a path is something you need to add on top.
@kapilraut3763
@kapilraut3763 8 месяцев назад
Please tell me what the delta n represents exactly
@Va_aV_
@Va_aV_ 9 месяцев назад
Instead of ticks? Will multiplying wheel revolutions * wheel circumference also give us a similar result for distance travelled by wheel??? :)
@ernestotu5350
@ernestotu5350 Год назад
Hello Please which battery did you use for this robot
@DrBatanga
@DrBatanga Год назад
We were using the "regular" Pitsco batteries. REV has flat ones too. Pitsco has become very expensive, not sure who sell "legal" batteries in the $50s nowadays. Google it.
@ftc21836
@ftc21836 Год назад
Nah bruh 6:14:14 match was crazy 🤣
@shishghate
@shishghate Год назад
Great video, is the rest of the code posted someplace? Especially the part on line 46? The goToPosLinear method? We are curious to see how that works.
@DrBatanga
@DrBatanga Год назад
The short answer is no. Basically, I recommend some P or PID controller to follow a given path. There is no one-size-fits-all solution though. It depends on the hardware (mecanum vs. holonomic etc) and there is always a compromise between speed and accuracy.
@jargonian9758
@jargonian9758 Год назад
Hey! What is the purpose of telemetry dx, dy and dtheta? Is that stored for user reference? Also, what is LENGTH? Is that the length of the robot.
@youfu90
@youfu90 10 месяцев назад
you are asking about the equation or the code?
@OrphanBots
@OrphanBots Год назад
what library are you using or what imports, nothing from FTCLib (not as far as I've found anyway) have that XyhVector stuff, or am I encountering a problem unrelated to the libraries and imports
@calebstanziano6033
@calebstanziano6033 9 месяцев назад
I'm having that problem too. I see that it is a class he had but I have little idea of what is inside it. By the way this video is amazing. I just started learn odometry and you made it so simple. Thanks.
@calebstanziano6033
@calebstanziano6033 8 месяцев назад
I had to create that class. It wasn't too difficult or anything.
@arshadanas
@arshadanas Год назад
Wow I love ftc team 5064 intergalactic aperture sciences so awesome robot reveal for the 2022-23 powerplay awesome season at aggieland state championship winning with sea krakens and binding mhm i love aperture ciencias curse broken yay
@benhicks3011
@benhicks3011 Год назад
This is so inspiring from team 5064 we love aperture science truly the best team in the state of North Carolina make worlds next year fr fr I lost team 7105 intergalactice space aperture sciences to my fav is 5064 tho also mr worldwide is the goat also sheat metal where?.?.?..?.?.?
@pwipjh
@pwipjh Год назад
somewhere in germany but i cant place it
@mezifchak3787
@mezifchak3787 Год назад
man I hate this part of texas 🙄
@pwipjh
@pwipjh Год назад
close my eyes, fantasize💥
@mezifchak3787
@mezifchak3787 Год назад
three clicks and I’m home
@pwipjh
@pwipjh Год назад
when i get back i’ll lay around
@mezifchak3787
@mezifchak3787 Год назад
@@pwipjh then I’ll get up and lay back down
@mezifchak3787
@mezifchak3787 Год назад
is that FIRST Inspires Robotics Competition FIRST Tech Challenge Program Team 5064 Aperture Science’s 2022 through 2023 FIRST Energize Presented by Qualcomm POWERPLAY Season Presented by Raytheon Technologies robot Winston?
@colinvernon6779
@colinvernon6779 Год назад
How does this affect Lebrons legacy?
@mezifchak3787
@mezifchak3787 Год назад
will absolutely wreck it
@mezifchak3787
@mezifchak3787 Год назад
❤️😍🤤🤯🫣🤭☺️
@mezifchak3787
@mezifchak3787 Год назад
literally the best robot ever manufactured 🫡😍
@pwipjh
@pwipjh Год назад
more influential than the industrial revolution
@pwipjh
@pwipjh Год назад
WHOS WINSTON¿?
@mezifchak3787
@mezifchak3787 Год назад
an icon ❤
@thomasfasan6992
@thomasfasan6992 Год назад
i❤Winston
@taffy2753
@taffy2753 Год назад
Wow i love team 5064 aperture science's robot reveal featuring Chuu and Pitbull
@colinvernon6779
@colinvernon6779 Год назад
Iconic ❤
@respieces5129
@respieces5129 Год назад
So fire. Those guys must be so smart and cool fr fr ong ong 🔥💯
@colinvernon6779
@colinvernon6779 Год назад
Fr on god
@mezifchak3787
@mezifchak3787 Год назад
iconic ❤
@alteru1626
@alteru1626 Год назад
WALTAH
@kenusaga
@kenusaga Год назад
In your code in the notes what is: pos.h = normDiff(pos.h);
@DrBatanga
@DrBatanga Год назад
As the robot keeps turning, the heading or angle may increase to very high values. It's a good practice to keep them bounded within one rotation, let's say between +/-180 degrees or +/- pi in radians. That's what the normDiff function does. Keeping track of the heading is a tricky business as you turn the robot and needs careful thought. For instance if the robot points to -150 degrees and you want to turn it by 90 degrees clockwise, you will end up at -240 degrees which is the same as +120 degrees.
@mohamedazimal3187
@mohamedazimal3187 Год назад
@@DrBatanga can we use atan2((y_goal - y_current),(x_goal - x_current))?
@RichRuggeri
@RichRuggeri Год назад
Team 6418 Question for the two X encoders couldn't you use the actual motor encoders realizing of course that their resolution/tick count will be lower than the omni wheel version. Wouldn't this simplify things because you would only need to add one omni wheel for the Y axis to the robot?
@DrBatanga
@DrBatanga Год назад
Good question. Yes, you can do odometry in many different ways, but the results will differ too, and it all depends on your drive base. When using motor encoders, you run into issues with wheel slippage and you don't register bumping into walls or other robots. We have looked at different approaches over the years and they all worked more or less: (1) 2 fixed drive wheels + 2 omni wheels or a caster wheel. There is a general closed mathematical solution for this type of robot which is somewhat complicated to implement, but you can divide your path into straight lines and tunes to make the software simple. We used that years ago on our Lego robots and early FTC robots. (2) Mecanum wheels + IMU. Mecanum wheels are fairly good driving, but strafing cannot be tracked reliably with encoder ticks from the motors. We have used mecanum wheels in conjunction with an IMU in the past and got fairly good results. (3) Holonomic drive base (4 omni wheels). Very inaccurate odometry based on drive wheel encoders. You'll need dead-wheel odometry. To answer you question, my gut feel is to go with either (1) or (2) or implement the complete 3 dead-wheel odometry. The latter one gave us the best results by far, but the other two can be programmed and tweaked good enough as well.
@RichRuggeri
@RichRuggeri Год назад
Team 6418 says hanks for the very prompt reply
@danielesteves3435
@danielesteves3435 Год назад
Fantastic video. Please make more follow ups or upgrades. We needed this. Thanks from #4416
@DrBatanga
@DrBatanga Год назад
Will do. We are currently wresting with path following and OpenCV and I'm hoping the dust will settle soon.
@gabealimov1479
@gabealimov1479 Год назад
Do you guys have a source code posted anywhere?
@DrBatanga
@DrBatanga Год назад
The short answer is no, but since you asked, I added the main odometry function from our live code to the video description. Hope this is enough to get you started.
@jozefsprunk607
@jozefsprunk607 Год назад
GREAT video! helping my ftc team so much. still really struggling with implementing the code but a great start thanks to you!
@RejatKrishnan
@RejatKrishnan Год назад
so do you call the encoders as motors in the configuration on the phones?
@DrBatanga
@DrBatanga Год назад
Yes, they are set up as dcMotors and need to be named and defined in the REV controller accordingly. There are two ways of using the encoders: (1) They are plugged into a port to which a motor is also connected. In this case the motor cannot use its own encoder and has to run without encoder. You can still read the encoder values from the odometry encoder plugged into the port. To make the program more readable, assign a new variable to the existing motor: motorSlides2 = hardwareMap.dcMotor.get("motorSlides2"); motorSlides2.setDirection(DcMotorSimple.Direction.REVERSE); motorSlides2.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE); motorSlides2.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER); encoderLeft = motorSlides2; // encoderLeft shares a port with motorSlides2 (2) If you don't use all 8 motors on your robot, you can connect the odometry encoder to an open motor port. In this case we use this setup: encoderRight = hardwareMap.dcMotor.get("encoderRight"); encoderRight.setDirection(DcMotor.Direction.FORWARD); encoderRight.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE); encoderRight.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER); Hope this helps. Good luck this season!
@andew2007
@andew2007 Год назад
Love the team name!
@crabbydood933
@crabbydood933 Год назад
Can’t you just have the robot spin in a circle and divide each of the encoder values by 2pi to find the exact distance from the center instead of measuring by hand .
@DrBatanga
@DrBatanga Год назад
Yes, you can and we actually did. It's more accurate that measuring by hand. Before that, you also should drive the robot in a straight line and record the distance and encoder ticks. With that, you get the effective wheel diameter which may be off a bit from the nominal 60mm.
@EXPLODINGETDOOD
@EXPLODINGETDOOD 2 года назад
Thank you so much! This video will make the perfect base for a lesson on odometry for my vex edr team. This is well crafted and way easier to understand than the few other odometry videos