Close
0%
0%

RoDog

3D printed Quadruped Robot

Public Chat
Similar projects worth following
A 3D printed quadruped Robot, RoDog.
I first started developing this Robot in my freshmen year, multiple iterations have been made and various versions, converging to it's current form.
it is controlled by a custom stm32f4 board that I designed, my goal is to develop a reliable, hobby-level quadruped robot with relatively accessible parts. I plan to release the project files once I'm confident enough of its performance.

3D printed, Fully accessible!

this particular design implements:

  •  12 RC servos actuators, each having position and force feedback.
  •  9 DOF inertial measurement unit, Gyroscope, accelerometer, magnetometer
  • ESP8266  WiFi connectivity.
  • 2S Li-ion charging circuit with the USB port
  • UART breakout for expansions
  • 3 Ultra-sound interfaces
  • DCMI interface
  • Load switch to activate or deactivate the actuators

RoDog_Mobo.zip

BOM, xyz production, and GRBR files, everything you need to manufacture a motherboard for yourself

x-zip-compressed - 908.16 kB - 07/19/2022 at 21:07

Download

Rodog.rar

STEP file of the Assembled Robot

RAR Archive - 12.34 MB - 07/10/2022 at 14:43

Download

firmware.ioc

this is the CUBEMX pinout project, I'm still working on the firmware itself, but if you wish to generate your own, go ahead

ioc - 14.98 kB - 07/10/2022 at 14:35

Download

  • 1 × Main control board the motherboard, has components on both faces, you can order it from any capable manufacturer that can assemble components on both faces, or solder the yourself if you know how to
  • 6 × 18650 Li-ion battery I would recommend any battery that has > 2500mah
  • 12 × Servos although the robot is fairly light ~ 1.3kg, I would recommend using 20kg.cm DS3218 servos or any equivalent, you can try with weaker servos like the MG996R ~13kg.cm on your own risk
  • 12 × Aluminium servo horn Plastic horns that come with the servos are fine, but if you have the means I would recommend the Aluminium ones
  • 2 × M4x60mm standoffs these standoffs really help connecting the two ends of the robot rigidly, any metal material is fine.

