Overall, Shaky is able to follow walls with some degree of accuracy as well as avoid obstacles. Shaky has some problems turning and that causes some issue with getting stuck next to walls. And the sensor refresh rate and motor controlling causes a overall jerky (shaky) robot, due to the smell steps between each sensor reading. The original design and algorithm called for the use of two distance sensors on each side to estimate the relative orientation with a wall and correct it to stay parallel. However, this was not feasible due to the inaccuracy of the sensors and limits on controllability of the duckiebot. Furthermore, the method in which the sensor values are read limits the refresh rate of the sensor data. Redesigning the code would fix this issue, where one ROS node reads the value and another ROS node runs the algorithm. This would be the next problem addressed when I continue to work on this project. The system has many constant values for speed, time, and distance. Each of which needs to be tuned to allow the system to work effectively. The method used to tune the values was trial and error. The robot was placed in a location where the algorithm will reach the part in the code where the values you want to tune are being used. Then according to the error in the behavior during the test you adjust the values higher or lower. The system outputs the current action (i.e. following left wall, turning around) being performed along with a timestamp so the actions can be deciphered by looking at the output of the system. One source of error is that because of the center of gravity due to the battery, Arduino and sensors, as well as the traction and torque of the wheels the robot has a hard time performing turns especially with small radii.
The first place for improvement is in the code. Fully designing a launch file, nodes for sensor reading, algorithm running, and performing motor actions. Furthermore, another big issue is the sensors. The inaccuracy of the IR sensors makes accurate wall following nearly impossible. Replacing the IR sensors with more Sonar sensors will fix this problem. Adding even more than five total sensors will allow for higher resolution of navigation. However, interference is possible if multiple sensors are going to be ran at the same time. The issues with turning and driving straight are not critical and could potentially be fixed using encoders on the wheels. Also trying to balance the weight distribution would improve Shaky's ability to drive.