RSSC Hall Navigation Contest
(July 2004-November 2004)

[MRM Library][Home] [robots]

Name: M4

M4

Following the AS&J contest, Jeff and I decided to suggest the idea of an open navigation contest to the RSSC robot club since many of its members were already trying to develop dead reckoning/navgiational type algorithms. This the progress of M4 for the Hall Navigation Contest sponsored by the RSSC Robot Club. Actually, from the direction Jeff and I have been going, I just decided to continue developing mapping and navigation algorithms whether or not it leads to a contest or not.

Mar 24- Apr 2004: Designing a map of the Fullerton engineering building 2nd floor in the scene editor was turning out to be a real bear! In addition, I wasn't sure what resolution my final map was going to be; if I designed the map at one resolution, then I did not want to have to redraw it at another. To solve this problem I added the ability to import AutoCAD DXF files. Actually, its not as advanced as it sounds. It only supports the line element, but you would be surprised how well it works with just lines. The second part of the problem was still being able to easily design the map in a CAD program. I thought this would be easier than it actually turned out. I tried several CAD prorams from commerical demos to freeware; a lot of them are for designing parts like bolts and thus do not scale, and some of the programs actually embellish the DXF files so it became harder to import.

It seems in the end, my final choice was vector engineering. It is actually very primitive, but for being able to draw in lines it has the simplist and most intuitive user interface. Granted, the others may be great CAD programs, but for limited time to learn and greatly limited bugdget Vector Engineer suits the purpose.

Mar - Apr 2004: Also, during this time I added the invariant error model: wheel base and wheel diameters and ability to view the associated robot on the simulator.

Mar - Apr 2004: Added the ability to dynamically rescale the DXF file on import. This allows the scene to be designed at any size and just resized on import to any dimension--quite convenient.

May 14 - May 23, 2004: During this time, in my maps, I was having trouble seeing where the noise in the maps were coming from so I added a data logging capability. Every time the robot actually detects an obstacle, it records the robot position and the distance from the obstacle.

May 24 - May 30: During this time, I actually fixed some of the mapping code, and eliminated one layer of grid thus sticking with only 3 layers of grid: A*, scene grid, and world (simulator) grid.

May 31 - June 13: I have some of the what I call "infrastructure" needed to begin mapping algorithms. This included graphical IR sensor feedback as follows:

The solid black outline is what was basically really there; the random dots is the map uploaded from a mapping episode. This along with the data log which shows at what time each obstacle was detected allows a fairly good view of what is happening. Next is the hard part. There are two interrelated problems at this point:

  1. mapping
  2. navigation with current map
Mapping while moving actually proved quite inaccurate. Thus I'll probably need two seperate modes of operation. One which just travels between points with the current map, and only when an obstacle is detected, then stop and map that current location. At least this is the current thought. To develop this, I'll need to add a sonar simulation to the simulator for good overall obstacle detection (IRs tend to be too narrow a beam). Obviously the map correspondence problem is going to prove to be a great obstacle to sucess!

June 14 - June 26: Well, no matter how much infrastructure you think you have, its never enough. Continued implementing the playback function to be used in conjustion to the checkpoint logs. This should also prove very valuable to validating actual robot dynamic execution.

June 27 - June 30: Decided to concentrate on simpler version of RSSC contest. Added additional servo and IR to rear of M4 for wall following.

July 1-July 14: After installing the finite state machine code, and getting it (what I thought) was working in the simulator, it was then time to download to the real robot. To my chagrin I discovered that the robot behavior indeed deviated from the simualtor; it was pulling to the left. This, of course, required a deviation to investigate the cause. After data logging the motor PID values, I still found nothing unusual. Then, the obvious dawned on me--try the robot without any PID to observe the its behavior; this indeed was the key as the robot without the application of the cruise control function, naturally pulled left which I speculate was due to power distribution inbalance. This of course developed into a new invariant parameter--left and right motor "stall" wrench effort and maximum speed. By adjusting the left and right motors differently, I was now able to simulate the current behavior of the robot.

July 14-July 23: Reviewing current JAUS implementations and in particular, the messaging protocol which may be of assistance in generating a better system interface for mobile robots...

July 24-September,2004: Started trying to solve RSSC Hallway navigation using FSM and wall following algorithm. Ran into several problems. Since this wasn't the my desired solution (a wall follower). I decided to continue to try to develop a more robost mechanism. After the robot club meeting, I set a tentative goal to have a basic PC platfrom that enabled me to develop a map of a room (hall). Place the initial location of the robot in the room, set the waypoints, and start the robot all from a host application. This is the simple version of the school project for embedded architectures. I hope to have this ready by the November robot club meeting (whether I decide to demo or not).

