CONCLUSIONS
OUR RESULT
Thanks to all the teammates, our final gomoku robot fully fulfilled our initial goal and it is quite robust. It could play a whole gomoku game with human while dectecting cheating actions and then correct it. Great to mention that our gomoku robot could draw a circle and erase it as good as human!
DIFFICULTIES
COMPUTER VISON
The most difficult part is to correctly detect the intersections. Any error with intersections will easily fail the entire CV part. The solution I used is to corp the chessboard first and transform it into a perfect square, which will significantly increase the accuracy.
Another remarkable one is detecting if there is a green/red piece in the grid. The quality of webcam and ambient light affect the accuracy dramatically since the detection is dependent on RGB value completely. One solution is to pick a webcam working appropriately and control the ambient light as consistent as possible.
GOMOKU AI
Latest valid matrix recording:
It is irrational to record latest valid matrix inside of function that computes the “Erasing List” and “Drawing List”.
Solution:
Add a global variable of latest valid matrix in the integrated codes.
Renew latest valid matrix after computing erasing and drawing and record the simulated matrix after these operations.
MOTION
Gripper shaking:
The arm is not that stable and shakes up and down when drawing.
Solution:
Add a buffer to the marker to counteract the random shaking of gripper.
Similar solution to the eraser.
FUTURE IMPROVEMENTS
CV part:
Improve the robustness in the bad light conditions.
AI part:
Output “Reminding List”: Since robot is unable to recover the invalid operations of removing player’s chess, robot should give a remind list to remind player to fill his/her own chess pieces in order to recover to the latest valid chessboard.
Motion part:
Reduce robot’s reaction time.
Add tf_echo listener to code to ease the process of setting up.