Autonomous rock crawler

Update 2.12.2013 Just added the code the bot's been working from.

After putting together the LMR Start Here bot, I knew I wanted to do more. So I set out to convert one of my (many) RC projects into something autonomous. I figured what better choice than a slow moving crawler (so I could catch it if it went awol!).

I took a functioning truck and created an electronics tray out of 1mm carbon fiber. Everything is held on with servo tape. The servos are powered via the battery elimination circuit from the speed controller, which also made it easy to control the motor acting as another servo. Well, I say easy, but I'm still working out the kinks with the ESC. I plan to add a PING sensor for object detection in front, and probably a few IR sensors for side/rear/edges. An xbee serial link allows me to control it from my laptop for now, as I haven't added any sensors yet.

Mechanically, it's 4 wheel drive and 4 wheel steering. The differentials in the axles are currently locked with hot glue, so the added steering is pretty helpful on flat surfaces.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9/30/2012

So, been a while. I had put this project off over a year ago, but a recent post from bryanmeyer about his similar project put it back in my head. As mentioned in the comments, I had issues with the speed controller I had chosen, namely it did not store calibration settings between battery packs. Every time power was removed, it would need to be recalibrated as soon as a battery was plugged in. I've managed to do that in code, still a bit sketch but it does work as long as I remember to command it to go forward first thing. (It assumes the first direction it is given will always be forward, start with reverse, and that becomes forward...)

And here is the long overdue shot of the body that it will be running.

(You will note the cat on the left. It ran into him during testing...  and he didn't budge an inch.  He is not impressed.)

Still no sensors installed, so fully reliant on commands I give it via xbee.  Plans at this point are to build a power distribution circuit to provide regulated power from the main battery pack to the arduino.  I would very much like to eliminate the 9v battery.  Futher testing for control of the motor, primarily getting the speed where I want it.  I'm thinking an accelerometer to measure incline, and sonar for forward object detection.  I'm also taking out the rear steering servo, as the 1amp BEC on the speed controller is just not enough for two servos.

Crawls over things

  • Actuators / output devices: Futaba hi torque servos, 55T lathe motor
  • Control method: Autonomous and optional wireless xbee control
  • CPU: Arduino Uno (atmega328)
  • Power source: one 9V battery for MCU and sonar, Ni-MH batteries (7.2v total)
  • Sensors / input devices: PING))) sonar, and maybe IR
  • Target environment: Outdoors / Rough terrain

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/autonomous-rock-crawler

I like it
"(so I could catch it if it went awol!)"
Yes!!!

What brand of crawler is

What brand of crawler is it?

 

Also are you planning on using the RC body, or going without?

Personally I’d like to see more robot’s using a cosmetic body as I get tired of seeing circuit boards on wheels.

 

Nice truck!!!

Very Nice

Very cool project. Are you still using the RX board alongside your arduino?

Nope, the receiver is out of

Nope, the receiver is out of the picture at this point. The Arduino is taking up it’s duties, the only wireless control I’ll have of it will be via xbee serial link with my laptop. It’s not in the pictures above, but I’m using the sparkfun xbee shield. I’ve got it programmed atm to set servo center pos, initialize the esc, and then wait for a command before moving.

It’s a bit of a hodge

It’s a bit of a hodge podge!  It’s got Tamiya axles from a TLT-1.  The frame is from Bender Customs from the rccrawler.com forums.  And the transmission comes from a Traxxas Stampede.  I think the shocks came from a HPI Savage, but I’m not sure.

I do have a body to put on it!  A green Bronco shell, I’ve just left it off to make updating the code simpler.  I can have updated photos this weekend to show it off.

I LIKE IT!I LIKE IT

I LIKE IT!

I LIKE IT ALOT!!!

 

:smiley:

Following closely

I’m building a similar project, but using a venom crawler, Duratrax sprint ESC, xbee and arduino… hopefully i will soon put up some pictures… any exemples of code yet ?

The code I have has caused

The code I have has caused me some headaches, stemming from the speed controller I started with.  The LRP AI Runner doesn’t save any settings and has to re-learn forward/reverse/neutral every time it’s powered on.  Timing seemed to be an issue, and it would get them backwards quite often.  So I set it aside until I was ready to order another ESC that kept it’s settings onboard.  Haven’t touched it since early November :confused:

After reading about your current ESC,

it would seem all you need to do is command a full forward/reverse in your setup() section of your arduino code. That should set the ESC up properly.

I was doing that at first,

I was doing that at first, and most of the time it worked. Provided I plugged in the ESC first, and microcontroller second.

But there were still times it seemed to make up it’s own mind which way it wanted to go.

I’ve made changes to the timing in the calibration, since it is afterall expecting a human hand to be squeezing a trigger, and not the precision of a microcontroller.  I’ve also moved it out of the setup() routine and call it manually once everything is settled.  And since switching from Servo.write to Servo.writeMicroseconds it has been reliable every time I’ve started it up now.

Perhaps (more than likely)

Perhaps (more than likely) ive missed something or dont fully understand, but could you not replace the ESC with a motor driver shield or similar?

At the time, it was just

At the time, it was just simpler to use what I already had.  R/C was what I knew, and it was easier to draw on that then try to find the stall current of a 540 can R/C motor from companies that don’t typically make that known.