Basic RoBOTL robots (basic_bot's) are similar to Karel. A basic_bot exists on a X-Y coordinate plane marked off in grid squares each of which can contain blocks, walls and beepers. In Karel, streets and avenues are used, and walls exist between streets or avenues, not on them. Karel and Karel's beepers are located at intersections of streets and avenues. In RoBOTL, blocks can be placed on a grid square which keep a basic_bot from occupying that square. Both Karel and a basic_bot can face in one of four directions (North, South, East, and West) and has a magnetic compass to determine which way it is pointing. Both can move in a forward direction or can turn left in 90 degree increments.. A basic_bot has fixed cameras, similar to Karel, pointing left, front, and right to determine if a block is occupying the grid square in those directions. Because the blocks are detectable, it is an error to move a basic_bot into a block.
A basic_bot's sole enjoyment in life, it would seem, is to pick up and put down beepers. Beepers emit a barely-audible sound that a basic_bot can hear only if it occupies the same grid square as a beeper. A basic_bot can pick up beepers and put them in a bag it carries or can take beepers from the bag and put them down. A basic_bot keeps track of how many beepers it has in its bag, thus it is an error to attempt to remove a beeper from an empty bag. A basic_bot can count the number of beepers on the current grid square, thus it is an error to attempt to pick up a beeper if no beepers are there.
A basic_bot has no memory of previous events and very limited memory of its current state. It can keep track of its current X-Y location (its location state) but not where it has been in the past. As mentioned above, it also keeps track of the beepers in its bag (the beeper bag state). It can sense the presence of beepers and walls but cannot remember the location of walls or beepers it has previously encountered. In short, its decisions are based solely on the observations it can make (using its magnetic compass, audio-visual sensors and state memory) at the time the decision is required.
It is possible to simplify the programming effort of a basic_bot through the use of user-defined robots. A user-defined robot can have new instructions defined which incorporate the functionality of a basic_bot. Each new user-defined robot must specify a robot type from which it derived, which can be previously-defined robots. As such, all user-defined robots can trace their lineage back to a basic_bot and therefore inherit all the functionality of a basic_bot.
You can also go:
Created on 16 June 1995
Last revised 22 January 1997