{"id":28512762,"url":"https://github.com/autrin/robotic-chess-player","last_synced_at":"2026-04-07T08:32:44.413Z","repository":{"id":293950938,"uuid":"938433747","full_name":"autrin/robotic-chess-player","owner":"autrin","description":"Autonomous Robotic Chess Player","archived":false,"fork":false,"pushed_at":"2025-05-18T08:21:36.000Z","size":54908,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-20T14:42:46.055Z","etag":null,"topics":["ai","apriltags","chess","inverse-kinematics","pick-and-place","python","robotics","robotics-control","robotics-programming","ros","ros-noetic","rospy"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/autrin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-25T00:24:12.000Z","updated_at":"2025-07-07T18:43:22.000Z","dependencies_parsed_at":"2025-05-18T06:33:47.259Z","dependency_job_id":null,"html_url":"https://github.com/autrin/robotic-chess-player","commit_stats":null,"previous_names":["autrin/robotic-chess-player"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/autrin/robotic-chess-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autrin%2Frobotic-chess-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autrin%2Frobotic-chess-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autrin%2Frobotic-chess-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autrin%2Frobotic-chess-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autrin","download_url":"https://codeload.github.com/autrin/robotic-chess-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autrin%2Frobotic-chess-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31506562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","apriltags","chess","inverse-kinematics","pick-and-place","python","robotics","robotics-control","robotics-programming","ros","ros-noetic","rospy"],"created_at":"2025-06-09T01:01:03.163Z","updated_at":"2026-04-07T08:32:44.389Z","avatar_url":"https://github.com/autrin.png","language":"C++","readme":"# Robotic Chess Player\n[![ROS](https://img.shields.io/badge/ROS-Noetic-blue)](http://wiki.ros.org/noetic)\n[![Python](https://img.shields.io/badge/Python-3.8+-green)](https://www.python.org/)\n[![Ubuntu](https://img.shields.io/badge/Ubuntu-20.04-orange)](https://releases.ubuntu.com/20.04/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue)](#license)\n\n## Table of Contents\n- [Overview](#overview)\n- [Features](#features)\n- [System Components](#system-components)\n- [Demo](#demo)\n- [Prerequisites](#prerequisites)\n- [How does the system work?](#how-does-the-system-work)\n  - [Board Detection](#board-detection)\n  - [Pieces](#pieces)\n  - [Chess Engine](#chess-engine)\n  - [Robotic Arm](#robotic-arm)\n- [Game Loop](#game-loop)\n- [Repository Structure](#repository-structure)\n- [Quick Start](#quick-start)\n- [Running the Robot](#running-the-robot)\n  - [With Real Hardware](#with-real-hardware)\n  - [With Simulator](#with-simulator)\n- [Development](#development)\n- [Documentation](#documentation)\n- [License](#license)\n\n## Overview\n\nTraditional chess engines exist in the digital realm, but integrating artificial intelligence with physical gameplay presents unique challenges. Our project addresses the gap between virtual chess engines and real-world play by creating an autonomous robotic system capable of physically manipulating chess pieces on a standard chessboard while playing at various skill levels against human opponents.\n\nThis repository contains a complete ROS workspace for a robotic chess player using a UR10e robot arm with a Robotiq gripper.\n\n## Features\n- Autonomous chess gameplay using industrial robotic arm\n- Computer vision with AprilTag detection for board state recognition\n- Adaptive Stockfish chess engine with configurable difficulty\n- Safe, precise movement patterns for chess piece manipulation\n- Compatible with standard chess pieces and board\n- Robust vision system that works in variable lighting conditions\n\n## System Components\n| Component | Description |\n|-----------|-------------|\n| **Hardware** | UR10e robotic arm, Hand-e gripper, camera, standard chessboard |\n| **Software** | Ubuntu 20.04, ROS Noetic, Python 3.8+, OpenCV, Stockfish |\n\n## Demo\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://youtube.com/shorts/Rwi2C9OqR34?si=AcufbHRkkVXkCidu\"\u003e\n    \u003cimg src=\"https://img.youtube.com/vi/Rwi2C9OqR34/maxresdefault.jpg\" width=\"70%\" alt=\"Robotic Chess Player Demo\"\u003e\n  \u003c/a\u003e\n  \u003cp\u003e\u003ci\u003eClick the image to watch the robotic chess player in action\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Prerequisites\n- Ubuntu 20.04\n- ROS Noetic (full install)\n- Python 3.8 or higher\n- At least 16GB RAM\n- Camera with USB connection\n- UR10e robot arm and Robotiq Hand-e gripper (for hardware deployment)\n\n## How does the system work?\n### Board Detection\nThe vision system uses Perturb-detect-clustering mechanism to detect April Tags even in poor lighting conditions. It will apply randomized affine transformations along with color perturbations to eventually detect the tags.\n\n### Pieces\nEach piece is a perfect cube, with an april tag on the top for detection and a letter(e.g. P for pawn, Q for queen) etched into each of the four sides. Black pieces(top of image) are denoted by the lower half of the piece shaded black.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src/sd02_joseph-hoane_1/resources/pieces.png\" width=\"20%\" alt=\"Chess pieces\" /\u003e\n\u003c/div\u003e\n\n### Chess Engine\nWe use the Stockfish chess engine to analyze positions and determine optimal moves. The difficulty can be calibrated to match players of any skill level.\n\n### Robotic Arm\nA UR10e robotic arm with a Hand-e gripper physically moves chess pieces on the board. The system uses inverse kinematics and sophisticated path planning to ensure precise, safe movements.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src/sd02_joseph-hoane_1/resources/robotic_game_process.png\" width=\"80%\" alt=\"Arm playing chess\" /\u003e\n\u003c/div\u003e\n\n## Game Loop\nThe game follows a standard loop: the robot makes a move, the vision system detects the new state, the player responds with their move on the physical board, the vision system detects the new state, and the cycle continues until checkmate.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src/sd02_joseph-hoane_1/resources/game_loop.png\" width=\"80%\" alt=\"Game loop\" /\u003e\n\u003c/div\u003e\n\n## Repository Structure\n\nThis is a complete Catkin workspace that includes:\n- Our main package (`sd02_joseph-hoane_1`)\n- All necessary drivers:\n  - `robotiq` - Robotiq gripper drivers\n  - `universal_robot` - Universal Robots description and configuration\n  - `ur_msgs` - Universal Robots message definitions\n  - `Universal_Robots_ROS_Driver` - Main UR driver\n- `isu_rel` - Additionaly for testing purposes\n\n## Quick Start\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/autrin/robotic-chess-player.git\ncd robotic-chess-player\n\n# 2. Build the workspace\ncatkin_make\n\n# 3. Source the setup file\nsource devel/setup.bash\n```\n\n## Running the Robot\n\n### With Real Hardware\n\n1. Launch the UR robot driver\n   ```bash\n   roslaunch ur_robot_driver ur10e_griper_bringup.launch\n   ```\n\n2. Access external control on the teach pendant\n\n3. Launch the Robotiq gripper driver (if not already initialized)\n   ```bash\n   roslaunch robotiq_2f_gripper_control robotiq_action_server.launch\n   ```\n\n4. Run the main program\n   ```bash\n   rosrun sd02_joseph-hoane_1 main test\n   # OR for production mode\n   rosrun sd02_joseph-hoane_1 main\n   ```\n\n### With Simulator\n\n1. Start ROS core\n   ```bash\n   roscore\n   ```\n\n2. Launch the simulator\n   ```bash\n   rosrun sd02_joseph-hoane_1 simulator.py\n   ```\n\n3. Run the main program in test mode\n   ```bash\n   rosrun sd02_joseph-hoane_1 main.py test\n   ```\n\n\n## Development\n\n### Install `jh1` as a Python Library\n\nFor development, you can install the Python package in development mode:\n\n```bash\npip install -e ./src/sd02_joseph-hoane_1\n```\n\n## Documentation\n\nFor more information, see the [Final Report](src/sd02_joseph-hoane_1/Document/SD02-Final-Report.pdf)\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\nTeam SD02 (Spring 2025) at Iowa State University requires attribution for use of this codebase.\nSee the [NOTICE](NOTICE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautrin%2Frobotic-chess-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautrin%2Frobotic-chess-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautrin%2Frobotic-chess-player/lists"}