This page (revision-30) was last changed on 2020-07-17 09:18 by Murray Altheim

This page was created on 2019-12-23 06:53 by Murray Altheim

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
30 2020-07-17 09:18 9 KB Murray Altheim to previous
29 2020-05-09 22:45 8 KB Murray Altheim to previous | to last
28 2020-05-09 22:26 8 KB Murray Altheim to previous | to last
27 2020-05-09 22:26 8 KB Murray Altheim to previous | to last
26 2020-05-09 22:25 8 KB Murray Altheim to previous | to last
25 2020-05-09 22:25 8 KB Murray Altheim to previous | to last
24 2020-01-02 09:06 8 KB Murray Altheim to previous | to last
23 2020-01-02 09:02 8 KB Murray Altheim to previous | to last
22 2020-01-02 08:59 7 KB Murray Altheim to previous | to last
21 2020-01-02 08:55 7 KB Murray Altheim to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 2 changed one line
It was David's fourth robot, hence the "04", a bit curious what the "SR" stands for (small robot?).
It was David's fourth robot (hence the "04"), and was built somewhere around 1998.
At line 16 removed one line
%%hx Chassis %%
At line 18 added 2 lines
%%hx Chassis %%
At line 26 added one line
%%hx Software %%
At line 28 added one line
The SR04 software exists as a collection of sensor routines and associated behaviors that are run concurrently by a round robn, non-preemptive multi-tasking scheduler. The structure is loosely based on Rodney Brooks' [subsumption architecture] as describe in Flynn's "Mobile Robots" book and more extensively on Brooks' home page (and elsewhere, run a web search on "subsumption").
At line 30 added 18 lines
Each sensor routine runs in turn in a 20 Hz sensor loop, and each sets a flag and some variables based on its own particular sensor input and state. An arbitration routine then picks the flag with the highest priority and passes it's variables along to the motor control sub-system. In this manner, sensors with higher priorities "subsume" the behaviors of lower priority sensors.
The priority scheme is based on the distance of the detecting event. Closer events have higher priority; more distant events have lower. The exact sequence is: 
* __0__  User 
* __1 __ Bumpers 
* __2__  Rotation and Scanning 
* __3__  IR Collision Avoidance 
* __4__  Sonar Ranging 
* __5__  Photo Approach/Avoid 
* __6__  Motion Detector 
* __7__  Dead-reckoning
Thus the Sonar ranging layer can subsume the Photo, Motion, and Dead-reckoning layers when it detects an obstacle or clear pathway. It is in turn subsumed by the IR collision avoidance, and the Rotation and Scanning behavior subsume both. The Bumper layer holds the ultimate control. All other tasks save the User (that's me) must give way if the robot has actually run into something, until the bumper behavior declares the robot to be free from obstructions. This formalization is an extremely useful way to organize multiple and potentially competing sensor inputs.