tabletop
The Tabletop activites RPi software
The Tabletop activities
This software package provides the software and middle-ware for the Tabletop low-cost tabletop game to collect learning analytic during computational thinking using unplugged or tangible activities.
System architecture
The mechanical setup drives angular and linear actuators and motors in order to move the objects on the tabletop, and grabs images in order to analyze the game state. User interaction is performed via web pages accessible on a tactile screen, while video and audio recording of small interviews is also available.
The software architecture includes a local client/server mechanism in order all user interface to be designed as web pages, while the server allows to run algorithms and store the collected data, before sending them into a safe remote storage on an external virtual machine.
Hardware drivers and the client/server mechanisms runs on a RPi (Raspberry-3) low-cost standalone computer with a WiFi hot-spot allowing to drive local connected objects and connects to a Desktop computer, in order to connect to remote hosts.
The client/server mechanism is implemented in JavaScript (using node.js) wrapping algorithms implemented in C/C++, while hardware drivers are implemented in C or Python.This multi-language choice allows us to reuse any existing software component, have critical part of the code implemented in the most efficient language (in terms of performance, but also robustness and maintenance), and allows miscellaneous future development.
The user simply plays with the mechanical device and interact with a touch screen.
Hardware documentation
All hardware elements are available here and detailed in the related publication, beyond this schematic description of the hardware design choices, using low-cost easily reusable hardware components:
and this hardware photo gallery:
- A: The Raspberry computer tablet computer mounted on a carriage with the image analysis camera Raspicam mounted on a pole to provide a top view of the gameplay space.
- B: A view of the worksite, showing that everything has been built with standard craft tools.
- C and D: Detailed views of an automatic gate between two rooms, with the controller stick in the cellar part of the box.
- E and F: Detailed views of the locker mechanism, the bolt fastener has been produced on a 3D printer in a maker-space.
- G: A view of the game board before putting it in place, all decoration is printed on a contact paper stuck on a thin wooden plank.
- H and I: Detailed view of the wagon mechanism allowing the tablet to move along the game sequence.
- J: A view of the setup when closed, allowing to easily move it from one place to another.
Package repository
- Package files: https://gitlab.inria.fr/line/aide-group/tabletop
- Package documentation: https://line.gitlabpages.inria.fr/aide-group/tabletop
- Source files: https://gitlab.inria.fr/line/aide-group/tabletop/-/tree/master/src
- Saved on softwareherirage.org
- Version
0.0.3
- License
CECILL-C
Installation
User simple installation
npm install git+https://gitlab.inria.fr/line/aide-group/tabletop.git
Co-developper installation
- See the related documentation
Please refer to the installation guide for installation.
Usage
npm script usage
npm install --quiet : installs all package dependencies and sources.
npm run build: builds the different compiled, documentation and test files.
npm test : runs functional and non-regression tests.
npm run clean: cleans installation files.
Dependencies
- aidecv: Image processing encapsulation via web interface
- aidesys: Basic system C/C++ interface routines to ease multi-language middleware integration
- aideweb: Javascript server side node express utilities for web applications and service
- express: Fast, unopinionated, minimalist web framework
- stepsolver: A step by step variational solver mechanism
- wjson: Implements a JavaScript JSON weak-syntax reader and writer