View all 25 components

  • PCB Manufacturing

    Wissam Tedros08/26/2022 at 16:51 0 comments

    In this blog I will walk you through how you can order one of the Boards for yourself, and present you my experience with PCBWay, who decided to Sponsor my board, Big shoutout for them :)

    PCBWay has a quick PCB order option where you can simply Upload the GRB.zip files, then the page will automatically load again with all the parameters needed to proceed with the order. Do not worry if the small GRBR viewer shows with some defects, you can have a proper view by visiting their online Gerber viewer. 

    Next the site will ask you to name the 4 layers of the board, Do as shown in the following picture

    I benefitted from PCBWay's assembly service as there a Lot of Small SMD parts on my board, on both sides that I don't feel comfortable assembling by hand, so you can choose to do so by scrolling down and checking the "Assembly Service" section, you can either input all the parameters or, PCBWay will do that for you once you upload the BOM and xyz files.

    After submitting all the files, you will have to wait 24hrs for engineering audit which of course, this board passes, Due to the current chip shortage, you might be contacted by the support team after the audit informing you that some parts are out of stock, PCBWay suggests for each missing part a replacement and inform you of the lead time (usually between 7 and 14 days), I tried to make this board with ICs that were in stock on Mouser, Digikey, and LCSC, but unfortunately there's no way to guarantee the availability of all the components.

    Once happy with all the parts, you can then pay for the board manufacturing, assembly and parts costs, and choose your preferred shipping method, in no more than three weeks your assembled board will be at your doorstep. 

    I even had some wrong parts that I needed to replace after the confirmation of the quotation, by simply contacting the support team they accepted to replace the wrong part with no additional cost :)

    Before shipping, PCBway sends you a Picture of your assembled board to confirm if everything is spot on, and sure enough it was, here are the pictures that were sent by their support after the assembly

    Finally, here are some pictures of the board taken by me, when it was delivered:

    I highly recommend PCBWay for any PCB manufacturing you need, especially if you would like to get one of this board, you can find the files in this blog under the "files section".

  • Inside the Robot

    Wissam Tedros07/13/2022 at 11:06 0 comments

    Let's take a closer look at what's inside the robot ;)

    Here are two renders without the chassis part and covers, you can see how compact everything is!
    I made sure to have everything symmetric as to get a center of gravity in....well the center!
    concentrated mass is always a good idea, and as compact and stressful to assemble as it may seem, it's actually pretty easy to do so, the batteries are fixed to a bottom part that is secured with 2 bolts and could be removed by simply disconnecting them form the board and the switch

    You can see that there's only one board inside the robot, the mother board, no power distribution stuff, no extra breakouts, just the motherboard, which might be both a blessing and a curse, having a logic board connected to a power distribution board might be a safer system, but space is money in my case. Everything I need is one the board, and there's a blog on that, make sure to check it out!

    The battery power doesn't just connect to the board, there is a 6.3A fuse, and 10A manual switch before that, to ensure security, the load switch on the board is good for up to 9A!

    The servos for the Hip joints are nicely tucked inside the chassis, optimizing the usage of the space available and giving the Robot an overall shorter length.

    Consider this quick blog as an introduction to what I'm working on currently, which is a full assembly manual of the Robot, with exploded views of the assemblies and annotations!

    I'm also working on a render that has some open source quads lined up together, I'm reaching out to their creators, if you designed a quadruped and have no problem sharing the STEP and would to see it, Private message me and I'll add yours to the render!

  • New Mother-Board

    Wissam Tedros07/10/2022 at 14:25 0 comments

    After overly testing the Last mother board, I listed some issues that lead me to design an optimized version of the mother-board, The new version has the same features of the last one with few improvements.
    It features: (* New)

    • *STM32f407vet6 rather than the STM32f405rgt6.
    • 12 PWM outputs for the servos
    • 12 ADC inputs for position feedback
    • 12 current sensing circuits for force estimation feedback
    • *lsm6dso32x and hmc5883cl magnetometer working as a 9DOF Inertial measurement unit with interrupt pins attached to the MCU.
    • *On-board Esp8266 for AT commands, and UART port exposed for programming it
    • *Load switch on the Servo Power, this Load switch is activated by a GPIO and the MCU Reset pin, if the MCU is in Reset mode, the power to the servos is cut-off, this is to remove the random chaotic servo moves when the microcontroller is in reset mode.
    • *New IC for battery management, (Charge through USB-C, and Balancing)
    • *DCMI interface and a ov2640 camera breakout
    • *SD card with SDIO interface
    • *3 Ultra-sound sensors GPIOs with connected Trigger pins
    • *UART port exposed for any expansions needed
    • *Better current consumption (9~25mA vs previously 20~50mA)
    • *All ADC inputs are protected with clamping Diodes and resistors.
    • *Better Isolation between the Power planes and the I/Os
    • *lots of indicator LEDs and Test-Pads(check the layout + Schematics)

    As you can see, there are 3 boards, the Mother board, the camera breakout , and an ST-LINKV2 to mini SWD breakout, of course, they are meant to be separated

    you can Check the schematic and GRBR files in the project files section!

  • Some Pics :)

    Wissam Tedros11/12/2021 at 11:30 0 comments

    figured It's about time to take some respectable Pics of the robot, so here goes nothing

  • Simulation

    Wissam Tedros09/20/2021 at 15:50 0 comments

    with the help of a MATLAB Simulink trial, I managed to animate My CAD assembly, to get a feel of how to manage the inverse kinematic model control on my embedded system.

    here is the Block diagram of my Simulink:

    A Bezier curve is generated from 13 data points, to generate the path of the end effector as the robot walks, this curve widens as the velocity of the body increases. it is also rotated based on the "heading" angle,  that dictates the walking direction of the robot.
    this curve is then sent to the "body orientation" block, where, to handle the rotation of the local frames, to keep the end effector static to the world frame.
    finally, the XYZ of each end effector is sent to the Inverse kinematic solver for the leg, that outputs the 3 necessary angles for each joint (H , L and K).
    I have plans to make a DXF to timeseries converter, to make the robot move along the path drawn, but that is a future non-primary goal. I still have some control to do for the body velocity, as I don't have a convincing feedback of it. 

    Here are some of the outputs I got with this block diagram:

  • Current Mechanical design

    Wissam Tedros06/14/2021 at 23:10 0 comments

    I think this is what I'll settle for as a final-ish mechanical design, it is as compact as I wanted it to be, main body is 20x10x5cm, it has some vibrations, I'm suspecting the backlash in the RC servo, I have some thoughts to add light spiral springs to solve that. I'm currently animating the Model using Simulink Simscape Multibody, once happy I'm going to apply my control loop to the embedded system I made.

  • PCB

    Wissam Tedros06/14/2021 at 22:56 0 comments

    I finally Got time to assemble my PCB for the robot, 4 layers, controlled by an STM32f405RGT6,

    it features:

    • 12 PWM outputs for controlling RC servos
    • 12 ADC position feedback, from the Servos' potentiometer
    • 12 Shunt resistors of 0.1ohms, for current feedback, this signal is then amplified with a non-inverting op-amp circuit to a good readable range, 0~2.7V, an AD7490 handles the reading and is connected to the MCU by an SPI bus
    • 9DOF (accelerometer , gyroscope , magnetometer) inertial measurement unit MPU9250 connected to the MCU by I2c
    •  small FPC connectors(for future plans), I have a plan to make a small 360 scanner, using a hard disk DC motor, so I also added an H-bridge for that, and some GPIOS. 
    • BQ5887 for 2S Li-ion/Li-Po batteries charging and balancing, to charge the robot from the USB port
    • USB-Hub for STM32 output and cp2102 USB to UART bridge to program the ESP32-camera 
    • 4mb external flash memory
    • additional UART/I2c breakouts and an optional port for a small OLED display
    • USB B-micro for charging/ and differential pair connected to the MCU
    • SWD interface for the STM32 

    I have turned on the board, computer sees it, and the ST-LINK recognizes it, we're looking Good! 

  • earlier versions (v2)

    Wissam Tedros03/20/2021 at 00:16 0 comments

    for version 2 , I used a teensy 3.5 and a raspberry Pi 3A+, connected together on a breakout PCB that I milled on a hobby CNC engraver, the teensy was a good deal between performance and accessibility, but I knew that I had to design my own board someday for a better performance. Version 2 was a really good example of CAD != reality, this project being my first major one, I just thought that by perfectly defining all my constraints in CAD and fully defining an assembly, I would achieve a perfect fit, a smooth as silk mechanism, and rigid bodies that absolutely won't twist, bend, or even crack under load, especially 3D printed parts, lets just say that I did not completely know what I was doing, just having fun in CAD. The design was not terrible, it just didn't match my expectations, it is important to note that I don't really have a lot of experience in CAD, I taught myself how to use SolidWorks.

    my Leg mechanism was a constrained 4 DOF manipulator, a very stiff spring sets a constraint length between the end effector leg link and one of the cranks attached to the motor, the idea was to let the spring absorb any sort of load on the robot. As stated in a previous log, I actually swapped replaced this weird mechanism, and replaced it with a normal leg mechanism, where the joint are just connected serially, each motor on a joint instead of parallel control, I achieved with that design my first static movements, (pitch roll yaw, and XYZ body translations) with an inverse kinematic model.

  • earlier versions

    Wissam Tedros03/19/2021 at 23:13 0 comments

    these first few project logs are going to describe the various iterations of this robot, before I decided to publish it on Hackaday,  I first tried the approach of the 5 bars mechanism for the legs for versions one and 2, version one was not even assembled as I felt it was never going to work, after assembling version 2, I had some successful static motions, but the robot was consuming a lot of power, because the mechanism was just over-constrained, so I kept the same chassis and electronics and just went with a normal leg mechanism, where all the joints are actuated in a serial manner, I Got worlds of difference in performance, and the power consumption was exactly what you'd expect from 12 20kg.cm digital Servos, I just used an Arduino Uno and a raspberry Pi in my first prototype I knew it was just a test, so I ended up only printing the leg mechanism, to test it, and realized that it wasn't capable of actuating a robot. So I immediately started designing version 2 

