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.bash
For the completed function, you need to run the following three parts:
$ roscore
$ rosrun gomoku_vision vision_node.py
If 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.launch
Test 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/Point
The desired position of the piece to be placed. From gomoku_vision to gomoku_control
-
/piece_position:
std_msgs/UInt8MultiArray
from gomoku_vision to gomoku_ai
-
/next_move:
std_msgs/UInt8MultiArray
from gomoku_ai to gomoku_vision
-
/victory:
std_msgs/Int8
from 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.