The robotic arm has 7 degrees of freedom - horizontal rack, base turntable, 5 joints (3 horizontal axes and 2 longitudinal, with stable support due to use of arc bricks) and a gripper with build in colour sensor (not used in demo). Despite the considerable overall mass (I had to balance it by non-lego lead weights ), the repeatability of the movements of end-effector is below 1 mm which is relatively good result. However, due to large differences in the gear ratios of individual motors, their movements are not fully synchronized. That's why robot is not able to play chess with human, what was the initial intent (it would interfere with adjacent figures). Anyway it's a good starting point for further development. The software is written in Python. No SD card is required in EV3. It works just as isthanks to Direct Commmand communication. Program is based on roboticstoolbox library. Connection is via USB to achieve the best performance (I was able to control robot's position 10 times per second or more).
References:
https://ev3-dc.readthedocs.io/en/latest/
https://petercorke.github.io/robotics-toolbox-python/index.html
No-LEGO parts:
- The arm has to be balanced with additional lead weights (e.g. weights used to balance car wheels).
- Additional non-standar ev3 wires are needed ( 2x60cm, 2x85cm, 1x100cm & 1x135cm) + standard ones: 3x25cm, 2x35cm, 1x50cm
- It's recommended to use stabile power supply (9V AC adapters with min. 1500mA or more)
Software:
Attached software rev.5 (
EV3_CHESS_v5.py) is used in video. It requires installed roboticstoolbox library. File
EV3ARM.py with definition of robot geometry has to be pasted to roboticstoolbox\models\DH folder.
At the begining robot has to be calibrated for each rank of chessboard (low position to catch pawn and high position to safely move pawn to new square ). Use keys 1-8 and q-i to control motors, then save poses by ctr/shift + F1 - F8.
Older software revisions include 3D graphics and image recognition methods for real-time chess play with robot.