First of all, we tried to control the robot by using PID control.
Figure 1: PID Controller
The PID control, which is the proportional-integral-derivative controller is a control loop feedback mechanism. Inside the PID control, there are few controls which depend on the factors that we use. We can use not only all P, I, and D constants but also P and D constants to control the movement. When we tried to move the hamster robot with simply giving move_forward() command, it didn’t go straight. It turned right even there was no any input. Thus, we tried to remove that error by making the acceleration close to 0. For movement and controlling the heading angle, our team tried to decrease the error (fluctuated movement), simply putting PD control. The P and D constants are heuristic data, so we increased the number by 0.001. We found out when the P constant was 0.01, and D constant was 0.02, it showed the best result with our circumstance (friction, pen, surface, etc.). However, there were some random cases because if the hamster robot doesn’t have a lower power compared to full charged battery level, the speed of wheel slowed down and also there could be some error from holding part which is connected by tape unstable. Furthermore, because of unstable sensors, it didn’t show up the regular result.
Because of the random result, we changed the method to put some compensation to the right wheel and map the angles. It showed much more accurate data compared to the result of PID control. We were trying to draw a rectangle; however, the robot drew rounded trajectory when it tried to turn to change its angle. The solutions we found are holding up the pen while it changes the angle and put the pen on the center of the robot. We chose the second method to solve this case. Since we cannot pierce the robot, we tried to build two robots and put the pen in the center of two robots.