Swiftsure BS2e Robot
This is my senior project (12th grade) of a robot named Swiftsure. I had been considering going into architecture for my major, until I attended the DARPA Urban Challenge in Victorville, CA. This collection of robotic vehicles inspired me, and I decided to do something autonomous for my senior project at Escondido Charter High School. I had seen the BS2 starter kit at Frys, so I shelled out the $150 bucks and got it. I was surprised at how easy it is to program, especially with a background in Java. I then designed my first robot, Swiftsure.
My design goal was to have an autonomous robot that could travel from point A to point B, and then camp out at that point and flash a light like a lightship (just google Swiftsure 1904). Unfortunately, I grossly overestimated the capabilities of the Parallax GPS in calculating the current heading, and so I cut down my project to just an autonomous roving vehicle. The official purpose is "To autonomously rove about until an external trigger, in this case a low light level, cause the bot to stop and collect environmental data until the external trigger dictates to move on again." It wasn't until about two weeks before my presentation that I discovered the compass module, and by then I was reluctant to rebuild a working robot with so little time.
So now I am on to Swiftsure II, a more capable autonomous bot with a compass, a BS2, and a BS2px. I had written most of the code for the first version, so this should be a simple conversion...
Swiftsure specs:
Brains: BS2e
Sensors:
1 - Ping
1 - Sensiron Temperature/Humidity
1 - GPS
2 - Custom Bumpers
Other Electronics:
1 - Datalogger
1 - Ping Spin servo
1 - Tank Tread Kit
My object avoidance algorithm is as follows:
Desired heading is known.
Look in direction of desired heading.
If clear, go that way.
If not, look to the right a little bit.
If clear, go that way.
Repeat as needed to the left, and then to the right a bit more, then to the left, and so on.
If no clear path is available, reverse direction.
Anybody else use this in one of their bots? if you have, let me know. If you have an improvement to that still retains this simplicity, please let me know.
My design goal was to have an autonomous robot that could travel from point A to point B, and then camp out at that point and flash a light like a lightship (just google Swiftsure 1904). Unfortunately, I grossly overestimated the capabilities of the Parallax GPS in calculating the current heading, and so I cut down my project to just an autonomous roving vehicle. The official purpose is "To autonomously rove about until an external trigger, in this case a low light level, cause the bot to stop and collect environmental data until the external trigger dictates to move on again." It wasn't until about two weeks before my presentation that I discovered the compass module, and by then I was reluctant to rebuild a working robot with so little time.
So now I am on to Swiftsure II, a more capable autonomous bot with a compass, a BS2, and a BS2px. I had written most of the code for the first version, so this should be a simple conversion...
Swiftsure specs:
Brains: BS2e
Sensors:
1 - Ping
1 - Sensiron Temperature/Humidity
1 - GPS
2 - Custom Bumpers
Other Electronics:
1 - Datalogger
1 - Ping Spin servo
1 - Tank Tread Kit
My object avoidance algorithm is as follows:
Desired heading is known.
Look in direction of desired heading.
If clear, go that way.
If not, look to the right a little bit.
If clear, go that way.
Repeat as needed to the left, and then to the right a bit more, then to the left, and so on.
If no clear path is available, reverse direction.
Anybody else use this in one of their bots? if you have, let me know. If you have an improvement to that still retains this simplicity, please let me know.
Comments
Congrats on a well-done project! It's really satisfying to see such craftsmanship and attention to detail. You should be proud of what you've accomplished! (As a Washington State resident, I'm particularly gratified by the name you chose: "Swiftsure"!)
-Phil
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
'Still some PropSTICK Kit bare PCBs left!
·
Note that the design is for BOE-BOT with treads and Ping spin servo. If you choose to not include these, some modifications are in order.
·
The bumpers are constructed of two main components: 1/2" L angle iron (aluminum) and U angle iron with a 1/2" inside base by 2/5" tall, inside (also of aluminum). These pieces are available from Lowe's or Home Depot in long strands of 8'. The aluminum is extremely useful for building light, permanent frames. Other hardware includes:
·
8·- #4 bolts, washers, and nuts.
2 - #4 bolts about 1" or 1 1/4" long
1 -·#6 threaded rod about 3 1/2 " long
···- #6 assorted hardware including a 1/2" standoff
2· - #2 bolt and nuts
2· - Roller switches with wire
1· - Piece of styrene cut special
1· - 3" long tube that can fit over a #4 bolt
1· - 3" long rod that fit through the rear wheel hole
2· - short standoffs that can fit over the previous entry
·
·
Cut 1/2" L angle rod in·two·1.5" lengths.
·
Cut U iron in lengths of one 1.5", one 2.5", one 3.5", and one 5".
·
Drill vertical holes in the 1/2" L angle iron so that it fits over the servo pointing forward. The drill a through hole on the Boe-Bot horizontal axis. This hole is about .6" center line forward.
·
Drill a hole in the 1.5" U iron about .5" from one end. The hole should be parallel to the bottom of the U.·
·
Drill a hole through one side of the 3.5" piece in the center of a vertical part of the U. It should be about 1.75" in, and the center of the side.
·
Place the 3.5" piece over the .5" piece to form a T with a large top. Make sure that the bottom side of the U of the short piece is on the same side as the hole last drilled. Mark·and drill.
·
Assemble per photos.
·
Use the pictures to place the switch on the side of the .5" U iron. It should rub against the servo. Mark where the hole goes, drill, and use the #2 bolt.
·
Construct the rear T the same way, with the exception that the hinge is to fit the small rod, and the switch goes further down the iron.
·
Mount the rub plate on the back of the Bot. The special cutout is so that the USB cord can plug into the BOE. I lowered the height of the Board relative to the top of the chassis, so I needed to make concessions.
·
That's about it. Seems that this has turned out a bit longer that I expected, but it did take me about 8 hours of solid work to design and build the bumpers... Well worth it: they have not failed me yet and are people's favorite part since they are so easy to push and make a nice·click sound.
Post Edited (SRLM) : 8/9/2008 2:39:23 AM GMT
Can you post the code for this robot?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chris Savage
Parallax Tech Support
Some notes are in order:
The program control passes from one slot to the next quite often. I treat some slots, like the datalogger slots, the gps slot, and the sensiron slot as big methods that I call and then return from. To facilitate this·I use spaces in the SCRAM to create my own method call system. The word file is used to help me remember where everything is.
For this version, I didn't have a compass so navigation was reduced to a random type pattern. For Swiftsure II I will be adding the compass and hence navigation (I also added a second BS2 to handle the info gathering), so I was able to improve and clean up the code later. I'll post it when I finish.
The code uses some of the standard methods from example files for the GPS, Datalogger, and Sensiron. I couldn't come up with any real improvement on that front.
The roving program is the heart of the project as the best organized and most creative. There are several main components. Navigation is done in a look first, then decide method. The bumpers program is there to tell if the bot is stuck by either having both bumpers pushed at the same time, or by bouncing back and forth between two objects.
The second version of the bot, soon to arrive, will use much the same stuff.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Whit+
"We keep moving forward, opening new doors, and doing new things, because we're curious and curiosity keeps leading us down new paths." - Walt Disney