Introduction: GorillaBot the 3D Printed Arduino Autonomous Sprint Quadruped Robot

About: 3D printing and programming robots made easy

Every year in Toulouse (France) there's the Toulouse Robot Race #TRR2021

The race consists of a 10 meter autonomous sprint for biped and quadruped robots.

The current record I gather for quadrupeds is 42 seconds for a 10 meter sprint.

So with that in mind I had to come up with a plan of designing a robot that I thought could beat that in order to become the new reigning champion!!!

Seeking a bit of inspiration from a fellow Instructables member "jegatheesan.soundarapandian" and last year's winner of the Toulouse Robot Race "Oracid 1" who both seem to love designing and sharing tutorials on how to build quadrupeds. I got started on basically copying there design and making it a bit bigger!

The design is based on a five bar linkage mechanism for each leg 2 servos power each leg for a total of 8 servos.

The rules state that apart from the start signal the whole race must be carried out by the robot autonomously so I had to come up with a light weight system to keep the robot on track in this case I used a QMC5883L Magnetometer (digital compass) so it could keep true to its orientation, a HC-SR04 Ultrasonic sensor in case the robot really messes up and starts hitting the wall at a 90 degree angle and I just used a step counter in the code to tell it how many steps it should do for 10 meters.

In case your interested in building this robot don't worry this monkey's got everything thought out!

100% Support free 3D printable Body:

Everything apart from the electronics and screws to attach the electronics are 3D printable, the same small cross head screws are the only ones used, all you'll need is a small cross head screwdriver to assemble the robot

Easy plug and play electronics:

no complex soldering required

Reasonable print time:

He may look big and imposing but he's only a 15 hour print (ok a long time for some :D)

Reasonable Build volume requirements:

He can be printed on a relatively small printer requiring a build volume of only L:150mm x W:150mm x H: 25mm

Total robot cost:

The robot alone costs around 75$ to build charger included

A 3D printed controller (optional) is required if you want the same set up as I have.

WARNING:

The 5V 3A power supply that I used isn't the best solution as for this robot to walk all 8 servos must run simultaneously and thus they draw quite a lot of current don't worry I haven't had the robot catch fire or anything but expect the power transistor to heat up quite a bit I would not recommend using the robot for more than 2 minutes at a time letting it cool down between runs to avoid any unwanted damage to the Servo shield.

If any of you have a solution to this problem your input would be greatly appreciated!

Supplies

