Safe Wall Following Ideas?

Spoiler Alert: Wall Following may be a lot easier with new EasyGoPiGo3 motor commands coming soon

I’m brainstorming wall following ideas for the GoPiGo3 with servo mounted distance sensor.

Please enhance, extend, and create!

These scenarios begin pointed parallel to a wall, wall on the left:

  1. Slow Walk With Twin Interests:
  • look left, measure distance to wall for reference distance
  • look fwd, ensure no obstacle within “stopping distance”
  • start motors at slow speed
  • repeat until “fwd obstacle within stopping distance”
    • look left, measure distance to wall, adjust motors to correct change from reference
    • look fwd, measure distance
  1. Run With Shared Off Axis Focus:
  • look diagonally between wall and fwd (“offset from parallel”), measure reference distance
  • ensure reference distance is greater than stopping distance * arctan(offset from parallel)
  • start motors
  • repeat until distance measurement within (stopping distance * arctan(offset from parallel)):
    • adjust motors to correct change from reference distance
    • take distance measurement
  1. Only As Far As Trust Allows:
  • look fwd, ensure no obstacle close
  • start a “drive trusted distance”:
    • dist = safety factor * arc-sin( parallel pointing accuracy) * dist to wall
  • repeat until obstacle close or drive completed
    • take distance measurement
    • check drive status (stopped and target reached)
  • if drive not finished, issue stop()


Just my thoughts not an expert as you

Looks gud on paper …
Reaching source to target GPS wud be an option with distance sensor to avoid obstacle

Cheers !


Read few article SLAM lidar would be interesting too.


Here’s a low-budget idea I just recently had:

Hardware: Two of the new DI line follower strips.

Requirement: be able to change the i2c address on the strips.
@cleoqc: is this possible?

On the side you want to follow the wall mount one strip horizontally, parallel to the floor, high enough to avoid any floor molding.

On the same side, (perhaps above the horizontal strip), mount a vertical strip with a slight inward cant.

The vertical strip determines distance: When the sensor is closer than some distance, it will flip from black to white. The number of sensors flipped is a rough indication of the distance.

The horizontal sensor determines if you are parallel to the wall. All sensors flipped indicates parallel. Or you could give the horizontal sensor a slight angle and the number of sensors flipped indicates angle to the .


You can use just the vertical sensor and use changing distance to indicate parallel.

1 Like

You can’t change the line follower address, but you can put them on two different I2C buses.
Connect one to the I2C connector, and the other into the AD1 connector.


Are schematics available for the line follower and white distance sensor?

I’m trying to visualize this set up. I haven’t tried the DI line follower. But I have used similar ones (from Pololu). My experience is that they are best used very close to the surface to distinguish dark from light. If they’re mounted high up I’m not sure how effective they’d be.

1 Like

Exactly correct.

I don’t know how well they’d do at some non-trivial distance either - it might depend on calibration or it might not work at all.  However, since a line-follower sensor is orders of magnitude less expensive than a LIDAR, I thought it might be worth a thought.

1 Like

I can only speak for the Dexter line follower. It was designed to be really close to the surface and does not do well at more than 1 cm.