Wall Bot (WallB)

WallB is my first attempt at creating a robot that can carry a load down a hallway; specifically a small tool box. I'm constantly carrying my briefcase in one arm and a tool box in the other. The tool box weighs roughly 10lbs and its bulky shape makes it annoying to lug around. The idea came to me after reading about Steve Norris's "RoboStool". My project is split into 3 steps detailed below.

 

Step 1: Test Motors and Sensors

6/02/09

WallB takes its first steps using the Parallax Motor Mount Kit postion controllers to pulse the HB-25's (Parallax DC Motor Controller). Test code written to take forward distance from wall and calculate how many rotations to move until appox. 50cm away; WallB then moves to that distance and continues to keep that distance. First test run went great!

See for yourself: WallB Test 1(YouTube)


Step 2: Make it Follow Walls

6/24/09

WallB's preliminary code completed. HB-25's directly pulsed from the SUMO BS2; Motor Mount Kit position controllers not in use. Test results were great!

See for yourself: WallB Test 2(YouTube)

-------------------------------------------------

7/5/09

This weekend I took WallB out to a school with long hallways. Minor tweaks in the code made it go straight and smooth at home but when the environment changed, it went back to fish tailing. This was due to the IR sensors sensitivity to different color walls. I'm going to swap the corner IR sensors out for some more Ping sensors. Hopefully this problem will go away.

See for yourself: WallB Test 3(YouTube)

-------------------------------------------------

***UPDATE***

7/29/09

WallB has received some upgrades in the brain department. I switched out the BS2's for a Propeller. I finally sat down and learned the basics of Spin, which was enough to make WallB work. Right away I saw an improvement in overall reaction to sensor data. I also figured out what was making WallB fishtail so much. Turns out the HB25 motor controllers aren’t putting out the same voltages. The right wheel is receiving .3v less than the other. I think its my wiring but since this is a prototype setup I decided to fudge the pulse numbers to make it go straight.

 

See for yourself: WallB Test 4(YouTube)

 


Step 3: Make it Follow Me

***UPDATE***

7/29/09

I wasn’t too excited to start this part of the project after reading other peoples troubles with this subject, but I seemed to have stubbed into a simple method for solving this. It happened while I was testing WallB's wall following capabilities when it ran out of wall and started to follow my leg instead. It was surprising how well it worked. I actually just put all my gear onto it and had it follow me to the car. It was like my sidekick. Unfortunately I didn't have anyone to hold the camera so its at a weird hard to see angle. The concept is simple, the bots senses my legs and tries to keep a certain distance. When my legs go too far it keeps turning until it finds them again(pretty much how it follows walls).

 

See for yourself: WallB Follow Test 1(YouTube)

 



Future:

Upgrade Chassis


 

For similar project see TheGrue's "TOBI"

 

Follows Walls and People

  • Actuators / output devices: Parallax Motor Mount Kit 12v DC
  • Control method: fully autonomous
  • CPU: Parallax BS2 SUMO Board
  • Power source: Not sure yet...
  • Programming language: pbasic
  • Sensors / input devices: x2 Basic Panasonic IR x3 Parallax PING ultrasonic
  • Target environment: Large indoor hallways. Office buildings

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/wall-bot-wallb

Way Cool!
Love your progress and the code looks great. Are you using the IR on Sumo boards or something else? by the way, you can click on the ‘VIDEO’ under the ‘Primary Image’ to embed the video on this page.

Thanks
<!–[if gte mso 9]> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=“Cambria Math”/> <m:brkBin m:val=“before”/> <m:brkBinSub m:val="–"/> <m:smallFrac m:val=“off”/> <m:dispDef/> <m:lMargin m:val=“0”/> <m:rMargin m:val=“0”/> <m:defJc m:val=“centerGroup”/> <m:wrapIndent m:val=“1440”/> <m:intLim m:val=“subSup”/> <m:naryLim m:val=“undOvr”/> </m:mathPr></w:WordDocument> <![endif]–>

Yes I’m processing the IR signals though one of the SUMO boards. I currently have two BS2 SUMO boards controlling the WALLB. One controls the Motor operations and the other controls sensors. This is way over kill when using the HB-25’s but I wanted two processors so I could do more complex tasks if needed. The BS2 processor is just temporary until I replace it with the Propeller (I’m not fluent with the Spin code yet…). Also thanks for the heads up on how to post videos.

Nice!
Looks nice! But… $650???

Ya that sounds about right.
Ya that sounds about right. Check out the price of the Wheel and motor mount kit in the components section $279. The caster is $79, Each HB-25 is $49. It adds up quick. All hand crafted aluminum parts. VERY high quality craftmanship. Everyone that I showed my robot to was impressed by the parts. Don’t know what his Sumo boards cost.

I did my first roll test
I did my first roll test with the Propeller chip today. This site doesn’t allow me to post my .spin code files unless I add the txt extension but then you miss the schematics that are in the code. So I printed my roll test code to a PDF which is almost as good as viewing in the Propeller Tool. Check it out when you get a chance. Are you going to the Propeller Expo this weekend at Parallax? I am trying to get things sorted to take TOBI on Saturday.