SUPPLIES FOR THE ROBOT:

      • 8x Tower Pro MG90S analog 180 deg servo (Aliexpress/Amazon)
      • 1x Sunfounder Wireless Servo Control Board (Sunfounder Store/ RobotShop)
      • 1x Arduino NANO (Aliexpress/Amazon)
      • 1x NRF24L01 Transceiver Module(You don't need this if your not using the controller) (Aliexpress/Amazon)
      • 1x Magnetometer (digital compass) QMC5883L GY-273 (Aliexpress/Amazon)
      • 1x Ultrasonic sensor HC-SR04 (Aliexpress/Amazon)
      • 2x 18650 3.7V Li-ion batteries (Aliexpress/Amazon)
      • 1x 18650 dual Battery holder with on off switch (Aliexpress/Amazon)
      • 1x 18650 Li-ion Battery charger (Aliexpress/Amazon)
      • 4x female to female dupont jumper cables 10 cm long (Aliexpress/Amazon)
      • 4x female to female dupont jumper cables 20 cm long (Aliexpress/Amazon)
      • 10x Screws 2mm x 8mm (same as the screws in a pack of servos) (Aliexpress/Amazon)

          CONTROLLER:

          To control this Robot manually you will need the 3D printed Arduino Controller (link here)

          The Robot can also be purely autonomous so the controller is not mandatory.

          PLASTICS:

          The parts can be printed in PLA or PETG or ABS.

          !! Please note a 500g spool is more than enough to print 1 Robot !!

          3D PRINTER:

          Minimum build platform required: L150mm x W150mm x H25mm

          Any 3d printer will do. I personally printed the parts on the Creality Ender 3 which is a low cost 3D printer under 200$ The prints turned out perfectly.

          Step 1: 3D Printing the Parts

          So now it's time for Printing...Yeay!

          I Meticulously designed all of the parts to be 3D printed without any support materials required while printing.

          All the parts are available to download on thingiverse (link here)

          All the parts have been test printed on the Creality Ender 3

          • Material: PETG
          • Layer Height: 0.3mm
          • Infill: 15%
          • Nozzle diameter: 0.4mm

          The parts list is as follows:

          • 1x BASE ELECTRONICS
          • 1x BASE BACK
          • 1x BASE FRONT
          • 8x CIRCULAR PIN L1
          • 4x CIRCULAR PIN L2
          • 4x CIRCULAR PIN L3
          • 4x CIRCULAR PIN L4
          • 8x THIGH SERVO
          • 8x THIGH
          • 8x CALF EXT
          • 8x CALF INT
          • 8x FOOT
          • 4x SQUARE CLIP
          • 44x CIRCULAR CLIP

          The files are available as individual parts and group parts.

          For fast printing simply print every single GROUP.stl file once.

          Step 2: Assembling GorillaBot's Body

          All the assembly instructions are depicted in the assembly video above:

          1. Place a CIRCULAR PIN L1 in the hole of the BASE FRONT front left servo holder
          2. Feed the cable of one of the MG90S servos through the slot in the BASE FRONT front left servo holder
          3. Slot the MG90S servo in place
          4. Secure the MG90S servo in place with 2 screws (do not over tighten as this could damage the BASE)
          5. Repeat the same process for the BASE FRONT back left, front right and back right servo holders
          6. Repeat the same process for the BASE BACK front left, back left, front right and back right servo holders
          7. Secure the Battery holder to the BASE ELECTRONICS with 2 screws diagonally or 4 screws
          8. Secure the Wireless Servo Control Board to the BASE ELECTRONICS with 2 screws diagonally or 4 screws
          9. Clip the Arduino nano and NRF24L01 transceiver to the Wireless Servo Control Board
          10. Slide the BASE FRONT on to the BASE ELECTRONICS through the 2 square holes USB port facing back
          11. Secure in place with 2 SQUARE CLIPS
          12. Slide the BASE BACK on to the BASE ELECTRONICS through the 2 square holes USB port facing back
          13. Secure in place with 2 SQUARE CLIPS
          14. Secure the Magnetometer to the BASE FRONT with 2 screws
          15. Clip the Ultrasonic sensor on to the BASE FRONT
          16. Guide the servo cables towards the Wireless Servo Control Board as shown

          Step 3: Plugging in the Electronics

          All the connections are depicted in the Image above:

          1. Plug the 4 20cm dupont cables in to the wireless servo control boards Ultrasonic pins
          2. Plug the other end of the 4 cables in to the Ultrasonic sensor (Make sure they are the right way around)
          3. Plug the 4 10cm dupont cables in to the wireless servo control boards Magnetometer pins
          4. Plug the other end of the 4 cables in to the Magnetometer (Make sure they are the right way around)
          5. Plug all the servos in to their dedicated pins in the wireless servo control board
          6. Screw the battery VIN and GND wires to the wireless servo control board insure correct polarity

          Step 4: Assembling GorillaBot's Legs

          All the assembly steps are depicted in the assembly video above:

          1. Slide 1 FOOT over 1 CIRCULAR PIN L4
          2. Slide the thicker end of 1 CALF EXT over the CIRCULAR PIN L4 with the sticking out side facing away from the foot
          3. Slide 2 CALF INT over the CIRCULAR PIN L4
          4. Slide the thicker end of 1 CALF EXT over the CIRCULAR PIN L4 with the sticking out side facing towards the foot
          5. Slide 1 FOOT over the CIRCULAR PIN L4
          6. Secure in place with 3 CIRCULAR CLIPS
          7. Slide 1 CIRCULAR PIN L3 through 1 of the assembled CALF EXT
          8. Slide 1 THIGH SERVO over the CIRCULAR PIN L3 with the sticking out side facing towards the CALF EXT
          9. Slide 1 THIGH over the CIRCULAR PIN L3
          10. Slide the CIRCULAR PIN L3 through the other assembled CALF EXT
          11. Secure in place with 3 CIRCULAR CLIPS
          12. Slide 1 THIGH SERVO over 1 CIRCULAR PIN L2 with the sticking out side facing towards the CIRCULAR PIN L2's head
          13. Slide the CIRCULAR PIN L2 through both of the assembled CALF INTS
          14. Slide 1 THIGH through the CIRCULAR PIN L2
          15. Secure in place with 3 CIRCULAR CLIPS
          16. Repeat all processes for the remaining 3 legs bare in mind that when the legs are assembled to the robot the pins heads face outwards and the CALF EXTS are in front of the CALF INTS so assembly will be identical front to back but symmetrical from left to right.

          Step 5: Installing Arduino

          GorillaBot uses C++ programming in order to function. In order to upload programs to GorillaBot we will be using Arduino IDE along with a few other libraries that need to be installed in the Arduino IDE.

          • Install Arduino IDE on to your computer: Arduino IDE (link here)

          In order to install the libraries in to Arduino IDE you must do the following with all the libraries in the links below

          1. Click on the links below (this will take you to the libraries GitHub page)
          2. Click the green button that says Code
          3. Click download ZIP (the download should start in your web browser)
          4. Open the downloaded library folder
          5. Unzip the downloaded library folder
          6. Copy the unzipped library folder
          7. Paste the unzipped library folder in to the Arduino library folder (C:\Documents\Arduino\libraries)

          Libraries:

          And there we have it you should be all ready to go In order to make sure you have correctly set up Arduino IDE follow the following steps

          1. Download the desired Arduino Code below (GorillaBot Controller & Autonomous.ino)
          2. Open it in Arduino IDE
          3. Select Tools:
          4. Select Board:
          5. Select Arduino Nano
          6. Select Tools:
          7. Select Processor:
          8. Select ATmega328p or ATmega328p (old bootloader) depending on which Arduino nano you purchased
          9. Click the Verify button (Tick button) in the left upper corner of Arduino IDE

          If all goes well you should get a message at the bottom that says Done compiling.

          Step 6: Uploading the Code

          Now it's time to upload the code to GorillaBot's brain the Arduino Nano.

          1. Plug the Arduino Nano in to your computer via USB cable
          2. Click the upload button (Right arrow button)

          If all goes well you should get a message at the bottom that says Done Uploading.

          Step 7: Calibrating the Servos

          In order to assemble the legs correctly we must home the servos to their home position.

          1. Insert 2 Li-ion Batteries in to the battery holder
          2. Switch the robot on and wait 5 seconds for the servos to reach their home position
          3. Switch the robot off

          Step 8: Assembling Legs to Body

          Connecting the legs to the servos is pretty straightforward simply remember that the CALF EXT are to be placed in front of the CALF INT during assembly pin heads facing outwards.

          1. Slide the THIGH of the CALF EXT side of one of the legs over the CIRCULAR PIN L1 on the front front left servo holder
          2. Secure in place with 1 CIRCULAR CLIP
          3. Slide the THIGH SERVO of the CALF EXT side of the same leg over the servo head on the front front left servo holder (Make sure the THIGH SERVO is at a 90 degree angle to the body)
          4. Secure the THIGH SERVO in place at a 90 degree angle to the body with a single arm servo horn and small servo screw
          5. Repeat the same process for the front back left servo holder with the remaining THIGH and THIGH SERVO of that leg
          6. Repeat all previous processes for the remaining 3 legs

          Step 9: Ready to Race!!!

          So that's it you should be all ready to go!!!

          Manual mode:

          • Switch the robot and controller on and check that the robot walks properly by using the up down left and right directions of the Joystick.
          • Press the down button and the robot should perform a little dance

          If everything works well the servos are well calibrated and you can now try out autonomous mode.

          Autonomous mode

          Autonomous Sprint mode uses the Magnetometer to keep the robot running in a constant direction for 2.5 meters. You can program the desired position and desired angle of correction using the controller

          1. Switch the robot and controller on
          2. Move the robot in all directions to calibrate the Magnetometer for 5 seconds
          3. Place the robot on the ground in the desired position you would like him to go in
          4. Press the up button to memorise that heading
          5. Turn the robot 30-45 degrees to the left of desired heading
          6. Press the left button to memorise that position
          7. Turn the robot 30-45 degrees to the right of desired heading
          8. Press the right button to memorise that position
          9. Place the robot back in to its desired heading
          10. Press the joystick button to start the robot

          The robot will run in a constant direction for 2.5 meters then stop sit and do a victory dance.

          My robot managed to do the 2.5 meters in 7.5 seconds.

          Which gives me a theoretical time of 10 meters in 30 seconds which hopefully will be enough to give me a good time at the Toulouse Robot Race

          Wish me luck and for those of you who decide to build this robot I would love to hear your feedback and potential improvements that you think could be made!!!