Search
About

Damien works with students and teacher from around the world, bringing the effective use of technology to the classroom.  

LEGO MINDSTORMS
Damien is a member of the MCP (Mindstorms Community Program), a small group of experts who collaborate with LEGO to make the MINDSTORM product better.

VEX IQ Robotics
Damien is a member of the VEX IQ Super User group, a small group of experts who collaborate with VEX to make the VEX IQ platform a better product 

 

Books

Teacher Resource Books

Global Map

See where the DomaBot and RileyRover is being used around the world

« The week that was - Central QLD | Main | How to build a hexapod robot »
Tuesday
Jan042011

NXT Crane Hybrid

Here is my version of a NXT-Crane Hybrid. Using the LEGO NXT Mindstorms system and the #8292 cherry picker.

 + 
 

Click the link for lots more photos and information

Mechanical Adjustments

The first step was to add in a differential to the back wheels and an NXT drive motor. I had to pull out most of the guts of the cherry picker, especially all the gearing that was needed to switch the existing 1 motor between the boom arm spin and raise mechinsms.

I then added a Power Functions motor next to the drive motor to actuate the boom lift arm. There is a clutch gear in there to protect the motor once the boom arm is fully lifted. The worm gear arrangment already there works well so I just needed to be able to spin the axel that was going up inside of the turntable. The worm gear also ensure that it can not be back-driven one power is removed from the motor. There is plenty of space under the boom arm even when it was folded down, so another PF motor was added drive the turntable. Given the flat base of the PF motor, I had to turn it upside down so it wouldn't foul the gears underneath.

The Power Functions battery pack, once lying down, also fits under the boom.

The steering motor was a touch more difficult. I used an NXT motor here as I needed the intelligent control to ensure accurate and repeatable steering. The whole cab had to be removed to get down to the rack and pinion mechanism. I wanted the steering to react quickly, but was also concerned about the amount of torque that would be needed. Played with a few different gear ratio's to get it just right.

I used a gold NXT in the cab to keep the colour scheme consistent. The cab was mostly redone, with only the front grill, and top scaffolding kept in it's semi-original form. Sadly there was no room left for the chairs :( Also inside the cab is mounted a HiTechnic IRLink sensor to talk to the PF IR receiver (also mounted in the cab).

The Controller is a separate NXT which has a HiTechnic acceleration sensor and a pushbutton. The Controller and the Crane are connected via Bluetooth. Tilt the Controller left and right for steering and forward/backward for movement. Press the button down and control switches to the boom arm. Left/right will spin the turntable and forward/backward will raise and lower the arm.

NXT-G Program: The Accelerometer from HiTechnic outputs a reading of 200 counts per G. If it's level, then the X and Y readings are both 0. As you tilt it, the readings change depending on the angle. Given that the power the motors can handle is 0-100, I divide both the X and Y readings by 2 before sending them via bluetooth.

 

Drive motors are proportionally controlled. The further forward you point, the faster it goes. The code receives a BT message and takes the number and applies it to the drive wheel power stub in the data hub. If it's a positive number (greater than 0), the direction stub is TRUE/Forward, otherwise (less than 0), the direction is FALSE/backwards.

The steering was slightly different as there needed to be some software limits to stop the rack/pinion steering from tearing itself apart. Rather than being speed controlled like the drive wheels, I wanted this one to be position controlled. ie. If the accelerometer gave a reading of 0, I wanted the position of the motor to be zero degrees (NOT zero power). To achieve this, I need to know what was the current angle of the steering motor. I then compared that with the reading from the Y axis of the accelerometer that has been sent from the Controller. If the sensor value is more than the current motor angle, then the motor turns one way. If it is less, then the motor turns the other way. The further away from the desired angle, the faster it turned to the desired angle.

To control the boom arm, the pushbutton on the Controller is pressed first before the accelerometer is tilted. The PF motors however do not have any speed control, they are either FORWARD, BACKWARD or STOPPED. I introduced some 'dead space' so that they wouldn't trigger on accelerometer values between -40 <-> 40. Two variables (x_val, y_val) are used to keep track of the state of the accelerometer. Less than -40, a '-1' is written, between -40 and +40, a '0' is written, and above 40, a '1' is written.

The PF motor block from HiTechnic can control 2 motors, but unfortunately not independently. You musty set the state of both motors (reverse, off, forward) at the same time. You cannot send a command to one motor without also sending a command to the other. Given that I have two motors with three possible actions, there are 9 different motor combinations. The Controller figures out which way the Controller is tilted (left, left/forward, right/back, back, no-tilt etc) and assigns a number to each state. This number is sent via BT to the crane.

Once the message is received by the crane, it then uses a Switch block to apply the state number to each of the 9 different motor conditions.

EmailEmail Article to Friend

Reader Comments (2)

Todos tus proyectos y ensambles son fuente de mucha inspiración, gracias.

November 16, 2013 | Unregistered CommenterLGerardo

pretty good robot /truck great programing

May 20, 2014 | Unregistered Commenterlachlann

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>