Yes it’s a bit pricy
<!–[if gte mso 9]> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=“Cambria Math”/> <m:brkBin m:val=“before”/> <m:brkBinSub m:val="–"/> <m:smallFrac m:val=“off”/> <m:dispDef/> <m:lMargin m:val=“0”/> <m:rMargin m:val=“0”/> <m:defJc m:val=“centerGroup”/> <m:wrapIndent m:val=“1440”/> <m:intLim m:val=“subSup”/> <m:naryLim m:val=“undOvr”/> </m:mathPr></w:WordDocument> <![endif]–>

$650 represents the price if you went out and bought all the parts new right now. I actually spent less purchasing most of the stuff used. The controller boards are also over priced compared to others you can use. I just had them lying around from a previous project.

Did you go to the Expo at
Did you go to the Expo at Parallax this last weekend in Sac?

Unfortunately not
<!–[if gte mso 9]> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=“Cambria Math”/> <m:brkBin m:val=“before”/> <m:brkBinSub m:val="–"/> <m:smallFrac m:val=“off”/> <m:dispDef/> <m:lMargin m:val=“0”/> <m:rMargin m:val=“0”/> <m:defJc m:val=“centerGroup”/> <m:wrapIndent m:val=“1440”/> <m:intLim m:val=“subSup”/> <m:naryLim m:val=“undOvr”/> </m:mathPr></w:WordDocument> <![endif]–>

Unfortunately not…I work weekends and go to school during the week: /

What kind of IR sensors did
What kind of IR sensors did you use?

Panasonic
<!–[if gte mso 9]> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=“Cambria Math”/> <m:brkBin m:val=“before”/> <m:brkBinSub m:val="–"/> <m:smallFrac m:val=“off”/> <m:dispDef/> <m:lMargin m:val=“0”/> <m:rMargin m:val=“0”/> <m:defJc m:val=“centerGroup”/> <m:wrapIndent m:val=“1440”/> <m:intLim m:val=“subSup”/> <m:naryLim m:val=“undOvr”/> </m:mathPr></w:WordDocument> <![endif]–>

Basic Panasonic 3 pin receivers you find on Parallax’s web page or RadioShack. I know I know there are much better ones I could use that are more accurate but after field testing I found that IR fluctuates too much to be used as a constant. If I were using them as just a object detector they would work great, but when trying to keep distance they fail. If you can argue my opinion please do; I’m not always right.

BTW, did you see this: http://forums.parallax.com/forums/default.aspx?f=10&m=337693

sharp IR

After spending only a short time playing around with a new sharp distance indicator, I find them very unreliable in discernng distance. In my opinon there are too many things that need to be perfect - most noteably the colour of the surface, the level of ambient light (solar AND domestic flourescent lights), and more frustratingly, the angle of the reflecting surface. I use home-brewed sensors (largely identical to the circuits posted by oddbot) for the REALLY short-range cliff detectors - in my case I’m simply detecting when the ground isn’t there…

but ping sensors are tooooo expensive…

 

 

I have a picture of it!

Check my Blog on the Propeller Expo and you see it right after the sharp edged steel scorpion.

200906271425_00038.jpg

Agreed

"but ping sensors are tooooo expensive…"

Agreed :confused:

WOW

That "Follow Me" test is WAY COOL! Do you get good readings with the Ping))) at 45 Degrees like that? Can you post you Propeller code? I am still wresling with Spin even after going through the Prop manual that came with the Demo Board. I only have one Ping))) right now and need 2 more and a Sharp IR for my forward sensor array. Looks like you are well on the way. I am stalled with trying to recieve serial data from my remote control and the lack of money for my sensors.

Again I say it: Way Cool and VERY inspiring to me to get off my butt and get TOBI on the road!

Works good so far
<!–[if gte mso 9]> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=“Cambria Math”/> <m:brkBin m:val=“before”/> <m:brkBinSub m:val="–"/> <m:smallFrac m:val=“off”/> <m:dispDef/> <m:lMargin m:val=“0”/> <m:rMargin m:val=“0”/> <m:defJc m:val=“centerGroup”/> <m:wrapIndent m:val=“1440”/> <m:intLim m:val=“subSup”/> <m:naryLim m:val=“undOvr”/> </m:mathPr></w:WordDocument> <![endif]–>

Well like I said in my post, this was not on purpose. I was really shocked at how well it worked when I first discovered it. I’m currently in the process of writing a code that will react and match the speed of my legs. That’s the only problem it has so far; it just keeps going if I stop. As for the Ping sensors, they’re not perfect. The one that is doing most of the work is the corner. I think if I installed more(A rounded off front with about 5 in 180 degree pattern) it would be more reliable. From time to time I have to give it a kick in the butt to keep it away from obstacles, too many blind spots.

I was just wondering how

I was just wondering how your robot project is coming along?

This is absolutely brilliant

How did you write your wall following algorithm? I am intrigued. Would it be possible to have a look at your code or flow diagrams?