Here you will find some descriptions, code, photos of my obsession with robotics.
I started out in this hobby about four years ago, and have during that time, slowly taught myself the ins and outs of digital electronics, writing software for micro-controllers, concepts like PID closed loop control, and much much much more!
AMI (Autonomous Mobile Intelligence)
This is my current robot platform and the base for all my experimenting and learning.
Hardware specifications:
- Processor: MRM v1.1 from robominds
- Motors: some big Matsushita 24v motors with built in 1850 cpr optical encoders
- Motor control board: A mosfet based board designed by David Smith and modified slightly by me.
- Power Distribution: Uses a National Semiconductor switching regualator for maximum efficency
- Body: combination of Acrylic and aluminumn
Software:
The software for AMI is all written in ANSI C using the Eclipse IDE, and compiled using the GNU tools. I use a laptop running Gentoo Linux as my development workstation, and transmit compiled binaries to AMI via a serial cable link using kermit.
Most of the base code for accessing the various periperials and functions of 68332 is from the Motorobots library. This is an open source library of 68k code primarily aimed at the 68332 ( specifically the MRM ) but much of it is suitable for other 68k based processors such as the Motorola Coldfire.
Proportional Integral Derivative (PID) closed loop motor control: I implemented a PID algorithm to give very precise control over AMI's motors, and thus motion. There are a number of decisions that needed to be made prior to implementing any PID control code. Things that need to be considered were:
- What PWM resolution should I use?
- What PWM frequency should I use?
- Should I use locked anti-phase or sign-magnitude to control my motors?
- Should I implement velocity control, or position control?
- What PID loop frequency should I use?
The next step in the process was integrating some grid based navigation software into the mix. I did some initial research and after reading some papers I found on the web I settled on an algorithm discussed in a paper written by Tucker Balch from Georga Tech. I modified the sample C code he wrote quite heavily to fit into the framework of AMI's existing software.
The algorithm uses a occupancy grid in conjunction with a cost grid to work out the optimum (lowest cost) path from the start position to the goal.
Pictures:
| AMI from the front | |
| This front quarter view gives you a good understanding of the contruction of the base. | |
| In this rear quarter view you can see the trail wheel assembly | |
| A good view of the arrangement of the electronics | |
| A close up view of the drive belt arrangement. The drive shafts are supported by bearings in each of the upright supports. | |
| The mini-robomind controller board featuring a Motorola 68332 with 512k or RAM and 512k of Flash. | |
| A close up shot of the h-bridge motor driver circuitry. | |
| This power distribution board provides a couple of 12v outputs, a number of 5v outputs, and a few -5v outputs. The board features a National Semiconductor switching regulator to get maximum efficency from the batteries. |