I was able to figure out how to make the Roomba travel along the circumference of a circle or arbitrary size. It turns out that my issues with accuracy and consistency of control inputs were due to scaling of the linear and angular velocity commands. During a test trial, Xin and I found that even though we were telling the wheels to rotate at constant velocities, the circular path the Roomba follows is unstable. To illustrate this stability issue, we attached a dry-erase marker to the side of the Roomba, along the wheel axle, to trace the path it is taking.
We believe this error is unavoidable, and that the best way to get past this is to implement closed-loop control (as opposed to the open-loop control we have now). We will do this by utilizing the OptiTrack system. Amir, a researcher in the lab who has more than once offered guidance and advice for our project, will help us get set up on OptiTrack early next week.