View all 9 project logs

  • 1
    Servo cable install

    As mentioned in the components sections, you will need to change the cables that come with the servos, seeing that we will need an additional pin to read directly from the servo's potentiometer for position feedback, and since I need to edit the cable for that anyway, I decided to go with a smaller pitch so there's enough space for 12 headers on the board, with the standard 2.54mm pitch header, I may had to go with an overall bigger board, or another breakout board for the servos.

    Note that I'm demonstrating this instruction with a weaker servo (13kg.cm) but it still stands for any RC servo

    -Before you remove the back cover screws of the servo, be sure you have a horn on the servo secured with a screw, so the gearbox cover doesn't fall off.

    - Now you can remove the back cover screws and remove the plastic cover itself, remove the wire by heating the pads One by one,  Do not rip the wire off cold by hand

    once removed you can save the wire for a later project, you won't need it For RoDog.


    PLEASE DO NOT FOLLOW THE WIRING BASED ON THE COLOURS AS YOURS COULD POTENTIALLY BE DIFFERENT THAN MINE

    Before you start soldering on the new cable, insert in the rubber retaining the wires in.

    The internal board of your servo should be marked with an "S" on the pad where the signal PWM should be wired to,  the middle pad is V+, and the next one is ground, next, you would need to solder the last wire to the middle pad of the potentiometer, and you're done, now do that 11 more times :) 

    make sure you have a good connection, I would recommend adding some fresh solder on the pads to combine unleaded factory solder with yours, and the rubber retainer is a good strain relief for the cables, you can have a look at the CAD model and estimate how long you want your cable, because some motors are close to the board and having long cables could result in a mess, use the full whole cable length for the knee servos.

    I personally went with a header on the servo instead of directly wiring the cable, but it is fairly harder, Would not recommend it. You can do it like that, just double and triple check each pin and probably go with cables that have pins on both ends, directly connected, meaning the first pin on one side goes to the opposing pin directly.

