Shop OBEX P1 Docs P2 Docs Learn Events
A better navigation method — Parallax Forums

A better navigation method

DiablodeMorteDiablodeMorte Posts: 238
edited 2008-02-19 12:24 in Robotics
Greetings,

I have recently built a rather large robot that I eventually want to roam my house while I am away. The robot, so far, is constructed using a psuedo-erector's set and the motors are controlled via simply on-off motor control. I can "upgrade" the motor controllers to some parallax HB-25's that I have if I need to. My problem is this: Becuase I just wanted to get the robot moving quickly, the way it moves is very very simple: it waits for a command via serial and then executes that command(Forward,Backward,Left,Right,Stop). If there is no command within a 1 second window the unit stops. What I am looking for is a better navigation method. With the current: go forward for 1 second, stop, go left 1 second, stop method it is way way to jerky to be useful and is also not very accurate. Can anybody suggest a better way to naviate?I'd like to not have to put lines on my floor or set up beacons. For starters I would like to simply smooth out the movement and then maybe add some collision detection and then maybe blob tracking. I've included a picture of my robot for scale.

P.S. For the moment, the robot is actually remote controlled via skype and a webcamera.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Current Projects:
Robot Control Via Skype API - Dev Stage(50% Complete) - Total(25%)
Robot Localization Via Xbee's - Research Stage
IR Tracking with Propeller - Research Stage
375 x 500 - 152K

Comments

  • DgswanerDgswaner Posts: 795
    edited 2008-02-19 05:03
    DiablodeMorte, at the "layer" your at there is not better a method for locomotion. call it a Abstraction layer, your at the most basic layer you have defined all of the single motions your bot can preform. your bot can do more than go forward or backwards, but it would be a combination of the items in this layer, so you need to decide and then create the next abstraction layer, and that mostly depends on what you want your bot to do. you could do things like drive in a circles, squares or some other shape or pattern, for example.

    The key to your stated goal, having your bot wander around your home, is to add enough sensors for your bot to adequately sense it's environment and make decisions accordingly. The sensors you choose/require will solely dictate the next several abstraction layers. with the sensors in place you can then build code like look around and then turn to the most open area, go straight, follow a wall. So the next abstraction layer would be follow path, roam, guard etc.

    they layers build on one another so you need to add your sensors and get them working at the basic abstraction layer and then build more complex layers until your sending commands or your bot is choosing commands at the highest layer, not the simple forward, back. I know your well accomplished so this might be stuff you already know, but it's something I've learned along the way so take from it what you will.

    ok off of my soap box,


    I have a large bot, started with basic commands (controlling relays), have upgraded to HB25's and added sensors. and I'm awaiting parts to add more, my best working roaming code is basically this:

    look around with a ping
    turn to the most open direction and then go forward
    monitor the ping if it detects something less than 16 inches away stop and start over.
    more goes on than this but this is the basics of what my current code does.

    once I get off my lazy butt and get a little more free time I'm going to add encoders, I think this is the ultimate way to have a bot wonder a house and or be controlled.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    "A complex design is the sign of an inferior designer." - Jamie Hyneman, Myth Buster

    DGSwaner
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2008-02-19 12:24
    If the robot were without corners, you could have a ring bumper detect collisions from any direction and at least have it stop until it resolves what to do.

    I considered building a robot with several different perimeters. The bumper would be the least distant, IR sensors would provide more intermediate navigation, and ultrasound would reach out to look for pathways. Also, it is important to have downward IR sensors to make sure the robot doesn't wander off a curb or down a stairwell.

    The ultrasound could be mounted on a turret to reduce number of sensors. The robot could occasionally stop and pan the area with ultrasound, then continue to navagate.

    All that will get your robot into wandering about an interior environment; but to find its way back home, it will need to map out where it has been. I am a bit stumped when it comes to mapping all that data and suspect you would need a Linux based SBC to co-process the robot's movements into some sort of grid.

    Encoders would certainly be a significant source of raw data. But, you also might map the direction and intensity of light sources to provide funamental bearings. A magnetic compass is not really useful in an environment with steel desks, table legs and chairs.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    PLEASE CONSIDER the following:

    Do you want a quickly operational black box solution or the knowledge included therein?······
    ···················· Tropically,····· G. Herzog [noparse][[/noparse]·黃鶴 ]·in Taiwan
Sign In or Register to comment.