Armora- the armoured caterpillar

28 Sep 2014 Mechanism and video update:

1st video : Description and Mechanism

2nd video: Full working order

3rd video: Testing with battery

Mechanism:    The RPM, from motor, via gear, steps down 12:1(approx) to the main axles' gears. From the main gears, via two little gears(cogs), it steps up 1:5(approx.) to the governer. The main gears are attached directly to the main axles and rotate them. Two axles rotating in tandem create the forward or reverse movement (more explained in the 1st video). The freewheel also rotates simultaneously and controls the steering rod depending on the speed of rotation.

The legs are fastened to the bodies and do not move. Rather, there are two parts of the body. While one part is in contact with the floor via the legs, the other part rises and moves forward and places itself on the floor. Now it is the other part's turn to do the same. The first and third set of legs are attached to the first part of the body. The second and fourth set of legs are attached to the second part. Balance is maintained at all times.

 

View from below and right side of the bot: Transmission from main gear to Governer

 

 

View from below and back to front:  Governer

 

 

View from belo and front to back:

 

 

View from top and front left: Governer and steering rod.

 

 

View from top and back-right towards the front: Gears and motor

 

 

 

View from bottom front to back: Step down gears from motor.

 

15 Sep 2014;

This project is now complete for me although i haven't explored reverse movement. Thanks to Yahmez for the challenge.

Materials:

Aluminium flat bar for body frame ---

coat hangar for legs---

plastics for skin-

2mm and 3mm nuts/bolts

2 large rc heli main rotor gears 72 teeth

other various little gears (salvaged)

2 phototransistors

2 microswitches

1 dc motor brushed

jumper wires

a small pinin/pinout board which incorporates tip120 and limiting resistors (i made myself- 'switching circuit from arduino example').

(a H-bridge if used will allow movement in both directions and left right movement as well.)

Arduino Uno clone from sainsmart(overkill-thats all i had at home)

6 X AAA Nimh rechargeable batteries for power (around 7.8 volts)- provides both motor and clone board.

 

Mechanism

The large gears are tethered together so the axle move together in same direction at any one time. The 'walking movement' is just another expression of a circular movement.

The centrifugal governer steers the bot depending on the speed at which it is spun.

I used PWM and on/off the motor for finer control.

 

 

 

 

 

 

 

 

Code i used is below. I know only little coding.

//Rai. caterpillar_armora//160914


   
    int switch1 =2;                    //     ^     select input for use with switch 1. interrupts available in pins 2 and 3 only
    int switch2 =3;                     // ((   |   select input for use with switch 2
    int photo1 = A0;                   //    v     select the input pin for phototransistor 1
    int photo2 = A5;                  // select the input pin for phototransistor 2
    int val1 = 0;                      // variable to store the value coming from phototransistor 1
    int val2 = 0;                    // variable to store the value coming from phototransistor 2
    int diff =0;                    //int to store difference between val1 and val2
    int val3 = 0;               // variable to store the value coming from switch 1
    int val4 = 0;                        // variable to store the value coming from switch 2
    const int motor = 11;         //digital pin 11 assigned to motor
    int flag1 = 0;                     //variable to store state of switch1 returned from val3 (position of traction bar)
    int flag2 = 0;                      //variable to store state of switch 2 returned from val4 (position of traction bar)

    //ISR 1
    void readSwitch1(){
        if (digitalRead (switch1) == HIGH)
         {flag1=1;
         flag2=0;}
    }
    //ISR2
    void readSwitch2(){
        if (digitalRead (switch2) == HIGH)
          {flag1=0;
          flag2=1;}
    }
  //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsetup below
    void setup(){
      Serial.begin(9600);                             //comms to monitor for testing only
      pinMode(motor, OUTPUT);                  // set pin 11 as output.
      attachInterrupt(0,readSwitch1,RISING);
      attachInterrupt(1,readSwitch2,RISING);
      delay(3000);     
                                                             //initial movement to determine position
      analogWrite(motor,150);
      delay(500);
      analogWrite(motor,0);
      delay(2000);
     
    }
   
  //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxloop below 
    void loop(){
  
    val1 = analogRead(photo1);          //read phototransistor1
    val2 = analogRead(photo2);          //read phototransistor2
    diff = val1-val2;
    Serial.println(diff);                       //for testing only to find the 'sweet spots'
    delay(500);


   //left turn
    while (diff>30){                              //calling the left_turn function
      left_turn();                     
      val1 = analogRead(photo1);         //
      val2 = analogRead(photo2);
      diff = val1-val2;
      Serial.println("left");
     
    }
  
    //right turn
    while (diff<-30){                          //calling the right_turn movement
      right_turn();
      val1 = analogRead(photo1);
      val2 = analogRead(photo2);
      diff = val1-val2;
       Serial.println("right");              //for debugging only
    }
 
    //straight ahead                 
     while (-30<=diff<=30){               //straight_ahead movement
              
        straight_ahead();
        Serial.println("straight");         //for debugging purposes only
        delay(50);
        if (flag1!=0 && flag2 !=0){
          break;}
        val1 = analogRead(photo1);
        val2 = analogRead(photo2);
        diff = val1-val2;
       if (diff>30 || diff<-30){                  //for exiting the while loop
        break;}
      
  }}
 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfunctions are below
   void straight_ahead(){
      diff=map(diff,-30,30,150,255);
      diff=constrain(diff,150,255);
      analogWrite(motor,diff);
      delay(20);
      analogWrite(motor,0);
      delay(50);   
     }
 
    
   
    void left_turn(){                        //left_turn function
                                                 //had to individually assign PWM on and off times for each movement

                                                 //as the two parts of the bots are unequally weighted.
        
     
     
       while(flag2==1){        
         analogWrite(motor,200);
                  
         if(flag2!=1){            
         break;
       }}
     
        while(flag1==1){
         analogWrite(motor,255);
         delay(5);
         analogWrite(motor,0);
         delay(60);         
         if(flag1!=1){        
         break;
       }}
        
  }
 
    void right_turn(){                           //right_turn function.
     
        while(flag1==1){
         analogWrite(motor,150);
         delay(20);
       
         Serial.println("right turn");          // for testing only
         if (flag1!=1){
         break;        
        }}
     
       while(flag2==1){
         analogWrite(motor,150);
         delay(5);
         analogWrite(motor,0);
         delay(200);
         if (flag2!=1){
         break;
       }}               
       } 

 

 


 

