Sunday, December 15, 2019

Mojo3 - A Robotic Dog (#6) - Alternative leg design

A change in thought, a change in name.  Perhaps "A Compliant Quadruped Robotic Dog" is a little redundant and fabricated(?)  To start, "Quadruped Dog" is redundant, Dog implies four legs.  And with today's post, I am missing some compliancy, so let's just go by robot dog.  Perhaps even then, dog is a euphemism, afterall it is just a four legged robot.  ;)

The difficult part is the legs of course.  The first leg has compliancy, but it struggling to meet the additional design criteria of using 9g servo motors.  The engineering challenge of this exercise is to be able to lift the leg enough to move the leg forward, while at the same time absorbing some of the energy of the motion (inferred here as compliant).

While on holiday, away from my CAD, I was imaging what types of other motion that could be used.  For robots here are 5bar mechanisms, and strandbeest mechanisms, servos at the knees and legs (static motion, no compliance), as well as the 'fancy spot-mini' designs with simulated compliancy. Ultimately, there are only 2 degrees of freedom for the appropriate foot motion, so there seems to always be the need for 2 servos. It is just the question of where the servos will be positioned on the robot.

One solution is to assign all of the leg (forward, backward) motion to the hip - one degree of freedom. Then the function of lifting the foot is the sole responsibility of the second motion - the other degree of freedom. after mentally arranging the location of the motion and trying to avoid direct load of the weight of the robot on the servo, I settle on this option for the design.

In this design iteration, the for-leg/foot is directly connected to the top of the leg. There is a pivot point half-way through the for-leg. The foreleg is controlled by two linkages, this allows for the retraction and extension of the foreleg. Now the options for the servo can be either in one of the linkages or a force from the pivot between the linkages. The simpler will be on the linkage itself.

Mojo3 - Alternative leg designs
The question with this design is 'where to put the compliancy'? since the servo is directly connected to the linkages, this puts load on the servo (albeit less load). I think at this stage in the design, I will determine compliance later, mostly likely in the foot of the leg.

Using a the technique of "Frankenstein Prototyping" (a form of rapid prototyping), I mashed up parts left over from the last design as well as disassembling a leg of 'The Bug'.

Mojo3 - leg in down position
Here the leg is extended in the Down Position.  The engineering question will be how much load is placed on the servo in this position.  It would be very desirable to find a mechanism that will 'lock the leg' during the time the hip servo will be moving it backward in motion.

Mojo3 - leg in up position
In the retracted position in the foot is lifted up, allowing for the hip to move the leg forward to the starting position of the gait.

Next Steps:
Answer the engineering question of how the leg will hold the load of the robot.
This can be done by physical testing, by wiring up the servo to the microcontroller and test the motion. If that is successful, then it will be back to the CAD and draft up a new leg based on this concept.  

Sunday, December 1, 2019

Mojo3 - A Compliant Quadruped Robot Dog (#5) - First Servo Leg Tests

Mojo 3 - First Tests!

It is always exciting to start the testing in an iterative design/build phase.  I have made a few changes to the leg and SEA design. It was really important to allow for the servo to pull the actuator with as little friction as possible. two additional prints later, I have a working servo actuator.  However, the weak 9 gram servos will continue to be an issue, as well as how much 'hooke' to put into the spring. 

First:  the new movie!

first test - on the TNERA YouTube Channel

Design status - from the movie, you can see that the servo is functioning and pulling the actuator up.  This motion is critical to lifting/contracting the leg as the leg will be moving forward.  It must have enough clearance to avoid stumbling and the return swing. I would like to have 1cm or more of clearance.  However, from the video you can see that the design is only giving 5-6mm of contraction.  It it clear that the servo will need to have some more pull, or that the spring constant (see Hooke's Law) is weaker.

There will have to be a balance between two competing factors:

1) the servo must be strong enough to contract the SEA
2) the spring must be strong enough to absorb some of the weight of the robot

