UI/UX Robotics Software Development

Robotic Arm Controller

AJ is a desktop application built in Unity with C# and Python that makes programming robotic arms intuitive and accessible. Designed in collaboration with Jonathan Shulgach, a Biomedical Engineering student at Carnegie Mellon University who developed the hardware control systems, AJ enables anyone to create complex motion sequences through a visual interface—no coding required.

Role

Lead Product Designer

Timeline

4 months

Platform

Desktop Application

Tools

Unity, C#, Python

The Inspiration

The inspiration for AJ came from the frustration that can be associated with a steep learning curve when entering the field of robotics. Having spent a majority of middle and high school participating in US FIRST Robotics myself, there was a clear need for an introductory tool that would allow youth or anyone curious about robotics to have a way to jump in and experience the fun of engineering, instead of starting with lines of code.

With the robotics market continuing to maintain a high barrier to entry for affordable and robust robotics tools, the open source nature of the hardware control systems allow the GUI to any arm using the same joint configurations as long as the operating system communicating with the Raspberry Pi is Windows.

The Goal

Create an accessible robotic arm controller that lets anyone build complex motion sequences through an intuitive visual interface. The 3D-printed hardware costs under $100, which means we could finally bring robotics to schools, makerspaces, and hobbyists who were previously priced out. I wanted to prove that powerful tools don't have to be complicated.

Design System

Color Palette

#050505
#0D0D0E
#131217
#363B41
#8C8C8C
#DDDDDD
#DB0B0F
#FFCC36

Typography

Roboto
Aa Light
Aa Regular
Aa Bold

UI/UX Breakdown

Recording Motion

Iterating on visual scripting and timeline editing principles, users record custom and complex motions for their arm using a vertical action block system. Each motion sequence is built from discrete actions that control individual servos and gripper states over specified time intervals.

Recording Motion Interface
Editing Motion Interface

Editing Motion

The user alternates between RECORD and EDIT mode based on recording new motion or editing existing motion. RECORD mode captures servo angles and timing, while EDIT mode allows fine-tuning individual action blocks with precise parameter adjustments for smooth, controlled movements.

Action Blocks

Action blocks are steps or frames in an animation sequence. They hold the information for each command to the arm. Users can add, remove, adjust, and reposition any block, simplifying the animation process. Pressing RUN PROGRAM will sync the virtual 3D animation with the connected physical arm's movements if connected, otherwise it will simulate.

Intuitive Viewport

Using sliders and grip buttons corresponding to the servos, simulated previews for arm motion and position in space removes the tedium of manually inputting values and testing through trial and error. Users can toggle extra display information for each servo including servo angles, grid collision detection to prevent the arm from colliding with objects in physical space, as well as color coded servo motion.

Intuitive Viewport Interface
Diagnostics Screen

Diagnostics

With a simple modal, users can view which servos on the arm are receiving power. Even if the arm is connected properly to your PC, a malfunctioning servo will stop AJ from letting you run the program physically. This diagnostic screen provides real-time hardware status and connection information, ensuring users understand their device's health before execution.

Tooltips & Preferences

Optional tooltips can be used to teach new users. Preferences allow customizing the GUI experience, with an option to set a default COM Port. Hot Keys are implemented for most common actions like Saving and switching between modes.

Tooltips and Preferences Interface

Core Features

Visual Action Blocks

Each motion step is represented as a discrete block containing servo angles, timing, and easing. Users build sequences by stacking blocks—no code required.

Real-Time 3D Preview

A live 3D viewport shows exactly how the arm will move before execution. Color-coded servo overlays help users understand joint positions at a glance.

Record & Edit Modes

Quickly capture new positions in Record mode, then fine-tune parameters in Edit mode. Seamless switching keeps the workflow fast and intuitive.

Hardware Sync

UPDATE HARDWARE MODEL syncs the virtual arm to your physical device's position. Simulate offline or run live on the connected arm with RUN PROGRAM.

Servo Diagnostics

Real-time servo health monitoring shows connection status and power state. AJ prevents physical execution if any servo is malfunctioning.

Save & Load Projects

Motion sequences can be saved and loaded, making it easy to build a library of reusable animations for common tasks.

Design Rationale

1. Game-Inspired Viewport Controls

Instead of traditional industrial interfaces, I borrowed interaction patterns from 3D modeling software and games. Users can intuitively rotate, pan, and zoom the viewport using familiar mouse controls and WASD keys.

2. Visual Scripting Over Code

Rather than requiring users to write motion scripts, the action block system lets anyone build complex sequences visually. This lowers the barrier to entry for students and hobbyists.

3. Color-Coded Feedback

Each servo uses a consistent color throughout the interface—from the 3D overlay to slider accents. This builds a mental model that helps users quickly identify which joint they're adjusting.

4. Progressive Disclosure

Advanced options like transition time and easing are available but not required. New users can start with basic controls and explore deeper features as they gain confidence.

Reflection

AJ demonstrates that complex systems don't require complex interfaces. By borrowing patterns from game development and visual scripting tools, I created an experience that feels approachable rather than intimidating.

The project reinforced the importance of understanding your users' mental models. Students and hobbyists think differently than industrial operators—they want to experiment, make mistakes, and learn through play. The action block system and real-time preview support that exploratory approach.

Key Takeaway

Making robotics accessible isn't just about lowering hardware costs—it's about designing software that meets users where they are. AJ proves that with the right interface, anyone can program a robotic arm.