This repository has been archived by the owner on Jun 15, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Added complete project management page - Added ground rules - Changed documentation to helpful resources - Updates to frank and workstation - Added placeholders for project development - Updated index to reflect changes
- Loading branch information
Showing
16 changed files
with
251 additions
and
29 deletions.
There are no files selected for viewing
File renamed without changes
File renamed without changes
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
************ | ||
Chess Engine | ||
************ | ||
|
||
.. note:: | ||
This page is a placeholder. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
*************************** | ||
DE Programming Ground Rules | ||
*************************** | ||
|
||
1. **Always put code on GitHub**, never use Google Drive or direct messaging. | ||
|
||
a. This means when working on a particular function, you will be working in a smaller team and contributing to a particular branch you set up together. | ||
b. Working on a branch in a small team (maybe 2-3) requires coordination so that you don’t create conflicts when pushing your changes to the branch. | ||
c. Remember to push changes to a branch, AND sync! | ||
|
||
2. **When writing Python, keep to the** `PEP8 Python styling guide`_. | ||
|
||
This style guide is usually enabled in PyCharm to help you. This means you get a squiggle and a yellow/brown mark next to a violation (settings are in ``Preferences > Editor > Inspections > Python``). | ||
The key takeaways are: | ||
|
||
a. Naming conventions using: ClassNames, function_names, variable_names | ||
b. `White space`_ (PyCharm will give you help here) | ||
c. Tabs vs Space, PyCharm actually converts the tab key, and 4 spaces, into the same thing by default (so just don’t change this from default values, and you can use either). | ||
|
||
3. **Comment your code! Plus see bullet 4.** | ||
|
||
a. This can be in two main forms, inline or block. `Again, keep to PEP8`_ to avoid differences between code. It’s the simplest one to keep to. | ||
|
||
4. **Document your code!** | ||
|
||
Use the PEP257 docstring convention and keep to it well - you can read the `short version PEP257`_, or the `complete PEP257`_. | ||
|
||
a. This means that Sphinx (an automatic documentation generator) will work and display things properly. | ||
b. `An example of this can be seen on GitHub`_. It has library, modules, and comments. | ||
|
||
5. UML Diagrams... USE THEM | ||
|
||
6. `Handle errors properly with exceptions`_. If necessary, build your own errors for safety measures and use try..except..raise blocks in your code. | ||
|
||
7. Global variables are bad. Functions are better than types. Objects are likely to be better than complex data structures. | ||
|
||
8. Avoid ``from X import *`` as much as possible. It’s much better to import a specific function ``from X import Y`` or to use it in context of your code ``import X; X.Y(arg)``. Otherwise we will need to `start handling lists of import names`_. | ||
|
||
.. _`PEP8 Python styling guide`: https://www.python.org/dev/peps/pep-0008/ | ||
.. _`White space`: https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements | ||
.. _`Again, keep to PEP8`: https://www.python.org/dev/peps/pep-0008/#comments | ||
.. _`short version PEP257`: http://docs.python-guide.org/en/latest/writing/documentation/ | ||
.. _`complete PEP257`: https://www.python.org/dev/peps/pep-0257/ | ||
.. _`An example of this can be seen on GitHub`: https://github.com/brandon-rhodes/sphinx-tutorial/tree/master/triangle-project/trianglelib | ||
.. _`Handle errors properly with exceptions`: https://docs.python.org/2/tutorial/errors.html | ||
.. _`start handling lists of import names`: https://docs.python.org/3/tutorial/modules.html#importing-from-a-package |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
****** | ||
Motion | ||
****** | ||
|
||
.. note:: | ||
This page is a placeholder. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
********** | ||
Perception | ||
********** | ||
|
||
.. note:: | ||
This page is a placeholder. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
************ | ||
Project Plan | ||
************ | ||
|
||
Requirements | ||
============ | ||
|
||
* **Sketch of a scenario:** | ||
|
||
.. figure:: _static/scenario_sketch.png | ||
:align: center | ||
:figclass: align-center | ||
|
||
* **Flow chart of the sequence:** | ||
|
||
| 1. Starting the game | ||
| a. Set up game pieces | ||
| 2. Playing the game | ||
| a. Completing a move | ||
| b. Timing the move | ||
| c. Removing pieces | ||
| d. Replacing pieces | ||
| 3. Ending the game | ||
| a. Relocating pieces to initial positions | ||
| | ||
Resources | ||
========= | ||
|
||
* **Confirmed:** | ||
|
||
* FRANCA | ||
* Chessboard | ||
* Chess Pieces (custom to start with) | ||
* Camera (RGB-D, MS Kinect?) | ||
* Chess clock | ||
|
||
* **Maybe:** | ||
|
||
* Sensors for end-effector (force detection, IMU?) | ||
* Customised chess board | ||
|
||
Work Breakdown Structure | ||
======================== | ||
|
||
Each person’s key areas of interest and work division and summarised in the table below: | ||
|
||
===================== ============================= ================================== | ||
Area of work Starting teams (lead in bold) Change in teams | ||
===================== ============================= ================================== | ||
Documentation **Ben** Ben | ||
Physical build **Sanish**, Paolo, Anna *n/a - (expected completed first)* | ||
Perception **Leah**, Paolo Leah, Paolo | ||
Game Engine **Josephine**, Ben *n/a - (expected completed first)* | ||
Movement **Anna**, Sanish, Sylvia Josephine, Anna, Sanish, Sylvia | ||
Interface/Controller* Ben Ben | ||
===================== ============================= ================================== | ||
|
||
*\*implemented later on* | ||
|
||
Gantt Chart | ||
=========== | ||
|
||
The Gantt chart is dynamic and can be viewed here: https://docs.google.com/spreadsheets/d/1-BJZdqYe8wWnCwUJs8sGYKyAoFGYXU7qOBCCHt1B_Ek/edit?usp=sharing | ||
|
||
Implementation | ||
============== | ||
|
||
.. figure:: _static/system_diagram.png | ||
:align: center | ||
:figclass: align-center | ||
|
||
The hardware/software/component approaches to this project will be developed out further with modifications to this system diagram. This will come over the next few weeks. | ||
|
||
Expected Difficulties | ||
===================== | ||
|
||
.. list-table:: | ||
:header-rows: 1 | ||
|
||
* - Difficulty | ||
- Mitigation strategy | ||
* - Gripping outsized pieces (e.g. knight) | ||
- Standardised grip geometry at the bottom of each piece | ||
* - Positional drift of chess pieces | ||
- Perception (active) and gripping (passive) system that can mitigate against drift | ||
* - Large RGB-D tolerances leading to board misalignment | ||
- Maintain fixed board location | ||
* - Integrating the game engine with the motion control | ||
- Dedicated project director and clear code structure | ||
* - Reliably identifying board in a darker environment | ||
- Set up lighting rig to illuminate area | ||
* - Grid assignment misaligning on boot | ||
- Maintain fixed board location | ||
* - User does not remember to press chess clock | ||
- Time-out beeper, game manual | ||
|
||
|
||
Risk Assessment & Safety Plan | ||
============================= | ||
|
||
In the FRANKA user manual, pages 62-86 describe an extensive risk assessment. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
**************** | ||
Project Proposal | ||
**************** | ||
|
||
CHESS - Robotic Arm Playing Board Games | ||
======================================= | ||
|
||
The goal of this project is to program a robotic arm to play board games such as chess. The robot used will most likely be the FRANKA Emika robotic arm (nicknamed “Panda”) as it is more precise in positioning and grasping than DE NIRO. The outcome of the project will be demonstrated by performing a fully autonomous game of chess between a person and the robot. Perception will need to be added such as an RGB-D camera, a webcam, or a laser scanner. | ||
|
||
You can see what the robot looks like here: http://www.imperial.ac.uk/robot-intelligence/robots/franka-emika/ | ||
|
||
The project includes: | ||
|
||
1. **Forward and Inverse Kinematics:** To use the 7-dof kinematic model for Cartesian-to-Joint space mapping. | ||
2. **Redundancy Resolution:** To resolve the 7-dof arm configuration while following a 6-dof hand pose trajectory. | ||
3. **Perception:** Adding additional sensor for perceiving the environment and all objects of interest. It could be an RGB-D camera, a webcam, or a laser scanner. | ||
4. **Object detection and recognition:** To identify the chess pieces on the board as targets for the pick-and-place operations. | ||
5. **Chess playing software:** Finding a suitable implementation of chess playing algorithm and integrating it within the project. | ||
6. **Motion Planning:** Using OMPL/MoveIt or other motion planning libraries to generate viable collision-free trajectories for executing the movements. | ||
7. **Motion Control:** To tune a Cartesian impedance controller or other for fast and smooth motion of the arm. | ||
8. **Hand control:** To control the grasping with the 2 fingers of the hand. | ||
|
||
**Equipment:** | ||
FRANKA Emika (Panda), RGB-D camera, laser scanner, chess board and pieces |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.