the competition in physics and mechanics:  a larger servo can pull the spring, but will create additional weight that will further contract the spring. To help/confuse this engineering issue is that the 'foot' spring will also be absorbing the weight of the robot. This may result in the SEA contracting - but not resulting in a lift due to the 'release' of the foot spring.

Tune in to see how we can resolve these design issues.  At this point in time, I am not beyond creating a completely new iteration on the SEA perhaps adding a new linkage.

Sunday, November 3, 2019

Mojo3 - A Compliant Quadruped Robot Dog (#4) - SEA thoughts and more leg design

The Serial Elastic Actuator (SEA) is the key to this type of robotic quadruped design. This component acts as a 'compliant' spring to absorb and re-energize the through the motion of the gait. In this application, a servo will pull (compress) the spring while lifting the leg to move the leg forward. And release the spring on the hindward motion of the leg.

Here is the current-draft printed:
Mojo3 Leg first printed draft

The design of the SEA must be as frictionless as possible. It must smoothly compress and expand. Finally, the servo must be strong enough to easily compress the spring/actuator. It is my goal with Mojo3, to be able to use common springs (found in ball point pens) and cheap 9gram, 5V servos, like MG-90.

After the first printed draft I have been having some design thoughts and challenges. I like the simple nature of this version of the SEA as compared to Mojo2. This is much easier to print and assemble.  However, I will need to iterated a few more times to reduce the friction and avoid the "bend" (non-alignment) of the parts of the actuator.

Moving the servo:  I wanted to avoid having 2 servo motors to control the leg.  This can be achieved by making a 'mechanism', with a set of gears and linkages, to have a single servo move two different components. While I believe this is possible, I am starting to see benefits of a two servo solution.  1) reduce the overall friction of the system, simpler, and less likely to become fouled. and 2) the SEA servo is going to need as much strength as possible for its duty cycle.  Given these thoughts, I am going to focus on a SEA servo design with the servo 'in' the leg and not on the chassis, as was the design in Mojo2.

Here is a current picture of the parts going into the leg assembly:

you may be able to see the initial leg chassis that I have drafted out to hold the leg bearing and connection to the primary drive servo.  There are a collection of initial drafts and test prints that are not connected to the leg/chassis.

Current print - leg and assembly (can you see the two servos?):
Mojo3 - Compliant Quadruped Robot 'dog' leg - 3Nov2019

next steps will be to make a more awesome SEA.  ;)

Sunday, October 27, 2019

Mojo3 - A Compliant Quadruped Robot Dog (#3) - Printing/Iterating Design

The first draft of the leg is starting to take shape. Each of the initial parts have been printed.  I have assembled them on paper, CAD (OpenSCAD), and now in 3D printed PLA.  It is interesting to see how well they align to the initial paper sketch.

Mojo3 - printed leg covering original sketch

Side by side, the first printed parts are next to the original conception. The upper right piece is the 'leg'.  The leg has a bearing in the top to transfer the weight of the robot. there is a 'control arm' that will connect to the servo. At the base are two connectors, that allow the 'arm' to move up and down. I call the connectors 'trap' - short for trapezoid, the shape created from the four fastened points. Finally, the 'arm' is made of the base, connected to the trap, and the fore-arm, which will touch the ground.  The fore-arm can slide on arm-base. There is a spring in the fore-arm that will absorb some of the motion of the leg and ensure good ground contact.

Mojo3 - Leg first draft print, next to original sketch.
What is missing?  the foot and claw.  Every Totally Not Evil Robot needs to have a claw, right?  ;)

Thinking about the next step of the development, there will need to be a 'Serial Elastic Actuator' (SEA).  This SEA is basically a spring, that provides a 'compliance' with the ground, but allow for the arm to be pulled up, allowing for the leg to lift and be moved forward.  (Here is a link to my previous designs SEA v5.) 

From the design of the fore-arm, above, it occurred to me that there may be a simpler design option for the SEA.  In essence, the fore-arm is a SEA.  The next phase of design will have a new SEA that is attached from the arm-base to the hip of the leg.  below you can see this new component in red on the CAD design. Let us see how this works.

Mojo3 - potential new style of SEA
Next steps are to print and test it out...

