element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Robots with Wheels
  • Challenges & Projects
  • Project14
  • Robots with Wheels
  • More
  • Cancel
Robots with Wheels
Blog HaloBOT
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Robots with Wheels to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: mcb1
  • Date Created: 31 Mar 2018 4:44 AM Date Created
  • Views 2909 views
  • Likes 17 likes
  • Comments 12 comments
  • robotwheelsch
Related
Recommended

HaloBOT

mcb1
mcb1
31 Mar 2018
image

Robots with Wheels

Enter Your Electronics & Design Project for Your Chance to Win a $100 Shopping Cart!

Back to The Project14 homepage image

Project14 Home
Monthly Themes
Monthly Theme Poll

 

This robot was a collaboration between my daughter and I.

The idea was she could use flowchart software to program it, however that never really happened.

 

The design was based on an earlier and slightly larger model I built.

I had assisted the local school in a challenge and felt the 'feelers' that were used for sensing a wall were too delicate and bent if they hit too hard or got caught, so I worked on a bumper system.

image

Version 1.0 on the left and ver 0.9 HaloBOT on the right.

A second angled plate was fitted and the battery pack velcros to this.

image

 

 

As the drawing shows the shape of the bumper was made to help prevent it getting stuck.

 

 

HaloBOT was essentially Ver 2.0 using commonly available parts (board), motors and wheels.

It uses a castor underneath that glides on the surface to act as a nose wheel.

 

The design was refined by Hayley and once built she added the graphical touch to it.

HaloBOT was the name she gave it.

 

  imageimage

 

 

Bumper

The design of the front bumper is such that it can detect three different touches, using two switches.

image

This shows the bumper before the triangle shaped clearance holes were filled.

It also shows a chip in the corner which was 'removed' by some rounding.

 

 

Pressure on the left side operates the left bumper switch. Pressure on the right side operates the right bumper switch.

However pressure directly onto the front of the bumper will operate both switches.

 

This is achieved by making the mounting mount float (the screws are have a lock nut on the bottom), and the 45 deg angle surface the micro-switches connect with.

The spring action inside the micro-switch provides the necessary centering action without any additional springs.

 

The use of acrylic also means it is non marking (or hard to isolate what caused those marks), and the shape means it can push it's way past if you get the programming wrong.

 

 

Plan

 

image

You should be able to enlarge this using the measurments as a guide, and print full size to use as a template.

 

image

Stick it down onto ypur material of choice, and cut out.

 

 

 

Wheels

Tamiya provided the wheels, and I discovered that these are one of the 'stickiest' off the shelf, meaning it has the best traction if your motors are up to it.

The Tamiya gearbox allows for multiple ratios and is cheap and robust, although not very good in dirty situations due to it's open construction.

Updated My software code included this note  ...... Tamiya Dual Gearbox at 114.7:1 ratio (Type C) and 56mm wheels

image

 

The gearbox configuration changes depending on which ratio you choose, so multiple mounting holes were provided, however we've never changed it.

The gearboxes are easy to mount and together with the wheels make a very simple construction.

 

The power consumption is very light, and therefore the battery voltage remains constant which makes programming easier.

Some other bots have high speed and high discharge, so 0.25 secs motor at the start makes the bot travel much further than 0.25 secs after some time in use.

These have no encoders so there is no correlation with time v distance travelled.

 

 

 

Chassis

The chassis of any robot is the backbone.

Because these tend to be a WIP (Work In Progress) you need to allow room for extras to be added, and mounting can be a problem.

The chassis was constructed using 5mm aluminium that was recycled (previous life was a blank panel in a rack) and most holes are drilled and tapped for M3. (use meths as the lubricant for the tap)

The intention was to enable it to be made using basic hand tools.

 

I've seen the odd robot using a very lightweight chassis which can flex and bend, or becomes too hard to add extras, so while this could be considered as over engineered, in this case it wasn't going to be the fastest or lightest bot.

 

 

 

Software

The board is based on Picaxe 18 and was programmed in Basic.

The Picaxe software can be programmed using a flowchart, which removes the need to understand Basic.

It does provide an early and easier learning curve, which was the reason it was chosen (at the time).

 

HaloBOT is programmed to wait after it is turned on, wait for a bumper switch to operate, then move forward until it detects a wall.

It will respond until it detects a wall and respond accordingly with the aim of keeping it moving forward.

 

Since there is no vision and both motors were travelling forward, the angle of collision is not known, hence there are two options when it touches a wall :-

  • stop the motor on that side and reverse the other motor, then move both motors forward.
  • Stop both motors and reverse both, then make the motor on the side that touched go forward first, followed by the other motor.

 

As you can see there is a difference in the amount the bot clears the wall by, and how quickly forward progress is made.

Any time you reverse, you will lose time and distance travelled.

 

The next problem was being stuck in a corner.

The worst is striking the corner at 45 degs where you react to one side touching followed by the same reaction on the other side, and it repeats.

In this case we counted the contacts and then made the next touch add more time to the sequence to break the deadlock.

 

This shows in the video as a 'pause' to show it is thinking about the next move, and it carries on.

 

 

Enhancements

We added an IR sensor to the front in order to warn of impending wall and slow it down.

It was never programmed to be used, but means there is some protection from collision with objects.

 

You can detect the bumper switches at turn on, and jump to a sub routine in the software to do one of three operations.

 

One of these routines was to provide a method of equalizing the motors so it drove straight.

DC brushed motors can be run forward or backwards, and are never the same speed.

Manufacturing tolerances also means one will run slightly faster than another, so it's impossible to make these run straight.

Because the motor can be PWM (Pulse Width Modulated) it does mean you can adjust the speed of the fastest motor to something less than 1.

 

This gets set in software or is best stored in the EEPROM so it can be set and used.

It was tagged as a future enhancement.

 

 

 

Video

The video show Halobot trying to escape the lid of an A4 Paper box.

It keeps on going and never really understands that it can't escape, but does provide entertainment.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Hopefully someone else will enjoy making something similar.

If you do use my bumper design, it would be nice if you could acknowledge this blog.

 

Cheers

Mark

 

Edit 04/04/18 Code added, and Motor details.

 

This was designed to run on a Picaxe 18 board with the L293D motor controller http://www.picaxe.com/docs/chi035a.pdf

 

'Robot Test Program For PICAXE18 microcontroller
'using www.rev-ed.co.uk CHI007
'Opposite motor is off during turns


'MCB May 2011
'Suited to HaloBOT

'output pin allocation (%76543210)
'76 = Right Motor (viewed from the rear)
'54 = Left Motor    (viewed from the rear)
'3  = not used 
'2  = LED B            'future
'1  = LED A            'future
'0  = piezo sounder    'future


'input pin allocation
'7  = Right Switch looking from the rear
'6  = Left Switch looking from the rear

'counter allocation
symbol RightCount = b0
symbol LeftCount = b1
symbol ForwardCount = b2 
symbol CornerCount =b3
symbol BackCount =b4
symbol LastTurn = b5
symbol RightBump =pin7
symbol LeftBump = pin6


'start going forwards
'testing switches as you go

Waiting:

'In order to put the robot down, the motors should be off
'Press a bumper switch to start

    
    if RightBump = 1 or LeftBump = 1 then check

goto waiting

check:
    pause 100

main:
    let pins = %10100000        'both motors forward
    ForwardCount = ForwardCount + 1
    
    if RightBump =1 or LeftBump =1 then
        pause 50        'time to settle and check if both touch
    endif
    
    'if RightBump = 1 and LeftBump =1 then backturn
    'if RightBump =1 and CornerCount >3 or LeftBump =1 and CornerCount >3 then Corner
    if LeftBump = 1 then left
    if RightBump = 1 then right

    if ForwardCount = 200 then ResetCount
goto main

ResetCount:
    'sound 0,(255,25)
    ForwardCount = 0
    RightCount = 0
    LeftCount =0
    CornerCount =0
    LastTurn=0

Goto Main

left:

'left switch hit
'so stop, both reverse, turn right
'LastTurn =1

    If LastTurn =1 then 
        CornerCount = 0
        else
        CornerCount = CornerCount +1        
    endif
    
    LeftCount = LeftCount +1
    let pins =%00000000    'Stop
    let pins =%01010000    'Reverse
    'sound 0,(110,25)
    pause 100
    let pins =%00100000    'Left forward, Right off
    pause 50
    LastTurn =1
    ForwardCount =0

    'If LeftCount = RightCount +3 or RightCount = LeftCount +3 CornerExit

goto main

right:

'right switch hit
'so stop, both reverse, turn left
'LastTurn =2

    If LastTurn =2 then 
        CornerCount = 0
        else
        CornerCount = CornerCount +1        
    endif
    
    RightCount = RightCount +1
    let pins =%00000000    'Stop
    let pins =%01010000    'Reverse
    'sound 0,(50,25)
    pause 100
    let pins =%10000000    'Right forward, Left off
    pause 50
    LastTurn =2
    ForwardCount =0
    
goto main

backturn:

'both switch hit
'so stop, reverse, turn to one side
'LastTurn =0
    'BackTurn = backTurn +1
    If RightCount > LeftCount then
    
        let pins =%00000000    'Stop
        let pins =%01010000    'Reverse
        sound 0,(100,10,110,10,110,10,110,10)
        pause 150
        'larger reverse movement
        let pins =%10000000    'Right forward, Right off
        pause 100
    
    else
        let pins =%00000000    'Stop
        let pins =%01010000    'Reverse
        sound 0,(100,10,110,10,110,10,110,10)
        pause 150
        'larger reverse movement
        let pins =%00100000    'Left forward, Left off
        pause 100
    endif

    LastTurn =0
    ForwardCount =0
    'CornerCount =0
    
goto main

Corner:
'we think we've stuck in a corner therefore we need to add something to exit the sequence
' this would show as a high left right backups without much forward.
' the solution is to decide which side has a greater hit rate, and move opposite.
' In this case I have tried to move back a larger amount, along with more turn.

    sound 0,(255,10,255,10,255,10)
    pause 100
    'pause 500
If RightCount > LeftCount then
    
        let pins =%00000000    'Stop
        let pins =%01010000    'Reverse
        sound 0,(75,50)
        pause 200
        'larger reverse movement
        let pins =%10000000    'Right forward, Right off
        pause 150
    
    else
        let pins =%00000000    'Stop
        let pins =%01010000    'Reverse
        sound 0,(75,50)
        pause 200
        'larger reverse movement
        let pins =%00100000    'Left forward, Left off
        pause 150
    endif
    
    'If CornerCount >1 then
    '    CornerCount =CornerCount -1
    'endif
    Cornercount=0
goto main

  • Sign in to reply

Top Comments

  • jw0752
    jw0752 over 7 years ago +4
    Hi Mark, This is a really inventive build. I really liked the bumper design. It reminds me of what they use on my robot vacuum cleaners. I wouldn't be surprised if they owed you an acknowledgement. Watching…
  • jomoenginer
    jomoenginer over 7 years ago +3
    Yeah, a bumper bot is always great. Very cool. Keep up the nice work.
  • three-phase
    three-phase over 7 years ago +2
    Great blog and build of the little robot. Thanks for posting. Kind regards
Parents
  • balearicdynamics
    balearicdynamics over 7 years ago

    Mark, it's a great project. What did you use as the third wheel?

     

    The solution to detect the obstacles seems very efficient and more reliable than a loft of alternatives I saw.

     

    Enrico

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • balearicdynamics
    balearicdynamics over 7 years ago

    Mark, it's a great project. What did you use as the third wheel?

     

    The solution to detect the obstacles seems very efficient and more reliable than a loft of alternatives I saw.

     

    Enrico

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • mcb1
    mcb1 over 7 years ago in reply to balearicdynamics

    balearicdynamics

    Thanks

     

    What did you use as the third wheel?

    Tamiya castor 70144

     

    image

    Comes with the ability to have a couple? of heights.

     

    Pololu have a different version

    https://www.pololu.com/product/951

     

     

     

     

     

    Cheers Mark

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • balearicdynamics
    balearicdynamics over 7 years ago in reply to mcb1

    Hi Mark,

    About a couple of  "spheres", I see it is a good solution but the problem I imagine is difficult to play this kind of robots on some kind of surfaces not perfectly clean or mixed terrains. I am thinking to a couple of freewheels but to make the motion better and more realistic this involves some kind of steering (servo + 3D printed wheels?).

     

     

    BTW, his fur on the home floor makes the small wheels rotating for about 5 minutes image

     

    Enrico

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mcb1
    mcb1 over 7 years ago in reply to balearicdynamics
    I imagine is difficult to play this kind of robots on some kind of surfaces not perfectly clean or mixed terrains

    It's definitely an indoor robot but it works on carpet and smooth surfaces.

     

    This design has the castor at the front, but a re-design with the weight on the rear could allow other possibilities.

    I did look to use one of the wheels for model aircraft which have a pivot, but it won't mount underneath.

     

     

    You do need to consider what it will be used for before designing a robot.

    If this was an outdoor robot there are many other things that would be changed, which makes it a very different device for a different purpose.

     

    You're free to design your own version, this was a simple and cheap device.

     

    Mark

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube