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:
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.
| Size | 9" circular. Minimum size determined by motor size. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Power | Two 9.6 volt rechargeable RC car battery; 1 7.2 V rechargable (3000mA/hr) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Processor | MRM board (68332) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Language | David Fidde's GCC 68332 port (C++); my C++ MRM library. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Motors | Two 30.1 volt DC geared Encoded motors in differential steering configuration; 1 servo to for scanner IR sensor (front) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sensors | 3 Sharp12 IRs, 1 Gameboy camera (line detection) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Competition Results | Never Competed completely | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Robot Notes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Possible Improvements | Carpet and Faster Processor! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parts List |
|