Monday, October 21, 2019

Mojo3 - A Compliant Quadruped Robot Dog (#2) - Printed 'arm'

Well, it isn't quite an 'Arm', is it?  But I am calling it that.  In previous 'mojos' have named my leg parts by the bones in the body of a quadruped.  This iteration, I am keeping it simple. With a 'leg' (hip?) and a arm. of course it has hip points and knee points.  but we also have the mechanical part of the 'trapezoid' - the middle parts that make this a compliant system.

Below is the first draft of a compliant leg system in OpenSCAD.  Have drafted out the basic parts to get a feel for the shape. Most important is to start to visualize how the parts will fit together and start to move.  In this draft the parts are small, with a focus still on the "cheap" 9g servos.

Mojo3 - Robotic Leg - First Draft (OpenSCAD)

I have been thinking more on adding some compliance to the 'arm', with an additional spring that will take additional load off the feet and try to ensure more contact with the ground.  hopefully the servo will have enough pull to off set this compliancy when it is time to lift the leg.

In this iteration, i have simple spring in a slider, at the end of the 'arm'.  In a sense, this will operate more like a ball point pen. The first draft print, was enough to prove that the concept works.  I will need to add more surface to the fore-arm to contain the spring, however the slider and screw lock are fit for purpose and work well.

Mojo3 - Robot Leg-forearm - first draft

Next I will have to go find a small bearing and start work on the hip part of the leg.

Monday, October 7, 2019

Mojo3 - A Compliant Quadruped Robot Dog (#1) - Back to Work!

Time to get back to work!  I have moved my home and office and started a new business.  time now to stop playing 'Factorio' in my spare time, and time to start building new robots!!  Afterall, the Totally Not Evil Robot Army isn't going to conquer the galaxy by themselves (yet)!

Over the summer there have been a few developments worth mentioning (look them up!).  Such as Boston Dynamics starting to offer their Spot robot for commercial purchase.  Not as favorable, some robot shops in Bristol, England have gone out of business. But, on the upside, the good people at ETH Zurich Autonomous Systems Lab are still producing awesome robot projects.  The community is continuing with things like this past weekend's Toulouse Robot Race. Plus many new videos on YouTube:  Oracid1 has a good quadruped playlist, and even James Bruton found the benefits of compliance in quadrupeds! ;)

To get back into the design phase, I am planning on starting mark 3 of Mojo, the compliant quadruped robot dog. Hereby to be called Mojo3 (so original!)  In the next design, Mojo3 will improve off the systemic issues of Mojo2.  Primarily, I will remove the servo from the direct load bearing connection between the leg and the body. With basic common engineering sense, I will use a bearing for this connection, and utilize a cam system to move the leg. 

Next I will incorporate the knee flexor servo into the primary leg servo, attempting to remove a servo (x4) from the design. This should again use a cam system to translate the leg motion into the up-down motion of the knee flex.  I will reduce the weight of the robot, Mojo2 was 263g (seems light) without the battery. This is due to the heavy servos. I will attempt to use the 9g servos again, lets see. compact and agile will be the plans, along with off the shelf components.

Here is the first drawing of Mojo3!  Can you see the various components??

Mojo 3 - Compliant Leg sketch-draft
Next we have to spin up the CAD design!

Saturday, August 10, 2019

Sabbatical Almost Over

Hi all, 

I will be shortly returning from a break.  It has been a busy summer with travel, a new company, a move to the city, and more.

I am setting my Totally Not Evil Robot Army Labs, it will be returning shortly. 

I have also noticed that my blog has been 'picked up' by Ukrainian Search Engine Optimization groups (nefarious or not?). Most of the blogs are coming from random and not so random sites mostly in the Ukraine and Russia.  Welcome I guess?

In the meanwhile, if you are in Europe in October, the next annual Toulouse Robot Race being held.  I do not believe I will make it this year! :(

bis bald!

Monday, May 27, 2019

One Year Anniversary

The Totally Not Evil Robot Army Blog is 1 years old today! (May 27th, 2019)

It has been really nice building robots and writing about it.  I fully plan on continue.

Here are some statistics from the first year:

4 Robots - Mojo - Robot Dog, The Bug, The Wild Weasel, and Centi:

43 Posts

3523 - page hits:
  • 1337 from Israel - due to two massive single hit page crawlers that hit for 600+ and 700+ hits each - robots searching robots I guess?  :)
  • 641 page views from Germany - Where the blog is located.
  • 1545 from the rest of the world.
A few spammers commenting on the blog, trying to place SEO links. - which were mercilessly deleted by the way.

Most references come from, I only recently fixed my links from my YouTube Channel.  And special shout out to Norbert Heinz at for the referrals.

The next year will be in a new "smaller" location for me, and a little added challenge of trying to start a business at the same time. (many of my new robots are virtual, but have ML and AI! ;)

I am looking forward to the next year!
Düsseldorf Doug

Monday, April 22, 2019

Centi (#5) - New Leg Design is Printed


Here is the latest print and video of the Centipede Project.

moving from OpenSCAD to print went fairly smoothly.  As you can see, I have enclosed the main rotating mechanism that moves the chopstick legs.  In this design in OpenSCAD, I have rotated everything along the Z axis, to make it easier to keep centered. The covering socket cap and ball all align, as well as the cam. You can also see holes along the structure, so that small screws can be used to assemble the leg segment. I am reusing screws from recycled printers that are used to bind plastic parts together.

OpenSCAD design
At the 'base' of the leg, I have created a hexagon. This seems to me to be 'self-bio-inspired'. I have not used hexagons in previous designs, so it is novel to me. More importantly, it fits the nature of the leg, as there is no specific 'down' or 'up.  One the walls of the cam base, I have added two small holes for M3 bolts. This allows me to connect two or more legs in sequence... thus forming the multiple legs of the Centipede.

New Print
At this time there are only two leg segments connected.  The M3 bolts are not visible, as they are inside the cam housing.  Note: I had a near-fail as I forgot to leave clearance between the cam housing wall and the bearing mount.  There are many issues to design out when doing project like this. This is why physically making the prototypes is very important to realize assembly issues.

New Gears to connect to Drive
At the base of the Cam Housing are two gears attached to the cam itself. The cam shaft runs through a bearing and then is connected to the gears.  The gears are "kegelrad" from the OpenSCAD library "Getriebe Bilbiothek für OpenSCAD".  The kegelrad could give me an ability to mount the drive gears at an angle different from the cam housing.  We shall see!  ;)

Saturday, April 13, 2019

Centi (#4) - Design Video


I have published a video of the initial design and 3D Printed "drafts" of the Centipede leg mechanism.  You can find the video below on my YouTube channel.

From a design perspective, the drafts have served their purpose. It is now a good time to take what we have learned and start a new draft.  

I like the concept of making each leg of the Centipede to be a "module" that can be replicated and connected together.  I am also realizing that I don't care much for the 'rectangular' frame that was in the drafts.  The legs may need to be moved around.  Honestly, the rectangles do not seem to match the aesthetic of an bio-inspired robot.

Here is my new concept that I am working on ...

Centi - a new aesthetic! - CAD in OpenSCAD

Saturday, April 6, 2019

Wild Weasel - Tracked Robot (#3)

I have just posted a YouTube Video of the assembly of the Wild Weasel track.  You can find it here:

Wild Weasel a completely 3D printed Tracked Robot.  I wanted to build a tracked robot, due to their stability, and at the same time use some motors that I had recovered from recycled printers.

The project went very smoothly, a lot of CAD work was need to design the treads, chassis, and gears used.  The robot uses a Raspberry Pi and an L298N motor driver. This was my first time to use a Tallent Cell power bank, which provides 12V and 5V power - great for RPI and the motors.

Saturday, March 9, 2019

Centi (#3) - The next iteration of design

The bio-inspired multi-leg walking robot!

It seemed that the main sprocket is capable of turning the chopstick legs, and the ball & socket were going to work.  This is the working theory, i will not be able to test a load on them until much later in the development.

The next iteration of the design of the motion mechanism was to start to incorporate a gear into the drive in order to turn the sprocket.  I did a number of changes in the CAD design.  I increased the size of the frame (height) and added M3 holes on the sides.  I updated the socket top to take recycled torx screws from a printer. 

Centipede next iteration of design

For the main design, I have added a 22x7mm skateboard bearing (red) to take the load of the leg (also red) and provide rotation. I extended the cam shaft to hold a gear.  Most important, I designed two gears, one to turn the sprocket, and the other to drive that cam gear.

Close up

The new print has noted improvements. Also, a number of issues that will have to be tweaked in the next iteration

Full View, new iteration on the left, original prototype on the right. 
 Together, the assembly will start to look like 1/3 of the walking mechanism.

Sunday, March 3, 2019

Centi (#2) - A Bio-Inspired Centipede Robot


a little more drafting of ideas around the mechanism.  

Draft of the first test
I drafted out a simple test mechanism to see how well the ball rotating in the ball mount would work with the circular motion of a wheel.  Also, the end of the leg would have to fit inside this wheel as well.

Print of the "minimal viable test"

building the Wild Weasel helped me understand how the bearing and gears could be used to transmit the mechanical energy and absorb the weight of the robot.  I think I will mount the main "sprocket" with a bearing.  After all, the weight of the robot will be directly on this wheel. 

In addition, I will need to add some teeth to the sprocket so that it can be turned with a motor. Finally, it is not too soon to start thinking about how this could be made into a modular component where it can be attached to other legs in the Centipede!

Saturday, March 2, 2019

Wild Weasel - tracked robot (#2)

The first build of the Wild Weasel tracked robot seems to be working well.

Wild Weasel Tracks - in Robot configuration
Here is a video from back in early build, where I first tested out the track.  The track is using two white gears that are from the recycled printer. I went on to recreate these and printing a duplicate set for the second track.  This involved counting the teeth and height and angle of the gears.  Here is a video from my YouTube channel:

As you can see from the video, it is very energetic with 12v of "shore" (mains plug) power. It was running all around my desk, especially as it had no frame besides for the track unit itself - as designed!! ;)

I have since added the Chassis frame consisting of modular units:  a battery bay, a controller bay, and the initial sensor platform.  The robot is fitted out with a tallent cell 12v/5v battery, Raspberry Pi, L298N motor driver, Logitech 920C camera, and USB speakers.

If you would like to drive the robot remotely...  !!  go to and it might be available.  I try to put it online using my TotallyNotEvilRobotArmy stream on  You can find it here:  TNE-RobotArmy WildWeasel controls for Wild Weasel (type in chat to speak

Ready to go!
Wild Weasel in LetsRobot Configuration (with lance!)
Learnings and Next Steps:

After some time spent with users operating the Wild Weasel on, there are some learnings. LR is a great way to test out design, the robot gets a lot of (sometimes hard) use.  

  • My clever design for locking the module connections does not work.  the 3D printed pin and loops shear off under force. a better solution is to use metal nails perhaps.
  • One of the motor stalls much earlier than the other. This may be due to low power from the battery. I will test this further.  The impact is that the robot will not drive straight
  • The MQTT client is reading duplicate values sent from the streaming site. I will update the code to ignore long strings of the same command.
  • Need a better override at the MQTT level. perhaps a second command channel that will allow me to flush the stream from the other channels.

Anti-Collision detection
Most important, I will be adding an Anti-collision code to the motor controller. I will be using an HC-SR04 ultrasonic distance sensor to determine if the robot is against a wall or other object. I believe the best interface will be just to ignore commands that would try to continue to drive into the obstacle.  more details on this to come.

Saturday, February 9, 2019

Wild Weasel - tracked robot (#1)

I have an interest in building and designing out a tracked robot... for some reason. :)  

Tracked robots have static stability, and typically should not get 'stuck' on terrain the way wheeled robots do. Also, you can build, drive, and steer a tracked robot with only 2 motors. The downside of the design is that to turn, they have to 'skid' or slide.

I wanted to design a track system that will be modular and can be combined with other tracks and platforms to easily create new robots. I really like the modular designs of the Intukun pipe inspectors robots. Their mini-track crawler is an impressive piece of crawling hardware. Of course, I wanted to build one like this too.
MiniTrac (80mm x 100mm x 400mm) - by Intukun

The other design influence was closer to the Maker space. On Thingiverse, I found a great design of a robot tank by Tim Clark, 
MR6 - Mini Prototyping Tank Robot. Tim had obviously put a lot of thought into this design. This robot is at least his third design variant on crawling robots. Being his latest model, it probably has the most learnings. 

I really liked the skateboard bearings he is using, as well as the track design, and the various layers of support frame. Although, I am still not sure what is the advantage of raised cog/sprocket to form a triangle.  I did not use his design, except for influence - I needed to have the design in OpenSCAD, and he did not provide source files openly.
MR6 - by Tim Clark

I set out to design my own tracked crawling robot using ideas from both of these designs. In addition, I wanted to re-use 12V motors that I have harvested from old printers.

Track, Sprocket, and Motors -- Ready for Design!

Design Concepts

I want the motor to be inside of the treads, so that there is no axel crossing between a motor and the gears, thus raising the ground height of the robot frame.  Only the motor power wires and the mounting frame will need to go on to the track module.  Thus the height dimension of the unit will be dependent on the motor size and clearance of the treads and sprockets.

(Red) Motor between two sprockets, creating a contained track modual.

the width of the treads has to account for the width of the motor. This affects the width of the sprocket/cog.  The sprocket will contain a 22x7mm skateboard bearing.  So, ultimately the sprocket is dependent on the bearing size, and the tread is dependent on the sprocket.

Frame to hold the motor and sprockets

The length of the track would be dependent on the sprocket size, motor size, and amount of gear reduction needed between the motor and the drive sprocket.  This value had to be determined in a few design iterations. Also at play the size of the gears and the size of the sprocket are closely coupled. In my build process I needed to add size to the sprocket to account for the larger gears I needed.

Frame and Gears to drive the treads

The sprocket size was increased, to provide more clearance to the motor and gears. Since the sprocket gear tooth size is directly linked to the tread size, increasing the sprocket, but keeping the tooth size, meant that I needed an additional tooth on the sprocket.  Thus in a design iteration, changed the sprocket from 12 teeth to 13 teeth.  This very subtil change has impact on the rotational angle location on the sprocket disc. 

Size of the sprocket determine number of teeth in Sprocket and Tread size

Tread design

I examined Tim Clark's treads very closely. I also examined the changes he made from earlier designs to later ones. The result I saw was from early to later designed the length (size of step) of each tread was getting smaller and smaller.  This result in a more fluid chain of treads.

Wild Weasel - Tread Segment
To keep the build process simple, I am using small nails that slide through the Tread Segments to lock them together.

Gear Design

The gears used to transfer the torque from the 12v printer motors to the sprockets had to be carefully designed and fitted.  The motor has a high speed and needed to be stepped down in a compact space.
I experimented with gears reused from old printers.  the common design is a large top gear connected to a smaller gear on the same axis.  This provides a method to reduce the rotation speed for each gear step.
The motors had diagonal toothed gears already on them.  I used a open source gear library in OpenSCAD to design the gears.  Using more fine settings on the 3D Printer produced incredible results.

OpenSCAD library by Dr Jörg Janssen, Getriebe.scad.  I highly recommend this library, although it is in German. (don't let that scare you! ;)
One gear of 4 used in the design.

Final Design

Interestingly, building laterally symmetrical (no upside, downside) means you do not need to have a left or right side. the unit can be flipped or rotated to either side of the robot. By making two copies, I can rotate one tread around to have the symmetrical pair, without having to have a second design.

Track Modual

Here is assembly construction of the first robot.
Wild Weasel tracked Robot Chassis - OpenSCAD
Here is the first print made of the robot, complete with parts.  Completely 3D printed.
Printed Design - Wild Weasel Tracks and Robot