Let's Make Robots!

Enviromentally Friendly Wild Thumper

Wild_Thumper_Controller_I2C_Slave.zip3.45 KB
RCreader.zip794 bytes
Spider_Controller_I2C_Master_5.zip5.93 KB

Recently my company has been asked to demonstrate a robot that can perform an enviromentally friendly task. I only have about 1 month to complete the robot and I'm not sure what it will do yet. I decided to build a robot that could perform many different tasks and then it should just be a matter of programming it.



As all the ideas I've had so far are outdoor activities I decided I had to use a Wild Thumper 6WD chassis.The ideas so fare are:

  • Water conservation on farms by mapping out a field using GPS and moister probe to determine when to water crops.
  • Collecting soil samples tagged with GPS locations to look for contamination near factories.
  • Planting seeds or saplings.

I've installed 2x 7.2V NiMh 5000mAh battery packs. A Wild Thumper high power switch on the back controls power to the robot. This switch can be remotely controlled using either a 3.3V or 5V logic signal making it possible for the robot to be turned on or off by a low power receiver. 

I want this robot to be able to pick things up so i decided I wanted robot arms. I have put a 6DOF robot arm on a 6WD before but I wanted this arm to move more like a human arm so I modified a DAGU 6DOF robot arm to make it a 7DOF robot arm. I need to build a second arm.

The torso of the robot is made with 2 top decks from a 4WD Wild Thumper. The front section can be removed for easy maintenance. Inside the torso is a Spider controller which will control the two arms. A heavy duty servo shield allows the servos to be powered directly from the 7.2V batteries.

Behind the Spider controller is a second high power switch. This switch is controlled by D12 of the Spider controller and switches power to the arm servos. This allows the Spider to initialize the servo pins before the servos are powered up. This prevents random and sometimes violent twitching that can occur when servos are first powered.

By the time I added the second arm it was obvious that the front suspension could not handle the load. I had considered just adjusting the original suspension to full hardness but as the two arms are so heavy I decided to double the springs instead. I drilled extra holes to remount the cable in a new position.The entire robot is now about 6.1kg with the arms and torso being 2.5Kg.

The arms are made from 3mm thick aluminium and all the servos are metal gears. The gripper and wrist rotation servos are small and only rated at about 2.5Kg/cm each. The other servos are 13Kg/cm each except for the shoulder servos which are 40Kg/cm. Each arm has a span of 500mm from shoulder to claw tip.


Ultrasonic Eye:


Originally I tried mounting 4x HC-SR04 ultrasonic rangefinders on the chest of the robot to track objects within range of the arms but the field of detection for the ultrsound sensors is only about ±15° so it became obvious the sensors needed to move and track objects in range.

I have now added a pan / tilt assembly and made a simple head with the sensors mounted about 100mm (4 inches) apart. The first video shows my first attempt to track my hand movement. The readings from the sensors have a lot of noise which is made worse when the head moves so I need to experiment some more with noise filtering (currently I average the last 10 samples) and maybe some PID control. After spending half a day trying to improve the tracking I have left it where it is in the second video.

The big problem with the ultrasound is the relatively narrow detection range of the sensors. When an object is in range and detected by all 4 sensors then the difference in readings is very slight due to the 100mm difference in spacing of the sensors. As soon as the object gets too far to one side, The readings from one or more of the sensors change abruptly.



Follow Me:

this is a simple test of the I²C communications in this robot. Speed and direction are determined by the angle of the pan servo and the distance between the robot and an object. The robot attempts to turn and face the object while maintaning a certain distance.

The Spider controller is the I²C bus master and the Wild Thumper controller is the I²C bus slave. The master sends 5 bytes of information to the slave. These bytes are:

  1. acknowledgment of battery status
  2. left motor direction
  3. left motor speed
  4. right motor direction
  5. right motor speed

