einarhaaland / robot-caretaker

Remote emotion control for heterogeneous robots
1 stars 1 forks source link

Robot Caretaker

This is a project aiming to aid remote caretakers with expressing body language to patients using humanoid robots.

Table of Contents

Requirements

Setup (Windows)

All commands are to run from /<subdir to setup>

Robot-Motion-Language:

RabbitMQ:

Robot Simulation:

The system should now be running end-to-end.

Try clicking a button in the web-UI and see if it is sent to the robot simulation.

How to use

Make Robot Perform Motion

On the webpage there are several large buttons coresponding to a robot motion. Clicking one of these will result in the robot performing that motion.

Right-clicking on the buttons will result in creating a sequence of motions that will be performed in order when clicking the green Perform button.

Adding a New Motion

First, let's create a new motion

Let's add a button for performing the motion

The robot should now perform the motion when clicking the button!

To delete a motion button, click the red trashcan in the bottom right corner of the webpage. An input field will appear. Enter the exact name and sentiment of the motion button you would like to delete and press ENTER.

To hide the input field, refresh the page.

Adding a new robot

This system allows you to easily add any robot:

The system should now be functional with your newly added robot.

Robot Motion Language (RML)

RML is a custom DSL that allows easy creation of motions. RML is intended to use in the monaco code editor in the browser.

How to use the Editor

Use the editor as any other text editor.

Press Enter for newline.

Press Tab for an indent.

If any text has a red underline, hover your mouse over it to see what the problem is and follow the message to fix it.

When you open up the editor, an RML example should be displayed.

Notice the indentation structure. This is not strictly neccessary, but makes the program much easier to read.

How to structure RML

Usage

define <your_motion_name>
    <Rest of RML code is indented and goes here>
end

Note that \<your_motion_name> is arbitrary, but don't include spaces.

repeat <amount>
    <RML code to be repeated is indented and goes here>
end

Note that \<amount> is an arbitrary integer.

multimove
    <RML to be performed simultainously is indented>
end
move <side> <joint> <rotation> to <position>

Note that \<side> and \<rotation> is not always needed depending on the joint.

Troubleshooting

Navigating this repository

Glossary

To Forkers:

The RML input is not currently sanitized before it is stored in the system

The RML bundle in frontend is added to VC for ease of developing. This is not recommended and should be added to .gitignore. This is the reason it says this repo is 99.5% JS

Styling in frontend is largely in-line, feel free to redo

Fonts and other real-time retrieved assets will not work on Intranet. To fix, include assets in project