View all instructions

Enjoy this project?

Share

Discussions

rraetz wrote 10/01/2021 at 13:59 point

Your concept with the 12 motor controller board with position and current feedback makes a lot of sense! Do you plan to sell it (maybe on tindie)? A lot of others could massively profit from such a board if it's easily available. Great project, keep up the good work :-)

  Are you sure? yes | no

Wissam Tedros wrote 10/01/2021 at 16:02 point

hello! Glad you like my work :) 

You can see the Eagle files(schematic and board layout) above, and there are assembly files too for manufacturing if you're really interested, but please know that this is still in development, position and force feedback works, already tested them, but the firmware is still in development. this project is open source, need more info? PM me :)

  Are you sure? yes | no

rraetz wrote 10/03/2021 at 19:40 point

Thanks for your reply! Unfortunately I don't have the time at the moment to work on a quadruped, but it's definitely on my todo list and I will certainly come back to your PCB. Nice to know that current and position feedback works. Looking forward to any updates on Hackaday from you! 

  Are you sure? yes | no

Dejan Ristic wrote 07/19/2021 at 06:03 point

Cool project! Looking forward to seeing future developments.

  Are you sure? yes | no

Wissam Tedros wrote 09/24/2021 at 22:22 point

sorry for the late reply, never actually noticed there is a comment in there! thanks a lot! I'm really glad people are appreciating my work! 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates