Skip to content
Parallax Learn

Parallax Learn

  • Welcome
  • Tutorials
        • Tutorial Series head tag

          Tutorial Series
        • Tutorial Series

          The special, classroom-ready series pages are organized collections of tutorials for our most popular hardware and/or languages. The tutorials for each topic are conveniently accessible from a single page, shown in the order it is recommended that they be completed.
        • Robotics Series Head tag

          Robotics Series
        • Robotics Series

          • Artificial Intelligence
          • Cybersecurity: Radio Data tutorialCybersecurity
          • cyber:bot + Python
          • cyber:bot + MakeCode
          • Boe-Bot Tutorial SeriesBoe-Bot
          • Arduino Shield-Bot
          • ActivityBot with C TutorialsActivityBot + C
          • ActivityBot with BlocklyProp Tutorial SeriesActivityBot + BlocklyProp
          • Scribbler 3 Tutorial SeriesScribbler 3
        • Electronics & Programming Series Head tag

          Electronics & Programming Series
          • BS2 Board of Education Tutorial SeriesBS2 Board of Education
          • Propeller C-Language BasicsPropeller C Basics
          • FLiP Try-It Kit C Tutorial SeriesFLiP Try-It Kit + C
          • FLiP Try-It Kit BlocklyProp TutorialsFLiP Try-It Kit + BlocklyProp
          • Badge WX Tutorial SeriesBadge WX
          • Propeller BlocklyProp Basics and ProjectsPropeller BlocklyProp Basics
          • View All Tutorial Series »
        • Browse Tutorials
        • Browse Tutorials

          Individual tutorials sorted by robot or kit, and language.
        • By Robot or Kit
          • ActivityBot
          • SumoBot WX
          • Boe-Bot
          • Shield-Bot
          • cyber:bot
          • Badge WX
          • ELEV-8
          • ARLO
        • By Language
        • By Language

          • Propeller C
          • Arduino
          • BlocklyProp
          • PBASIC
          • Python
          • MakeCode
          • View All Tutorials »
  • Educators
  • Reference
  • Downloads
  • Home
  • All Courses
  • Touch Navigation for the cyber:bot

Touch Navigation for the cyber:bot

Navigating by Touch

In previous navigation programs, our scripts only made the cyber:bot execute a list of movements predefined by you, the programmer.  Now that you can write a script to make the cyber:bot monitor whisker switches and trigger action in response, you can also write a script that lets the cyber:bot drive and select its own maneuver if it bumps into something. This is an example of autonomous robot navigation.

Whisker Navigation Overview

The roaming_with_whiskers.py script makes the cyber:bot go forward while monitoring its whisker inputs, until it encounters an obstacle with one or both of them.  As soon as the cyber:bot senses whisker electrical contact, it uses an if…elif…else statement to decide what to do.  The decision code checks for various whisker pressed/not pressed combinations, and calls navigation functions to execute back-up-and-turn maneuvers.  Then, the cyber:bot resumes forward motion until it bumps into another obstacle.

Example Script: roaming_with_whiskers

Let’s try the script first, and then take a closer look at how it works.

  • Open a script you have previously used with the cyber:bot baord, like whiskers_detect_test or cyberbot-template-with-blink.hex.
  • Set the project’s name to roaming_with_whiskers, update the script so that it matches the one below, and then click Save.
  • Click Send to micro:bit.  
  • Disconnect the cyber:bot from its programming cable, and set the cyber:bot board’s PWR switch to 2.
  • Put the cyber:bot on the floor, and try letting it roam.  When it contacts obstacles in its path with its whisker switches, it should back up, turn, and then roam in a new direction.
  • Set the cyber:bot board’s PWR switch back to 0 when you are done testing.
# roaming_with_whiskers

from cyberbot import *        
        
def forward():
    bot(18).servo_speed(75)
    bot(19).servo_speed(-75)

def backwards():
    bot(18).servo_speed(-75)
    bot(19).servo_speed(75)
    sleep(1000)

def right():
    bot(18).servo_speed(75)
    bot(19).servo_speed(75)
    sleep(800)

def left():
    bot(18).servo_speed(-75)
    bot(19).servo_speed(-75)
    sleep(800)

while True:
    whisker_left = bot(7).read_digital()
    whisker_right = bot(9).read_digital()
    
    if whisker_left == 0 and whisker_right == 0:     
        backwards()                                 
        right()
    elif whisker_left == 1 and whisker_right == 0:   
        backwards()                                  
        left()
    elif whisker_left == 0 and whisker_right == 1:  
        backwards()                                   
        right()
    else:                                           
        forward()                                

 


Printer-friendly version
How the Whisker Test Code Works
Prev
How the Navigating by Touch Code Works
Next

DISCUSSION FORUMS | PARALLAX INC. STORE

About | Terms of Use | Feedback: learn@parallax.com | Copyright©Parallax Inc. 2024

© 2025 Parallax Learn • Built with GeneratePress