This project is a robotic system that can play Gomoku with a human player.
We use Intel D435 camera and Kinova Gen3 Lite robot arm to build the system. ROS1 neotic, OpenCV, and AlphaZero are used in the project.
First build the workspace:
$ catkin_make
$ source devel/setup.bashFor the completed function, you need to run the following three parts:
$ roscore
$ rosrun gomoku_vision vision_node.pyIf you can not connect to the camera (that's very common), you can use the planc to simulate the camera function:
$ rosrun gomoku_vision planc.py$ rosrun gomoku_ai ai_node.py$ roslaunch kortex_driver kortex_driver.launch
$ roslaunch gomoku_control pick_and_place_example.launchTest example: $ rostopic pub /my_gen3_lite/arm_point geometry_msgs/Point '{x: 0.427, y: 0.07, z: 0.1}'
Below is the system architecture:

Framework: ROS1 Neotic (Ubuntu 20.04)
- gomoku_vision
- gomoku_ai
- gomoku_control
-
/arm_pose:
geometry_msgs/PointThe desired position of the piece to be placed. From gomoku_vision to gomoku_control
-
/piece_position:
std_msgs/UInt8MultiArrayfrom gomoku_vision to gomoku_ai
-
/next_move:
std_msgs/UInt8MultiArrayfrom gomoku_ai to gomoku_vision
-
/victory:
std_msgs/Int8from gomoku_vision to gomoku_control
- Kinova Gen3 Lite: 6DOF Robot Arm
- Intel RealSense D435: RGBD Camera
- Lego 2x2 cylinder bricks: Gomoku pieces
Follow the format proposed in the Semantic Commits
This project is developed by the group 1 of EE368 Robotic Motion and Control course in SUSTech.
