behavior suggestions/help
I am jotting down notes/ideas for my next bot. I'm tired of simple obstacle avoidance and following lines - so I thought I would see what other ideas you may have...
For my next project I would like to have something like this:
lower level functions such as motor control (PWM), obstacle avoidance, power monitoring/distribution, location/positioning, etc all be somewhat independent systems that take their control from a higher "personality" system. This personality would be basically eat (recharge - more later), play and sleep. On top of this would be an optional manual override that would allow me to take control and direct movement via remote control.
Play - basically move around the house, avoiding obstacles.
Eat - when batteries are low, find the nest and recharge. Finding the nest may be difficult? I was thinking wheel encoders to track it's position from the nest?
Sleep - mainly for battery conservation - but also I dont want it buzzing around the house while I try to sleep. I thought it would be neat if a motion detector like the one sold here was incorporated so that if it were "sleeping", anyone/thing passing near would cause it to wake up.
The "personality" would be somewhat random. I have several BS2's that I plan to incorporate. The lower functions would be turned on/off and directed by a higher function - I am planning that each function would be controlled by one or part of a stamp - with control/feedback signals linking higher to lower functions.
I would like the option to override the autonomous systems and be able to remotely direct it's movements.
I was thinking that if each system had it's on stamp, the programing may be easier, and I could build more intelligence into the routines?
Anyway - this is still very much in the design phase. I just wanted to see if anyone here had feedback/suggestions about something like this.
For my next project I would like to have something like this:
lower level functions such as motor control (PWM), obstacle avoidance, power monitoring/distribution, location/positioning, etc all be somewhat independent systems that take their control from a higher "personality" system. This personality would be basically eat (recharge - more later), play and sleep. On top of this would be an optional manual override that would allow me to take control and direct movement via remote control.
Play - basically move around the house, avoiding obstacles.
Eat - when batteries are low, find the nest and recharge. Finding the nest may be difficult? I was thinking wheel encoders to track it's position from the nest?
Sleep - mainly for battery conservation - but also I dont want it buzzing around the house while I try to sleep. I thought it would be neat if a motion detector like the one sold here was incorporated so that if it were "sleeping", anyone/thing passing near would cause it to wake up.
The "personality" would be somewhat random. I have several BS2's that I plan to incorporate. The lower functions would be turned on/off and directed by a higher function - I am planning that each function would be controlled by one or part of a stamp - with control/feedback signals linking higher to lower functions.
I would like the option to override the autonomous systems and be able to remotely direct it's movements.
I was thinking that if each system had it's on stamp, the programing may be easier, and I could build more intelligence into the routines?
Anyway - this is still very much in the design phase. I just wanted to see if anyone here had feedback/suggestions about something like this.
Comments
and they are all doable. You didn't say which bot
you have in mind. Penguin robot would be ideal
for this. It's small, has the most power with a
BS2px, and is capable of walking to the charging
nest.
Encoders are fine, but wheels may have some
slippage, and over distances, and with various turns,
values tend to accumulate errors. You may want to
look at infrared, as Penguin and BoeBot are fully
equipped to sense an IR Beacon.
A motion detector can be made from a robots'
IR sensor, light sensitive photodetector,
or ultrasonic sensor. Penguin robot and Boebot
are well equipped for this. The PING))) ultrasonic
sensor is an expansion.
Sleeping is no problem as there are provisions in
PBASIC code to do so. There are various ways
to code this. Obtainable, also from Parallax, is a
remote that works on IR and can control Boebot.
I believe the same is in the works for Penguin.
Introducing random behaviors is very fascinating
and there are several ways to accomplish it.
With more complex programs, and I have seen
this with walking robots the most, something
random always seems to show up. You can
help that along, however, with random code.
PBASIC language is fully equipped to do this.
You could dedicate a hardware based stamp to
each function. You could also work everything in
software. There are multiple pages of memory in
the chip to work with. Look at the software route
first, as software has no weight, takes up no
physical space, and does not consume any extra
power.
I sincerely hope this helps you get started on
your very exciting new project.
humanoido
navigation:
If a bot is going to do more than roam around blind it needs to have some form of navigation, mapping software, IR beacons, color sensors to detect way points. some method of saying I'm here and I know I need to get to there. This post talks about a beacon based navigation system: http://forums.parallax.com/showthread.php?p=646050 No one seems to have mastered mapping code, Yet! and each system has it's pro's and cons. maybe a marriage of both is the ultimate solution.
Recharging:
I hate reinventing the wheel. so I would look at the Irobot Roomba they have the charging station Nailed. it's a IR beacon Base that also helps guide the roomba into the doc to charge. I'm sure there is video's of this out there. but the Roomba hits a point where it says I better get home before I run out of power, but still wanders around cleaning, but as soon as it sees the base it heads home. I would look at the roomba or many other bots out there and use their Idea for recharging.
Random behavior:
you can have your bot hard coded to do things at specific events or times and still appear to be acting random, I would give your bot the ability to randomly choose a behavior, but have different behaviors available at different times, Don't allow your bot to choose to start singing at 4a.m. or to play fetch in the middle of the night. I would factor in time of day and day of the week, you could even factor in room temperature, location and the amount of times other behaviors have been run. I'm going to mount a 8 pin Dip switch for manual over rides of behaviors, if one behavior proves to be annoying or doesn't function correctly I can merely turn off that behavior with the dip switch. I also want to have an IR remote for manual overriding the bot, by choosing it's task or manually controlling it's movement.
Good Luck! I hope you share your win's and losses so that we can all learn from them.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
A complex design is the sign of an inferior designer. - Jamie Hyneman, Myth Buster
Post Edited (Dgswaner) : 9/7/2007 2:59:55 PM GMT
I would like to say that your division of labor probably isn't the best, though it would be easiest.· You might be better off having one master stamp, one in charge of sensors, and one for locomotion and have them communicte serially.· I say this because if you have one stamp for each mode then you have one overloaded stamp and however many other stamps doing nothing.· Hope this helps.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