Robot making adventures

Hi! This is a progress report on my 1-year journey of making a robot like this

He doesn’t walk yet but we are getting close

You can check out our most recent progress/cad models/code on this repo.

Our goal is to finish the first walking version on 9/1/2022.

Acknowledgements

I’d like to thank my teammate, Stephan Wagner, for help with the simulations and fun games of ping pong. And I’d like to thank my University, Drexel, particularly Mr.Mike Galloway for 3d printing help. I’d also like to thank Professor David Han and Professor Chmielewski Thomas from Drexel University and Professor Motegi Kazuhiro from Gunma University for advising on our project.

Step 1: Setup a plan

The first step to making a robot is a good plan. Our plan was the following. We will

  1. Think of a design of the robot and put it into cad
  2. Simulate the robot walking
  3. Build the robot and put the simulation code in. We’ll use Arduino to move all the servos since I did that before.

Step 2: CAD

I talked about my cad adventures in a separate post here. But in the end, we got something like this in Autodesk Inventor 2021

We took heavy inspiration from the robot sold by a Japanese robot-making company called Kondou-Kagaku. Their robot is here

Step 3: Simulation

We used Simscape which is a plugin for Simulink to simulate the robot along with Matlab.

We assigned collision to the feet and added gravity. Then we followed the code from this repository along with Matlab’s webinar to come up with a walking motion.

For this, we started by using an approach called the inverse pendulum. The idea

  1. We can think of walking as follows. 1 foot on the ground, the other foot in the air. Then we tip towards the foot in the air, then that foot lands. Then we tip towards the other foot that’s in the air. We can see this below

2. We use some fancy math called inverse kinematics to estimate the position of each of the joints so we can do a motion like the inverse pendulum. The result is below

3. Apply motion to our simulation. As you see it falls over but it does work.

With gravity removed, we can make a motion like this

The next steps for the simulation are to see if we can find good parameters to make it walk. Other than that we plan to look at reinforcement learning/genetic algorithm to see if they are any easier.

Step 4: Building

We first got all the 3d printed parts like so. Thanks again, Mike!

We needed to make a few adjustments but we used the mg996r motors for each of the joints.

Note: I used Arduino to set each of the motors to 90 degrees since it can go from 0 to 180. Also, these motors may not be powerful enough so we got other servos which are this and this.

And I built like so

While assembling, I noticed we didn’t have enough screws, so we got new ones and de-assembled and re-assembled

Here I noticed the legs can easily become de attached

Then I learned you can screw in the top joints like

So I made new frames so I can easily do that

and we are here

Step 5: Powering the robot

My initial plan for powering the robot was to use an ac adapter. An ac adapter just provides 5V 3A. If we check the mg996r specs, this is just enough to power 1 motor. So we need 5V 36A or higher voltage with less current.

To do this, I got major help from a user called Qrow from this discord server. He advised me to get a motor driver. This makes it so I can send high-power current to my motors and pass along a signal from Arduino.

The motor driver I got is this.

I’ll need to test this but we found a forum post that said this can provide 10A of current. So I’m thinking I can connect 2 and provide 10A from each. For the power source, we are thinking of using these batteries

These are 7.2 V and have a discharge current of 30A. 10 A from this might be enough to power 1 leg(6 servo motors). While mg996rs can bare 7.2 V, the other servo motors have a limit of 6.8V so we got another battery of 6V for that. We plan to keep the batteries separate from the robot(on the ground) for now as each of these batteries increases the torque requirement by 1.1Nm which roughly doubles the current requirement.

Next Steps

Next, we’ll try

  1. See if the power supply is enough/and how many motors can be moved with one.
  2. See discrepancy between the simulation and real-world movement
  3. Update simulation with new CADs and try to make it walk with any method.

Edit: I noticed my battery will fry the motor driver so I’m asking around how to directly power the servo motors with my batteries. If any of you have any ideas that’ll be awesome too! I’m mainly concerned about frying my breadboard or motors.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store