If the Wild Thumper controller does not receive these commands regularly (at least every 200mS) then it will assume a bad I²C connection and ramp the motors speeds down to 0.

The third video shows my second attempt at "follow me". The First attempt failed due to flat batteries. I need to find the right balance between responce to changing sensor inputs and ramping of motor speed. As I am using 75:1 gearboxes, ramping the motors speed is important. The high gear ratio means it is possible to break the metal gears by forcing the wheel to turn against the motor.

I've added a small switch that connects D11 to either Gnd or Vcc. The code uses the state of D11 input to enable / disable the "follow me" function.




With Maker's Faire ShengZhen coming up fast I needed to get the arms working quickly. Video 4 shows some simple code running so that when an object is within 200mm to 500mm the arms will reach out towards it. This code only operates 4 of the 14 servos and is controlled by the tracking. Unfortunately, because the tracking is jittery the arms shake a bit as well.

Later I will try to write some simple "inverse kinematic" code for the arms.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The problem with so much information avaliable, is that sometimes something important gets missed by us.

Ever since I saw the Dagu compound eye I've been wanting to buy one and now I see this wonder :)

A differential ultrasound eye that does, more or less, the same effect...

Love it and cant wait to build it.

The ultrasonic version of the eye does not work as well as I hoped because sound waves travel much slower than light. The slow response time of the ultrasonic sensors make it very difficult to get smooth tracking although a proper PID algorithm might help. I was only using the P in PID.


Air changes temperature outdoor, and reading vary by 1cm every meter every 10°.
You can even use HC-SR04 over 4m by lowering the reading rate, or get faster and more accurate readings by reducing the range and faster ping until 1600readings/seconds for a 30cm max range

Accuracy is not an issue in this case. The robot looks at the difference between the left/right and up/down sensors to try and determine the location of a person in front of the robot.

I did limit the timeout value of the PulseIn() command for a range of aproximately 1m to speed up the tracking.


I love the look of this robot.

May i ask if you could elaborate on the rotation of the upper arm, specifically i would like to know more about the extra wide looking servo discs(/disks?), are these something quite simple and common, or something more specific or designed by yourself?

sorry if this has been covered somewhere, but they look as if they are designed to reduce the stress on the shaft point of the servo? especially when that joint is swung up to horizontal.



The machined aluminium disc helps support the output shaft of the servo. They are just 2 aluminium disc with some grease between them and work like a thrust bearing.One disc is glued to the servo housing and the other disc has 3mm threaded holes for the arm assembly to screw into.

They are part of a robot arm kit sold by DAGU.


Other great robot Oddbot.

Those arms look amazing in action. The grippers also look really nice. With arms that long is it able to pick up much?

I tried to find details about the servos you used but I didn't see any information about the servos in the arm. I'd think those shoulder servos must be pretty beefy.

That compound eye also great. I've got to try that myself.

Thanks for more robotic inspiration.

Most of the servos used in the arms are 13Kg/cm metal geared servos. The Shoulder servos are 40Kg/cm. It is har to say how much the robot can lift because a lot depends on how the robot would try to lift something. 

With arms fully extended and straight then each arm might only be able to lift about 100g-200g. But if both arms work together to lift an object straight up then it is possible for the robot to lift at least 1kg, maybe 2Kg depending on how high your lifting it.

The ultrasonic compound eye can detect objects at distances greater than 3m but tracked moving objects better within 1 meter. Unfortunately ultrasonic is very slow compared to IR so it is hard to get smooth tracking.

Very nice project. The best I've ever seen, congratulations to you, the high specs. Otherwise it is very expensive for Hungary to implement. You how much time and money it was very nice to work?

Because I work for DAGU and I built the robot for DAGU it did not cost me any money. If I had to buy the parts it would have probably cost about $900 USD.

Assembly time was a few days as I had to make some custome parts to make the standard robot arm move like a human arm.

Unfortunately I did not get nearly enough time to program it so it only had very basic software.