September-Oct,2004: Merged the Scene Editor and Simulator into the Mobile Robot Workshop. Added more JAUS like messaging protocol and added communication to enable input of waypoints and configuration of robot from host PC. Still dealing with all sort of small (or large) bugs that always keep me "almost" there...

November 1-November 12,2004: Was able to draw scene of dining room/kitchen in VectorEngineer and exported to DXF. opened DXF and saved as an internal scene file format where I filled in details like table etc. Sucessfully downloaded this scene file into M4 and traversed 2 waypoints downloaded into M4 using the new communication interface (next to hall and in kitchen) starting from front door. The accuracy was pretty bad, but the grid resolution was 6"; not sure if this was related or simply the 50ms scheduler period in combination with M4 getting rusty. The "M" series will be 2 years old next month! From the original Line Navigation Contest, the basic hardware has not changed much. Not necessarily because of the 2 year barrier, but I started planning for next robot to overcome the inability of the current one to travel over carpet.

M4 Specification

Size9" circular. Minimum size determined by motor size.
PowerTwo 9.6 volt rechargeable RC car battery; 1 7.2 V rechargable (3000mA/hr)
ProcessorMRM board (68332)
LanguageDavid Fidde's GCC 68332 port (C++); my C++ MRM library.
MotorsTwo 30.1 volt DC geared Encoded motors in differential steering configuration; 1 servo to for scanner IR sensor (front)
Sensors3 Sharp12 IRs, 1 Gameboy camera (line detection)
Competition ResultsNever Competed completely
Robot Notes
Possible ImprovementsCarpet and Faster Processor!
Parts List
QtyCostSupplierPart#Description
1$99Mark CastelluccioNAMini Robomind 68332 microcontroller
1Mark CastellucioOptrex LCDLCD that comes with the MRM package. I know little about it.
2~$10Hobby storeNA4" RC Airplane tires. (drive assembly)
2~$98Servo Systems CoDM-676Pittman D.C. Geared Motor/Encoder [GM9236C534-R2] (drive assembly)
2$58New Micros, Inc.NMIH-00505A H-Bridge DC motor controller (drive assembly)
2$13.5 ea.AcronameR48-IR12Sharp GP2D12 Detector Package
1~$15?Gameboy Camera
1~$5local storeNASintra (PVC board)/particle board
3~$4RadioshackAssortment of capacitors
2~$20x2Radioshack?9.6 NMH volt RC battery & Charger (20V for motor)
1~$20?Radioshack?7.2 volt NMh rechargeable RC (3A/hr) sensor/microcontroller
1~$1Radioshack?Momentary pushbutton switch
1~$2Radioshack275-603ASPDT Toggle switch (5A) (Motor power assembly)
1~$2Radioshack275-603ASPDT Toggle switch (10A) (Master power switch)
1~$20??Micro BB Servo (mounted but not used)
2$1.4Digi-keyED1973-NDTerm Block 2POS (motor power)
1$.74Digi-keyED2227-NDTerm Block 4POS (motor power)
1$.40Digi-keyF042-NDClip Fuse (motor power)
1$.21Digi-keyF123-NDFuse 5A Fast Acting (motor power)
1$.25Digi-keyP7287-ND47V/125A . Surge Suppressor (motor power)
1$.68Digi-keyRXE250-ND2.5 A resettable Fuse (motor power)
1$1.25Digi-keyFR802-NDRect. Fast 100v 8A TO-220 (motor power)
1$2Digi-keyWM2800-NDConn Hous 2Pos C-GRID "A" series & other connectors. (various uses)
1$.09ea.Digi-keyWM2557-NDTerm 24-30AWG Female Crimp; High Force (various uses)
1$12.87Digi-keyGH5004-ND16 Key keypad rear mount (keypad assembly)
10$1.43Digi-keyA3007-NDConn. Socket 20-24AWG Tin Crimp (keypad assembly)
1$.61Digi-keyA3017-NDConn housing 8 Pos. .1" single (keypad assembly)
1$11RobotOzEDE1144EDE1144 Keypad encoder IC
1$0.5hobby shop?Scrap bolsa wood
2$0Jeff SmithNA7805 1A 5 volt regulator (sensor power assembly)
1$2Radio ShackNA10 segment LED display