Wolfpack Movement Breakdown

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ก.ย. 2024

ความคิดเห็น • 20

  • @ElectricWizzz
    @ElectricWizzz ปีที่แล้ว +24

    Excellent video, I love how well you're presenting the thought paterns of your algorithms. I hope you make more of these videos!
    I do want to make a comment about Pure Pursuit which I have avoided making for a long time, but I think paired with your great presentation will be worthy for others to consider. Pure Pursuit is not meant to be used with a fixed "circle". It is an algorithm that should take physical limitation of what the robot can do under consideration if you scale the radius of the circle to the maximum turning radius for your given speed in order to avoid slipping. It can be tuned to be a true motion profiling system in that you set up a profile of the limitation of what the robot can do for your speed and adjust the path accordingly. Proper use of PP is to scale the circle with speed and then determine if you are going to hit any obstacle along the way, if you are then you need to slow down. It thus generates the fastest movement you can possibly do at all times and actively adjust speed as required. I think in the absence of a speed profile/model, this bezier curve solution is an outstanding improvement and probably much simpler/practical for most teams.

    • @rohanbandaru
      @rohanbandaru ปีที่แล้ว +4

      Tell em

    • @kadencassidy3134
      @kadencassidy3134 ปีที่แล้ว +3

      Thats really interesting. Thanks for the insight!

  • @fasvi1285
    @fasvi1285 ปีที่แล้ว +1

    Kaden, thanks for an amazing season. Your work is truly excellent.

  • @pjwetherell9414
    @pjwetherell9414 ปีที่แล้ว +5

    17:33 Yeah curvature is S=R*theta so in this case you can say that dS=R*dtheta. In other words the forward velocity equals the radius times the rotational velocity. You can find rotational velocity by taking the derivative of:
    d(theta) = d(arctan(dy/dx)) = 1/(1 + (dy/dx)^2)*(ddy*dx-ddx*dy)/dx^2.
    This then simplifies to:
    dTheta = (ddy*dx-ddx*dy)/(dx^2+dy^2)
    then R = dS/dTheta
    and dS is speed ie (dx^2 + dy^2)^0.5
    so you get:
    r = (dx^2 + dy^2)^0.5/((ddy*dx-ddx*dy)/(dx^2+dy^2))
    r = (dx^2 + dy^2)^1.5/(ddy*dx-ddx*dy)
    Hope this helps people understand how this equation actually is derived

  • @pjwetherell9414
    @pjwetherell9414 ปีที่แล้ว +5

    Yeah, when running a 3 odo setup you generally want to use the odo for the delta heading because it has a much higher precision than the imu for those smaller movements. That's why you use arcs for the entirety of that. Additionally, if you are finding that there is drift then you can do some sensor fusion to gradually feed in the imu to get the accuracy from that and the precision from the odo.

  • @Oscar-vs5yw
    @Oscar-vs5yw 7 หลายเดือนก่อน

    Awesome stuff!

  • @rohanbandaru
    @rohanbandaru ปีที่แล้ว +4

    wow, how did you learn about odometry and bezier curves and all this? I hope to one day become a god coder like yourself.

  • @arctan4547
    @arctan4547 10 หลายเดือนก่อน

    one issue with bezier curves is that is hard to interpolate distances nicely, so it kinda sucks for that, but its the best choice still

  • @theclueless11212
    @theclueless11212 ปีที่แล้ว +1

    how did you decide what point in the path to follow at a given time? Is it time-based or position-based or something else?

    • @codrincrismariu3443
      @codrincrismariu3443 ปีที่แล้ว

      From what I understood I don't think you follow a point. You can project your position estimate on the path and calculate the derivative of that curve which is basically the direction that the robot should go in, so the robot goes full speed at all times.

  • @rohanbandaru
    @rohanbandaru ปีที่แล้ว +1

    at 0:31 you say 2 wheel odometry but there are 8 wheels on the bottom of your robot??? Also could you explain what is the difference between PID and roadrunner?

    • @MrBzeeb
      @MrBzeeb ปีที่แล้ว +1

      I believe the two grey omniwheels are to support the intake extension slides. Only the two green omniwheels are used for odometry.

    • @Bobblebots3081
      @Bobblebots3081 ปีที่แล้ว

      Odometry wheels are omni wheels with encoders on their shafts that are sprung into the ground. By using 2 of these perpendicular to each other with gyro (or three without gyro), the robot's x position, y position, and rotation relative to the field can be determined very precisely. The 2 green omni wheels are their odometry wheels, the 4 yellow mecanum wheels are their drive wheels, and the 2 black omni wheels are to support their horizontal slide when it's extended.
      A PID (proportional integral derivative) controller generates feedback for motors or servos using the error between a desired setpoint and a current sensor reading to reduce that error. They can be used to generate motor powers for pretty much anything, whether that be sending a linear slide to a target extension, correcting gyro heading, or moving the robot from a current x/y position (read by odometry wheels) to a target x/y position.
      Roadrunner does much more than just generate motor powers. I don't use it, but I believe it is a program that does all the localization with odometry, parametric path generation, and motor power generation to follow that path for you.

    • @rohanbandaru
      @rohanbandaru ปีที่แล้ว

      @@MrBzeeb ohhh, then what are the tiny rollers on the green wheels for? Are those also for odometry?

    • @rohanbandaru
      @rohanbandaru ปีที่แล้ว

      @@Bobblebots3081 ohhh, thanks. I thought roadrunner was a bird.

  • @r3vipers753
    @r3vipers753 ปีที่แล้ว +1

    Could you explqin more about the scalar vect and the PID for the favored drive direction?

  • @charliepound6687
    @charliepound6687 ปีที่แล้ว +1

    Darn!!!!

  • @ollieb393
    @ollieb393 ปีที่แล้ว

    Bézier than what!?!?