Skip to content

Sentience-Robotics/lucy_control_panel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

101 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Lucy Control Panel

A modern, TUI-themed web interface for controlling robots with real-time joint manipulation and immersive 3D visualization.


๐Ÿ“Œ Overview

Lucy Control Panel is a comprehensive web-based control system designed specifically for robots. Built with React and Three.js, it provides an intuitive terminal-style interface that allows users to control individual robot joints, save/load poses, and visualize the robot in real-time 3D.

The application features a distinctive green-on-black cyberpunk aesthetic reminiscent of classic terminal interfaces, making robot control both functional and visually engaging. Whether you're programming complex movements or fine-tuning individual joints, Lucy Control Panel provides the tools needed for precise robot manipulation.


๐Ÿš€ Features

  • ๐ŸŽฎ Real-time Joint Control - Individual control of all robot joints with precision sliders and input fields
  • ๐ŸŽฏ URDF Parser - Automatic parsing of InMoov URDF files to extract joint configurations and constraints
  • ๐Ÿ’พ Pose Management - Save, load, and manage multiple robot poses with custom names
  • ๐Ÿ”„ Drag & Drop Categories - Reorganize joint categories (Head, Arms, Torso, etc.) via intuitive drag-and-drop
  • ๐Ÿ“ Unit Conversion - Toggle between degrees and radians for joint angle display
  • ๐Ÿค– 3D Robot Visualization - Real-time 3D rendering of robot meshes with STL support
  • โš™๏ธ Visual Controls - Wireframe mode, grid display, transparency adjustment, and camera controls
  • ๐ŸŽจ Cyberpunk UI - Terminal-inspired interface with signature green glow effects
  • ๐Ÿ“ฑ Responsive Design - Works seamlessly across desktop and mobile devices
  • ๐Ÿ”Œ Connection Management - Visual connection status and control interface
  • ๐Ÿ” Secure Authentication - Optional username and password protection with MD5 encryption
  • ๐ŸŒ Custom ROS Bridge URL - Configurable ROS Bridge connection with persistent settings

๐Ÿ› ๏ธ Prerequisites

Tool Required version Notes
Node.js โ‰ฅ 22.0.0 camera-controls requires Node 22+
Yarn 1.x (classic) npm install -g yarn

Quick Node upgrade with nvm

If you have Node < 22 (e.g. the Ubuntu 22.04 default 18.x), install nvm and switch:

# Install nvm (skip if already installed)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
source ~/.bashrc   # or ~/.zshrc

# Install and activate Node 22
nvm install 22
nvm use 22         # or: nvm use  (auto-reads .nvmrc)

# Verify
node --version     # should print v22.x.x

A .nvmrc file at the project root pins the version โ€” running nvm use from the directory is sufficient on future sessions.


๐Ÿ“ฆ Installation

# 1. Clone the repository
git clone https://github.com/sentience-robotics/lucy_control_panel.git
cd lucy_control_panel

# 2. Switch to the required Node version (requires nvm)
nvm use

# 3. Install dependencies
yarn install

# 4. Copy the example environment file and fill in your values
cp .env.example .env

See the Configuration section below for all available environment variables.


โ–ถ๏ธ Run

Development

Starts the Vite dev server with hot-module replacement.

yarn dev

The app is available at http://localhost:3000 by default (or the port set in VITE_PORT).

Production build

# Full build (TypeScript type-check + Vite bundle)
yarn build

# Quick build (Vite only, skips tsc)
yarn quickbuild

# Preview the production bundle locally
yarn preview

HTTPS (self-signed certificates)

Required when the robot's ROS Bridge runs over HTTPS / WSS:

cd certs && ./generate_certificate.sh && cd ..

Then set in .env:

VITE_HTTPS=true
VITE_SSL_CERT_PATH=./certs/cert.pem
VITE_SSL_KEY_PATH=./certs/key.pem

โš™๏ธ Configuration

Environment Variables

Create a .env file in the project root to configure the application:

# Authentication (both required for password protection)
VITE_LOCAL_USERNAME=admin
VITE_LOCAL_PASSWORD=5d41402abc4b2a76b9719d911017c592

VITE_PORT=3000
VITE_OVERRIDE_ROS_BRIDGE_SERVER_URL=https://100.100.100.100:5000/rosbridge

VITE_ENABLE_LOGS=true

# Hardware YAML editor (`/configuration`): header shows `robot_name` from loaded YAML (via ROS config/get).

Authentication Setup

  1. Username: Set VITE_LOCAL_USERNAME to your desired username
  2. Password: Set VITE_LOCAL_PASSWORD to the MD5 hash of your password
    • Generate MD5 hash: echo -n "yourpassword" | md5sum
    • Example: Password "lucy123" โ†’ MD5 hash "5d41402abc4b2a76b9719d911017c592"

Note: If either VITE_LOCAL_USERNAME or VITE_LOCAL_PASSWORD is not set, the application will run without authentication.


๐Ÿ“– Documentation

For more details on creation processes, troubleshooting, and other guidance, visit the Sentience Robotics documentation.


๐Ÿ“œ Code of Conduct

We value the participation of each member of our community and are committed to ensuring that every interaction is respectful and productive. To foster a positive environment, we ask you to read and adhere to our Code of Conduct.

By participating in this project, you agree to uphold this code in all your interactions, both online and offline. Let's work together to maintain a welcoming and inclusive community for everyone.

If you encounter any issues or have questions regarding the Code of Conduct, please contact us at contact@sentience-robotics.fr.

Thank you for being a part of our community!


๐Ÿค Contributing

To find out more on how you can contribute to the project, please check our CONTRIBUTING.md


๐Ÿ“œ License and Attribution

Project License

  • Original project code/files: GNU GPL V3 License
  • InMoov-derived files: CC BY-NC 4.0 (as specified under)

See the LICENSE file for details.

InMoov-Derived Components

Parts of this project that are derived from InMoov files (including Blender models, CAD files, and STL files) are based on the original work by Gael Langevin.

Original Work: InMoov by Gael Langevin
License: Creative Commons Attribution-NonCommercial (CC BY-NC)
Source: http://inmoov.fr/
Applies to: Blender files, CAD files, STL files, and other 3D models derived from InMoov


๐Ÿ™Œ Acknowledgments

  • ๐ŸŽ‰ InMoov Project โ€“ Original design by Gael Langevin
  • ๐ŸŽ‰ All contributors to the InMoov community
  • ๐ŸŽ‰ React Three Fiber โ€“ 3D rendering capabilities
  • ๐ŸŽ‰ Three.js โ€“ WebGL 3D graphics library

๐Ÿ“ฌ Contact


Contributor Covenant

About

A modern, TUI-themed web interface for controlling robots with real-time joint manipulation and immersive 3D visualization.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages