This codebase enables the use of the Create3 with Sparkfun's Line Follower Array (SEN-13582). This is the product we are using in this project.
We also used an Arduino Nano IoT, connected to the iRobot's USB port, but any device that uses 3.3v logic but offers a 5v power output should be sufficient. The line-follower array depends on 3.3v logic but requires 5v power.
- The line-follower array sends data to the Arduino
- The Arduino processes this and performs some data smoothing and analysis
- The final position information is forwarded over USB serial to the Create3
- The Create3 forwards this data over wifi/port without performing additional processing
- An external CPU listens to data coming from this port
- The external CPU processes the data and determines if the robot should turn, etc
- The external CPU sends commands to the Create3 using ros2
- Currently the robot can only drive backwards, because of where the sensor is located (underneath the robot, behind the wheels), and this means that the ros2 scripts must override the safety system of the Create3 that limits backwards driving. We are interested in developing a forward-mounted sensor and may add this in the future.
- Depending on the floor color, you will have better or worse outcomes. The line-follower array is extremely sensitive to contrast and lighting. We had better results using the sensor in "inverted" mode, where it detects a while line on a dark background. This seemed to be more versatile with different floor types
- Floor smoothness affects accuracy of readings, since as the robot drives over bumps the line on the ground will vary in distance.
- The Create3 has a minimum speed, and that is the speed we are specifying in our scripts.
- Refer to instructions in my other repository here