Shop OBEX P1 Docs P2 Docs Learn Events
robot navigation around clutter — Parallax Forums

robot navigation around clutter

ArchiverArchiver Posts: 46,084
edited 2000-09-01 07:30 in General Discussion
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]

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2000-09-01 07:30
    At 12:23 PM 8/31/2000 -0400, you wrote:
    >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]
Sign In or Register to comment.