Turtlebot: Wandering Like a Zombie
Intro
Here, we will try to combine a little bit of sensing with actuation, but it will be somewhat mindless. Given the popularity of zombies at the time of this writing, let's say that we are creating a zombie mode for the turtlebot. Historically this zombie mode has been called wandering; it's a rite of passage for robotics students to create their own wandering zombie robot.
For that we will need to be able to sense the world around us. The next sensing module does that, but for now we will explore a stripped down version of it. Within the turtlebot, there is a linescan topic that publishes the depth or range to objects in front of the turtlebot as determined by the on-board depth sensor (which should exist presuming that you are working with a standard turtlebot package). How to interpret it depends on how you've install the depth camera. It correspond to the distance to objects in the plane that is horizontal relative to the sensor coordinate frame. In most cases, this will be a horizontal plane relative to the robot coordinate frame too at a height equivalent to the height of the depth camera sensor above the body.
Investigation
The basic idea behind this zombie/wander mode is to simply have the turtlebot move forward whenever possible, turning only when doing so would aim it towards emptier space. The normal procedure for this, based originally on the use of individual sonar or infrared range sensors, is to divide the line scan data into 2n+1 zones with a forward sector, plus n left and right sector. Within each sector compute the minimal (median, or average) distance measurement within the sector. Move towards the sector that seems to maximize free space.
Adventure
Take the code that has been forked from another github tutorial, and which roughly does the job but has several coding errors in it. Fix the errors and utilize at least 5 total sectors for the zombie mode.
Explore
Add in the bump, cliff, and wheel-drop sensing to prevent the turtlebot from doing silly things to itself. The line scanner isn't perfect you know, nor will the zombie code execute 100% as desired. It will be correct code (hopefully), but flawed code also. there is a whole research are on Verification and Validation of code (is the code correct as specified? is the specification correct in terms of achieving the desired goals and avoiding catastrophic outcomes?).
Troubleshooting
There is some variability in what the Turtlebot+laptop combo can achieve. Check out the hints page should there be getting things working.