robot navigation around clutter
Hi all: I have some questions on making a robot avoid clutter in its
navigation.I want to stay with Stamp based systems,even if I need 2 or 3 for
seperate tasks.I use servos for drive wheels with no feedback right now.
Currently I have my small robot set up with 3 IR sensors fwd,left,right
detection.
These work fine on walls and chairs. It also has 2 bumper sensors,left,right
for thin objects such as 4 leg chairs. Currently the robot can drive around
a room and stays out of trouble,but the problem is,when it gets itself under
a 4 leg chair,(clutter) it will bounce around for 10 minutes until it works
a path back out. In the open areas of a room,it just drives straight across
the open area,until it hits a wall,or clutter on the opposite
side.Ultimately the robot should stay in the open areas.
How would I go about making the robot stay out of those clutterd areas?
chair legs,tables,book piles,whatever?
A high resolution vision system would do it, but I can imagine the difficult
programming and expense.
I thought of dead reckoning such as Submarines,and aircraft use,with
inertial guidance, but,that requires high accuracy in drivetrain,no slippage
on rug,tile etc etc etc
I thought of an onboard compass and mapping its terrain into data tables,but
then again the robot needs to have 100% accurate positioning.
An onboard referance system to some known source in an X-Y format may work
with guidance beams.
I thought of a sharp sensor on board, and everytime it sees an object ahead
it sets a flag in a database table the robot builds up,however repeatable
accuracy worries me again.
What does everyone think? Any ideas are appreciated.
Sincerely
Kerry
Admin@M...
WWW server hosting
[url=Http://mntnweb.com]Http://mntnweb.com[/url]
Binghamton online Webcam [url=Http://MntnWeb.Com/bing.htm]Http://MntnWeb.Com/bing.htm[/url]
CHRISTMAS Web Page [url=Http://mntnweb.com/xmas.htm]Http://mntnweb.com/xmas.htm[/url]
navigation.I want to stay with Stamp based systems,even if I need 2 or 3 for
seperate tasks.I use servos for drive wheels with no feedback right now.
Currently I have my small robot set up with 3 IR sensors fwd,left,right
detection.
These work fine on walls and chairs. It also has 2 bumper sensors,left,right
for thin objects such as 4 leg chairs. Currently the robot can drive around
a room and stays out of trouble,but the problem is,when it gets itself under
a 4 leg chair,(clutter) it will bounce around for 10 minutes until it works
a path back out. In the open areas of a room,it just drives straight across
the open area,until it hits a wall,or clutter on the opposite
side.Ultimately the robot should stay in the open areas.
How would I go about making the robot stay out of those clutterd areas?
chair legs,tables,book piles,whatever?
A high resolution vision system would do it, but I can imagine the difficult
programming and expense.
I thought of dead reckoning such as Submarines,and aircraft use,with
inertial guidance, but,that requires high accuracy in drivetrain,no slippage
on rug,tile etc etc etc
I thought of an onboard compass and mapping its terrain into data tables,but
then again the robot needs to have 100% accurate positioning.
An onboard referance system to some known source in an X-Y format may work
with guidance beams.
I thought of a sharp sensor on board, and everytime it sees an object ahead
it sets a flag in a database table the robot builds up,however repeatable
accuracy worries me again.
What does everyone think? Any ideas are appreciated.
Sincerely
Kerry
Admin@M...
WWW server hosting
[url=Http://mntnweb.com]Http://mntnweb.com[/url]
Binghamton online Webcam [url=Http://MntnWeb.Com/bing.htm]Http://MntnWeb.Com/bing.htm[/url]
CHRISTMAS Web Page [url=Http://mntnweb.com/xmas.htm]Http://mntnweb.com/xmas.htm[/url]
Comments
>Hi all: I have some questions on making a robot avoid clutter in its
>navigation.I want to stay with Stamp based systems,even if I need 2 or 3
>for seperate tasks.I use servos for drive wheels with no feedback right now.
>Currently I have my small robot set up with 3 IR sensors fwd,left,right
>detection.
Hi Kerry -
At what degree angles from the center point of the platform ?
>These work fine on walls and chairs. It also has 2 bumper
>sensors,left,right for thin objects such as 4 leg chairs. Currently the
>robot can drive around a room and stays out of trouble,but the problem
>is,when it gets itself under a 4 leg chair,(clutter) it will bounce around
>for 10 minutes until it works a path back out.
The simplest answer at this juncture is - add a rear-facing sensor.
Add a "set of rules" -
rem WatchOut Subroutine
(pls forgive the on-the-fly spaghetti code, NOT complete !)
If I am about to go in reverse then 100 ' What have we done ?
Goto 200 ' Branch if we had gone FWD
Rem drop through We HAD BEEN in Reverse
100 Dir=rear : Gosub Scan_Directionally ' Generalized Scanner
' Front or rear
If Rear_scan > 0 then 300 ' Hit w/i distance ?
Dir=Clear ' Call to scanner w/ no direction is an ERROR
' Used for debugging
200 If Last_Dir = forward then 400
Move -1 * mm distance ' a short distance < =
scnr_range ' greatest dist you can
scan with Ir
Goto End_This_Decision
300 Dir=rear : Gosub Scan_Directionally
Rear_scan < Max_Move then WatchOut ' Check before traveling
Goto End_This_Decision
WatchOut:
rem Potential for lock-up - BE CAREFUL and take precautions
reversals = 1
End_This_Decision:
rem mm is positive for fwd and neg for reverse
IF mm > 0 them Move_Fwd
IF mm < 0 them Move_BKWD
rem provision for a third case if necessary
rem If mm = 0 perhaps for initial state prior to collisions or
decisions
Move_Bkwd:
If Last_DIR = Fwd then 400
Reversals = Reversals + 1
400 Reversals = Reversals - 1
mm = mm * -1
Dir = REV
Gosub Move
Move_Fwd:
If Last_DIR = Rev then 500
Reversals = Reversals + 1
500 Reversals = Reversals - 1
Dir=FWD
Gosub Move
Goto Check_For_Danger
rem Independent Routine - placed here only for convenience
Move:
blah, blah, blah
motivate using Dir (as set) and mm (distance)
Save_BUMP = BUMP_Indicator ' Prolly will be needed
Return
Check_for_Danger:
If Reversals > Max_Jerky_Moves then Stop_this_Nonsense
Goto Exit_Rtn:
Stop_This_Nonsense:
rem Do something about it
Exit_Rtn:
Rem End of this routine
>In the open areas of a room,it just drives straight across
>the open area,until it hits a wall,or clutter on the opposite
>side.Ultimately the robot should stay in the open areas.
> How would I go about making the robot stay out of those clutterd areas?
If you intend to randomly rove (no charted course or past history to guide
you), then the matter becomes "how do I get OUT of a cluttered area IF I
get there" [noparse][[/noparse]see above for "WatchOut" ]. If you have a charted course, and
know in advance where your goal is - avoid any and all obstacles within an
xx degree arc from your last way point. A waypoint might be equated to a
navigational "bookmark". Personally, I had even considered mounting an
Irods on a servo - which I believe I saw implemented a few weeks ago, but
didn't keep the URL (sorry). So, by keeping a clear field ahead, you avoid
the problem.
The "charted course" and/or "past histpry" imply saving information. This
could be done in (1) EEPROM or (2) Flash; intenal (1) or eternal (1,2), as
may be required.
>chair legs,tables,book piles,whatever?
>A high resolution vision system would do it, but I can imagine the difficult
>programming and expense.
A mere grand or so <yikes>.
>I thought of dead reckoning such as Submarines,and aircraft use,with
>inertial guidance, but,that requires high accuracy in drivetrain,no slippage
>on rug,tile etc etc etc
That's still your best bet - at least in the initial phases of implementation.
Build small - GR-OOO-WWWWW B-I-G <smile>.
>I thought of an onboard compass and mapping its terrain into data
>tables,but then again the robot needs to have 100% accurate positioning.
With a hobby robot and a limited budget, I would posit that 100% of
anything woiuld be darned near impossible. Other than IC chips (which are
generally cheap by comparision) accuracy and high resolution, generally
carry a hefty price tag. Just my experience - YMMV. The exception may be
high precision DC motors and high-rez steppers, to a limited degree.
>An onboard referance system to some known source in an X-Y format may work
>with guidance beams.
That was my thought too. It becomes quite complex though - inre
communicating the info as req'd and on demand. Broadcast systems are
possible with a set and time spaced reporting cadence/sequence.
>I thought of a sharp sensor on board, and everytime it sees an object
>ahead it sets a flag in a database table the robot builds up,however
>repeatable accuracy worries me again.
Saving all that data should concern you too. What of "sorting/arranging" it
also, a the write_time delays which STOP all processes DEAD !! That I had
considered as an off-board process for a PIC EEPROM manager. The PIC would
wait ONLY on the NEXT WRITE; thus achieving overlap with other processing.
The Stamp can not achive true overlapped processing, as it does
one-thing-at-a-time.
Stamp: a -> wait b -> wait c-> what d -> wait -> end
a \
PIC check c - ok - b > wait a -> check b -> wait a - > end
| c /
_ready
|
wait c
>What does everyone think? Any ideas are appreciated.
You've got'em - good luck
>Sincerely
>Kerry
>Admin@M...
>WWW server hosting
>[url=Http://mntnweb.com]Http://mntnweb.com[/url]
Regards,
Bruce
>Binghamton online Webcam [url=Http://MntnWeb.Com/bing.htm]Http://MntnWeb.Com/bing.htm[/url]
>CHRISTMAS Web Page [url=Http://mntnweb.com/xmas.htm]Http://mntnweb.com/xmas.htm[/url]