Increasing the Precision of a 6 Axis Robot Arm

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 พ.ย. 2022
  • 3D printed mechanisms suffer form inaccuracies and flex, but adding sensors and a bit of simple software can regain those inaccuracies.
    The CAD and code are on my github: github.com/roTechnic/Robot-Arm
    These are the supplies i used:
    NEMA 17 stepper: amzn.to/3gtK3Qd
    Arduino Mega: amzn.to/3nx3Oui
    PTFE tube: amzn.to/3TrqDh1
    Fishing line: amzn.to/3PDTo8o
    Gear cables: amzn.to/3wLN46t
    Stepper motors: amzn.to/3G8mjx0
    Thin wall bearings: amzn.to/3H7JPZY
    1.75mm PLA+ filament: amzn.to/3HvzVT5
  • วิทยาศาสตร์และเทคโนโลยี

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

  • @kaedkay2472
    @kaedkay2472 ปีที่แล้ว +48

    Your progress and commitment to making levels of redundancy that most other 3d printed arms ignore is inspiring, and your videos are incredibly made. Keep it up!

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      Wow, thank you!

    • @wesleystuart1100
      @wesleystuart1100 11 หลายเดือนก่อน

      Agreed, nice progress and simple explanation. Keep up the good work

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

    Case anyone is wondering: the sensor he uses is a AS5600

  • @RacoonMedia
    @RacoonMedia ปีที่แล้ว +10

    This is a robot arm I actually want to build since it’s much simpler and well explained. Well done

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

    I used the same AS5600's and multiplexers on my quadruped! Amazing capability at a great price.

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

    Brilliant idea, thank you! I have been really struggling to work out how to actually know the movement is accurate.

  • @HornbyCrazy
    @HornbyCrazy ปีที่แล้ว +2

    Fantastic progress, I see this series becoming the go-to series for arms when it's complete

  • @JoergGebhard
    @JoergGebhard ปีที่แล้ว +2

    a very nice approach using the sensor and also nicely explained!

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

    Again, very impressive. I have too many irons in the fire at present, but have bookmarked your videos to come back to when I have the time. Thanks much.

  • @IainMace
    @IainMace ปีที่แล้ว +2

    Great video... Again. Thanks for taking the time to explain the logic you used in the error correction. That's really useful. Thanks and keep up the great work. Going to have a play with your Jupyter code... That looks super useful.

  • @klausnielsen1537
    @klausnielsen1537 4 หลายเดือนก่อน

    This is amazing. So well done both the video and the robot and the description. Thank you😊

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

    dude this is truly awesome, and its so super mega cool that you're just releasing all of the cad (and code?) stuff for free on your Github!! :O

  • @ShittyMetronome
    @ShittyMetronome ปีที่แล้ว +7

    That's brilliant ! I was affraid that, because of the bowden tubes, the wrist would be innacurate when the first three joints are moving. But the way that you've mounted the sensors and the code makes up for this ! Thank you for sharing all of this. Do you think you'll have a go with inverse kinematics ?

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

    An absolute joy to watch your videos! your explanation of the code made me breifly forget i don't read code without googling for hours, its brilliant!
    I'm definetely going to build one of theese as a gift for my littlebrother.

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

    Amazing work!! This is what inspired me to build a robot arm. Greetings from Brazil!

  • @nigelhungerford-symes5059
    @nigelhungerford-symes5059 ปีที่แล้ว

    Nicely done video and project

  • @PersianFilmMakers
    @PersianFilmMakers 8 หลายเดือนก่อน

    It was a wonderful video. It only lacks a few limit switches and the command to return home.

  • @MrNoipe
    @MrNoipe ปีที่แล้ว +2

    Great video, and its awesome to see the code open sourced too. It would be a huge benefit to make the title more informative to people looking up information about motor positioning!

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      Point taken :) I've changed it!

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

      @@roTechnic you're the best!

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

    This channel is amazing :D Very cool. looking forward to find the time to build your robot on my own :D

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

    Your videos are just a treasure! Thank you for all knowledge and great explanations! I keep a close on every part of you projects 😍

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

      Thank you very much! It's nice to see you making videos again!

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

    Well done, great job!

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

    Great video, thank you for sharing

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

    You need a PID controller for the joint angles.

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

    You really make this easier for us pessants, thank you so much!!

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

    Love your work! I've been working on a very similar project. 3D printed 6 axis arm, with the same sensors. The multiplexer was one idea I was missing.

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

      oh awesome! I’d love to see it. what reducers/gearboxes are you using?

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

      @@roTechnic unfortunately I'm travelling at the moment and my robot is mostly failed prints in a drawer somewhere right now. It's a hobby project so I've challenged myself to try include as many different reducer types as possible. Some axes are using planetary gearsets and GT2 belt and pulleys. I'm in the process of refining a cycloidal reducer for the elbow, and a harmonic drive for the wrist. Wrist is actuated from behind the elbow with a torque shaft and fishing line pulley system running through the forearm.
      Over engineered and destined to fail, but the project kept me sober during lockdown and that's all that matters.

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

      @@topordrop2402 It sounds awesome! Good luck!

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

    Excellent! love this channel

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

    Really good job!!

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

    Great job :D Inspirational :)

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

    Just found your channel today, amazing work! This is exactly the type of project I love to follow! Not sure if this has been said anywhere before but have you thought about using a synchromesh cable system for the build?

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

      I hadn't thought of that - Ill look into it. Thank you!

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

      @@roTechnic I seen one being used in the positron v3 3D printer on a pulley system to keep position and it looks like it did a great job. Not sure if it would overcomplicate things for you, or simplify knowing the position of each motor. Would love to know if you end up using it or the reasons why it's probably a terrible idea haha

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

    Cool project ! You might want to check problems linked with sensor and actuator non-colocation tho, it can make your system unstable

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

    Awesome machine. 👍👍

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

    Nice content and work. You could use something like pid controller better control the motors and reduce overdraft

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

    Your voice is impressing!

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

    6:25 this solution nice and easy, but what you think about PID loops? PID controllers are commonly using in the industrial servos.

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      Yeah, you can use a PID loop. in fact, this is basically just the P part of a PID loop. At the moment, I'm not seeing any oscillations using this method, but if they start happening then I'll switch to a PID loop.
      However, I do like to try to keep things simple, and if I don't need the full PID implementation then I think this is easier to understand :)

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

    very nice !

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

    Very impressive !

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

    i love this man

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

    Question: I have that as5600 board. what would you recommend for linear motion? Would this work as well for a motor the has to spin thousands of steps to say move a Z axis or even a belted X or Y? In inkjet printers they use a very fine transparent "barcode" thing, and that lets them count the steps I guess. I also use Geared stepper motors so the motor has to rotate multiple times to effect a single rotation. And finally, I haven't used them yet, but are you familiar with Geared DC motors that have built in encoders? They use two hall effect sensors to provide the position. If you are familiar, the MASLOWCNC uses 2 of these motors to "plot" a rotor, to cut plywood. Cool project. But again another closed loop approach.

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      They don't work that well for direct encoding, because they take a while to read (like 1/10ms) so can't be used to read the position every microsecond.. Although, that being said, I've got a project on the back burner using these and a stepper motor for full FOC control - a couple of things to sort out with it though.

  • @xToTaLBoReDoMx
    @xToTaLBoReDoMx 8 หลายเดือนก่อน

    PID might be a more robust option for the angle tracking

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

    Awesome!

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

    Looking good! How accurate is the AMS sensor? I think the datasheet says +/- 1 degree. Seems a lot for a 12 bit sensor? I assume you're not microstepping the motors?

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

      the +-1 degree is the accuracy of the initial reading. All readings following that are to 12 bit precision. We can get over the accuracy by manually setting the offset of the sensor and then get nice precise readings after that

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

      @@roTechnic I did some work with these a few years ago, looking for a cheap replacement for a resolver, but back then they weren't terribly accurate and needed a calibration. Then we looked at a sensor using pcb track antennas by Zettlex. Looks like the AMS chips have improved a lot in the meantime.

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

    Could you make a short video showing us how the robot arm might go about only changing a single value for each of its 6 degrees of freedom? Like for 1 shot, it oscilates between its rest position another position that only translates/rotates an attatched object along 1 axis at a time. How would you go about changing the pitch without changing the position, roll, or yaw of JUST the object? (More specifically, not changing the position of a single point, such as the center of mass or perhaps the attatchment point, Idk which one is correct)

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

      that’ll be coming up very shortly when I dive into the inverse kinematics

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

    how come the control wires don't come loose? They do need some freedom as the arm rotates, so how is that managed?

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

    Hi your project is awesome I'd love to take a look at the code.
    I tried looking at the linked Github page but is seems the only Arduino code posted is the code for the sensors alone. Is there a separate file that contains the code for running and controlling the stepper motors?

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

      Whoops never mind user error. For some reason when viewing the code from the Arduino IDE only some of the code is transferred. The rest of the code showed up when I opened it in Visual Studio.

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

      Hiya, no the zip file that says sensors contains all the code for the sensors and the steppers. It's all in separate classes in that. If you've got any questions, I'd be happy to help - just drop me an email - address is in the about section on my channel.

    • @PersianFilmMakers
      @PersianFilmMakers 8 หลายเดือนก่อน

      there is no email address in your about section !@@roTechnic

    • @roTechnic
      @roTechnic  8 หลายเดือนก่อน

      @@PersianFilmMakers there is, you've just got to click on "show email address"

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

    I thought you are going to apply PID for those encoders. What is this method called again? I remember James Bruton doing the same thing for one of his robots. I'd like to look up more about this method....

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

      Oh, and also do you plan on switching to a regular motor like a brushless or a brushed one now that you have encoders? Would certainly help in reducing the noise and heat from steppers I guess!

    • @boulder795
      @boulder795 ปีที่แล้ว +2

      @@rizalardiansyah4486 Steppers are pretty much the ideal motor for these arms until you can move up to fully fledged servos, brushed motors are obsolete these days and nothing quite comes close to the ease of use and stall torque of a stepper

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

      PID is more appropriate for control of analog devices such as heaters or brushed motors. I think I'm going to stick with steppers for now - see how far I can take them. I'd love to do a bigger arm with brushless motors though.

    • @unknownhours
      @unknownhours ปีที่แล้ว +2

      ​@@roTechnic Analog has nothing to do with it. PID would work fine expect this is a nonlinear system (Damn you gravity!). Though if you have enough torque , stiffness, and good sensor resolution, the non-linearity may be manageable.

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      Interesting, I didn't know that - thank you! unfortunately, torque and stiffness are not in great supply in this arm, but I am tempted to try out a PID loop. I imagine that you'd just set the PID to control the speed of the steppers and set them to rotate continuously - do you agree?

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

    I think that I am not the only thinking it but I want amplify the signal : the problem you are trying to solve has a solution, a PID loop.

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

      Yeah, I could use i PID loop here - and it would probably be better for a normal robot arm. But I'd like to put a camera on the end of the arm and have very well defined accelerations and speeds for camera moves. A PID loop, unless it is tuned perfectly won't give me the accuracy of speed/acceleration I need.

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

      @@roTechnic I understand the problem you are facing but as far as I know of control theory (so correct me if I am wrong) but any control loop you would implement would just be a dimished version of a PID loop, just with some terms missing.

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

      @@DucBanal in theory, yes. But in practice it’s much easier to tune a simple feedback loop like I’ve done here rather than implement a pod controller and just use the proportional side of it. As you saw in the video, I can easily adjust the p part (the 70/30% bit) but I have quick access to the timings around it too and can add polynomial terms in if I need to. I guess I’m saying that using a pid controller here would be like flying a jumbo jet to your local shops - very cool, but difficult to park!

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

    3:12 can we use an SPI bus instead of this multiplexor? i mean, exactly the same sensors but with SPI instead of i2c.

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

      Yes, if you can find cheap 12 bit magnetic encoders with SPI then please let me know - that would be much easier!

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

    Be careful the rabbit hole you're going down! Next is joint mastering, then camera-in-hand parametric calibration, then higher order calibration, then...

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

    Would it be possible to have the print files in STL format. I don’t have fusion nor do I want to install it since I’m in another ecosystem

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      I've just uploaded them as STEP files which you should be able to open in any CAD software. There are too many parts to export them all as STL and you'll need the cad to see what bearings and fasteners are needed and see how it all goes together

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

    Can you comment about the accuracy from this setup?

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

    So, it looks like you mounted the magnets in the center of the joint which I would have expected to mean that the magnetic field didn't change as they rotate. What am I missing? Are they off-center? Is something else going on?

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      the AS5600 sensors are supplied with "diametrically magnetised" magnets which have the field at 90 degrees to "normal" magnets. I got carried away and forgot to mention that in the video. Please accept my apologies.

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

      @@roTechnic oh. That's neat. Thanks for explaining!

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

    Q: Could it have extensible arms and still know exactly its exact ampleness as you stretch its limbs?
    It would be greatly useful when filming ample outdoor shots!
    That would require a way to give a lot of loose on the strings to adapt to the extra length.

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

      Interesting idea!

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

      @@roTechnic I just thought of something to prevent twisting... What if the motors section would rotate independently from the robotic arm so it could follow the arm's rotation and carry the cables along? It would prevent the dog from wrapping itself around the post right, sort of speaking.

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

      nice idea. I was considering mounting the motors on a free running bearing, like a lazy susan or something like that so they could move round the arm.

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

      ​@@roTechnic Somehow! I was thinking tonight also that alternatively, you could mount all motors on the lowest part of the arm and have it spin around with the same lazy susan but even better, if the base arm rotation can carry the motors around with their strings without torsion, maybe they could even be fixed. You could calculate, software side, the rotation of the arm's base to carry the strings around. And if I forgot anything and it wouldn'T work, the motors could still be attached around the arm base, but with an extra motor, smaller, weaker, that rotates the ring around, mounted back on that lazy susan.
      Also in any manner, you could keep the strings organized in something akin to fishing pole line guides which could be mounted onto something smooth like a bearing too.

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

    Why not use an optical encoder such as CUI AMT102-V which can be directly mounted on the shaft, but use a magnetic sensor instead? Any reason to go with that particular one?

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

      I don't want the encoders directly on the shaft of the motor as I'd like it to report on any deviations that the 3d printed gearboxes/bowden cables add to the system. The other problem with the optical encoders is that it takes quite a bit of processing power to read them as each pulse gennerates an interrupt, whereas I can just query the magnetic encoders any time I like with no overhead in between queries.

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

      To add to what I assume is part of their reasoning, the encoder you listed is incremental, and therefore wouldn't give them the absolute position of the arm on boot up, necessitating some sort of homing sequence. Furthermore, its far more expensive.

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

      @@BeefIngot Yup, both of those too!

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

    Perfeito !

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

    What about POTs

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

    I like Joy Division.. :)

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

    Pretty cool progress! I am quite happy to have stumbled over your profile!

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

      yes, the sensors are supplied with diametrically polarized magnets. I forgot to mention this in the video. good catch!

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

    👍

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

    Great project. This is very helpful for hobbists, would be nice also to see the overall cost of the project

    • @roTechnic
      @roTechnic  ปีที่แล้ว +2

      Thanks, that's a great idea. As the project progresses, I'll definitely add the cost to the details

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

    how many jobs can we automate with this, theres a labor shortage get them filled up with these bots test out your rough draft and make the final draft

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

    first!! nice video btw

  • @h7opolo
    @h7opolo 8 หลายเดือนก่อน

    2:08 "era, era" hahah you mean "error". there are two "R"s. why can't you pronounce the second one?