While I love tracky, watching him go in circles does lose its entertainment value after a while. Lets talk about some enhancements and final testing we could make.
You may have noticed a few bugs when building tracky.
If you are holding a button down on the remote and aren’t close enough or aren’t pointing it directly at the robot, it might miss the command you give it, and then the only thing you are sending is repeat signals. Think of it this way, you push the forward button and tracky takes off, then you push the left button for a little bit, so tracky turns left, then you push and hold the right button, but for some reason the initial code for turning right is not received, now the remote is sending repeat commands, and what is stored as the previous command? turn left, so there you are holding down the turn right button while tracky keeps turning left! It not that bad since all you have to do is release the button for a second, and then press it again to get the command right. How could we improve on this? One way wold be to use a remote that does not send repeat codes, I have encountered numerous remotes that do not.
I have a few other ideas on things that could be done to improve tracky.
1) One big improvement would be to implement proper radio control, the infrared remote works well enough for an educational project, but the overall range and responsiveness is not as good as remote controlled toys you buy from a toy store.
2) After radio control, you could improve upon the way that tracky is controlled through software. One way would be to improve the way turning is implemented, you could change the code so that instead of abruptly changing the direction of one track, just slow it down a little, then each consecutive time you press the turn button the speed changes a little more, then use the forward button to return to driving straight. After this you could add separate code to handle turning in place. Just check if tracky is moving, and if not, then you need to spin both tracks in opposite directions. This should result in smoother turning.
3) You might be able to get tracky to run at a faster speed by adding more batteries and using a lower gear ratio, I did not try this though, I was more interested in the autonomous capability with the ultrasonic sensor.
4) The software as written here is very primitive, this is the area where I think there are the most opportunities for improvement, we could add some code that tries to determine if tracky is just moving in circles, and if so send a different command like turning right instead of left when obstacles are encountered. Autonomous Robot Navigation is a vast and complex subject, we have just scratched the surface here
5) A great add-on would be to add line following capability, and you can purchase sensors that do just that. (Jameco)
6) We could also add a gripper or claw on the front, and work on ways to get tracky to search for and find a certain type of object, pick it up and move it somewhere else. (Jameco)
If you have made it this far, then great, hopefully it was informative. Thanks for coming and best of luck in your future projects!