Coming with some nice images and description soon...
To run the project, you should just need to do the following:
- Clone the repository, and
cd
into themra-control
directory. - Install NodeJS/NPM if you do not have it installed already.
- Install the required packages using
npm i
. - Launch the application with
npm run dev
.
The webapp is currently deployed at https://robot-art-webapp.github.io/MultiRobotArt/ by the github account robot-art-webapp. To deploy, follow the following pipeline (assuming access to the deployment repo):
- Commit and update the
deployment
branch with your local changes. - Tag your updating commit with a version number/date/helpful note.
- build for deployment with
npm run deploy
- Open https://github.com/robot-art-webapp/MultiRobotArt/tree/gh-pages and Sync Fork
- Verify that the changes have taken effect and no new bugs are introduced.
Instructions for adding or modifying new blocks coming soon...
Coming soon...
The github issues contain some TODOs and are listed here in order of priority/when they will be done. This does not include bug fixes that are ongoing.
- Multiple trajectories in one timeline block - compose multiple commands together
- All robots (of one type) are added to one group by default - simplifies the
add group
process if testing simple things - Rotation and Translation block modifiers - rotate/translate a trajectory
- Hide and add additional timeline lanes
- Arbitrary parametric equations block
- Nicer robot manager
- Trajectory visualization
This is the (proposed) scaffolding for the UI (control) part of MRA. This is a pretty basic React (Typescript) app that
Some notes for the folder structure of this sub-project:
components
- Re-usable React components for use in various other components.config
- Static configuration (such as custom Blockly definitions, Toolbox definition, etc).layout
- Main layout of the page, including primary panes. Generally, just non-reusable components.state
- Definitions and global state management for the application (currently justzustand
hooks).
Some other notes on things that I propose to use (and have done so in scaffolding this so far):
tailwind
- Keeps CSS styling in closest terms to raw CSS styles as possible, while also being very quick and modular. Fluent classes are provided, which aims to be accessible to folks who may have some basic CSS experience but not other higher-level frameworks (like boostrap).flowbite
- Higher level tailwind framework that provides simple but nice looking base components (Button
,Modal
, etc).zustand
- Simple/lightweight/accessible state management framework. Preferred to larger frameworks that require more boilerplate (such asredux
). Allows for state to be shared between otherwise unrelated components.react-blockly
- Blockly integration intoreact
(really just a lightweight wrapper).