Hello LMRians and everyone, meet Armora, a young caterpillar from  a mythical land. It aspires to become an armoured caterpillar someday to join its bigger brothers in their protracted war against a formidable enemy, the Aphids, a large ferocious tribe of tiny creatures who are well organised. The caterpillars have been driven away or subdued in their land, and legend has it that Armoura grew up indeed to become an armoured caterpillar and drove the Aphids out of the land but not before its own many adventures or misadventures.

Armora is a single motor bot. Its design allows it to go forward, reverse and turn left or right in both. I am working to make it follow light. I have finished the mechanical build and am stringing the electronics. If completed in time, i will nominate it for smc.

More details to follow.

 

capable of moving forward, reverse left and right using single motor


This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/armora-the-armoured-caterpillar

wow

Great, I am curious how you did it with one motor, especially left-right, with only one information input. can you show a video of what you have accomplished so far?

Hehe, it can open your beer bottle with its head.

I am working on a caterpillar with 2 servos. Lots of micro-mechanics %. I’ll post something when I have more than some loose parts.

 

**im also very curious. **

Really can’t wait to see what smart mechanism you come up with to go in all those directions.

I can’t stop laughing at the face!

I also can’t for the finals of the one motor challange.It looks really cool!

 

I can’t believe that this

I can’t believe that this guy uses only one motor!! and it looks awesome! can’t wait for the video.

Yeah it could, haha. shame i dont drink alcohol anymore.

its nothing special. motor speed will be used to change direction. i made a little centrifugal governer driven by the same motor. i plan to use it in conjunction with two micro switches and pwm. i’ll post a video of me trying to mimic it directly with batteries.

thanx

will be waiting to see your caterpillar, Carlo

its nothing special. motor speed will be used to change direction. i made a little centrifugal governer driven by the same motor. i plan to use it in conjunction with two micro switches and pwm. i’ll post a video of me trying to mimic it directly with batteries.

thanx

 

Really an innovative design.

Really an innovative design. Good luck for the challenge!

Thanx

Thanx Enigma for ur kind words…

congratz!

Congratulations. I still don’t understand your mechanism, but he, you did it!

Carlo

thanx Carlo

I wish i knew how to make animations so i could explain it…

Explanation

Making a video of the robot as near a possible, upside down, slowed down with still frames and some text written could help greatly. If you don’t know how to do you can try with Openshot, which is open source and simple enough. Or just post the video with descriptions of what it’s doing between x second and y second and i’ll try to make it

WOW !!!

Interesting mechanism. Please try to expalin how this works? I learned about centrifugal governor from this post,and then searched wiki. From what I understand the governer needs to run at certain velocity to be activated, though here it seems to be working even with momentary small speeds. I am very interested to know the mechanism. Try to make it more elaborate. 

Thanks

Maybe You can turn it over and hold it in your hands while it runs, then make it change directon using the torch ,and upload the video. Maybe then I would be able to understand what is going on in his belly.

Pretty good bot you have made there, congrats!

thanks for the suggestions…

and please do make an animation if you have time after i upload the explanation video which i shall do in a couple of weeks( am away form home at the moment);

thanks for your interest.

and you are a pretty good bot maker as i know…

I shall upload a video in a couple of weeks. i dont really know what speed is the optimum. but i have made use of small speeds as well as fast ones. From my experience there are so many variables that you can tweak to get optimum results. some being- weight and length of the arms, strength of the spring, speed of rotation, weight of the bot itself, the angle or distance you want the bot to turn left or right, the software program itself, gearing ratio etc. The gearing ratio is approximately (12 : 1 : 5  for, motor : axle : governer). this is not a perfect gearing ratio. but compensation has been made in software by using small bursts of rotation which you can hear. if the gearing ratio is optimized, the map function of arduino could possibly work very effectively. I only tried putting theory into practice and it probably worked out quite well…peace

 

 

A Question

Are you by any chance from India? I am asking cause the name “Dhiraj” is quite popular here. 

Nope

I’m from Nepal…

This is a really neat

This is a really neat  bot!!..Still don’t understand how it turns though…I’ll probably read through the post again! :slight_smile:

**Congratz winning the challenge !! **

And now I can really congratulate you, you won the challenge !!

Thanks Carlo…

and I still wait for your caterpil…i see you have changed your design and its looking great… but hey… no pressure…!