← gnomons.com
Featured R&D · Renesas RA8P1 · µT-Kernel 3.0

Conversational hand gestures

An inclusive communication bridge for children: a child raises an open palm, a cartoon face on screen greets them, and the two hold a short conversation, a game, a story, a goodbye — using only hand shapes. No network stack, no camera data ever leaves the device, so the conversation stays private to the child using it.

HAND GESTURE RESPONSE
a gesture in · a reaction back · on screen, right away

Watch it in action

The conversation, the rock-paper-scissors game, and the story generation, all running live on the EK-RA8P1 board.

The exchange is meant to mimic conversational reciprocity — the back-and-forth turn-taking of a real conversation — rather than a single command triggering a single response, with the animated face appearing to understand and talk back through its reactions.

The TRON × AI theme is about combining RTOS and AI rather than running one alongside the other. On µT-Kernel 3.0, this demo does exactly that: two independent AI workloads, computer vision and language generation, share a single Renesas RA8P1 chip through the kernel's own scheduling and memory primitives.

Competing for CPU time and limited memory

On a single microcontroller, combining two AI workloads is not automatic. AI workloads are large relative to an MCU's compute and memory budget, and running more than one at once — for example a vision pipeline that must keep up with a live camera while a language model computes in the background — puts them in direct competition for CPU time and for the limited fast memory an AI accelerator needs. Without guaranteed task order, a slower AI workload can stall a time-critical one.

Two AI workloads, one chip

The vision half feeds an MIPI camera into a palm-detection model and a hand-landmark model, both running on the on-chip Ethos-U55 NPU; the resulting 21 joint positions become one of five named gestures through geometry ratio tests on the Cortex-M85. The language half runs a "Tiny" Llama2 model at 8-bit quantization that writes a short story one token at a time, reading its weights directly out of external Octo-SPI flash instead of copying them into RAM, with its int8 matrix multiplication calling the Cortex-M85's Helium vector instructions directly — sixteen int8 lanes per instruction instead of one.

Vision · T_CAM / T_AI MIPI Camera OV5640, 640×480 Palm Detection Ethos-U55 NPU Hand Landmark Ethos-U55 NPU · 21 joints Gesture Geometry Cortex-M85 · ratio tests · 5 shapes Language · T_STORY Tiny Llama2 Cortex-M85 + Helium MVE int8 Matrix Multiply 16 int8 lanes per instruction Weights Read In Place Octo-SPI flash · never copied to RAM Token Stream one token at a time Single µT-Kernel Event Flag ready / done bits only · interrupts set bits directly · nothing to overflow T_UI — Conversation State Machine renders the whole screen Renesas RA8P1 ETHOS-U55 NPU CORTEX-M85 + HELIUM OCTO-SPI FLASH SDRAM
Both task chains signal through the same event flag; everything else — processed images, joint positions, gesture results, story text — travels in shared structures each written by exactly one task.
Vision task Language task UI task µT-Kernel resource (OS) RA8P1 hardware
17.1 MB
story weights read straight from Octo-SPI flash, never copied to RAM
1.2 MB
on-chip SRAM used, of 1.9 MB fitted — shared by both NPU models
71%
of external SDRAM still free after both AI workloads are loaded

Fixed priorities keep vision responsive

µT-Kernel's fixed task priorities let these two workloads share one chip safely, as four application tasks. Story generation only uses CPU time left over after the other three, so it cannot delay the camera or the display: the camera picture keeps updating and story text keeps appearing together, with no dropped frames on the panel.

T_CAMcamera capture
Captures each camera frame and hands it to the vision pipeline. Highest priority so the live picture never stalls.
HIGHEST
T_AIAI inference
Runs palm detection and hand-landmark inference on the NPU, then the gesture geometry on the Cortex-M85.
HIGH
T_UIUI & conversation
Owns the conversation state machine and draws the whole screen — camera picture, face, game, and story text.
MEDIUM
T_STORYstory generation
Generates story text one token at a time, using only whatever CPU time the other three tasks leave behind.
LOWEST

Competitive speed, without freezing the screen

The same benchmark other microcontrollers run alone — llama2.c's stories15M, 8-bit quantized — runs here at a comparable rate while also driving a live camera and two NPU vision models at once.

2.61 tok/s
story rate, camera and screen running too — on par with single-purpose boards running the same model alone
111 ms
CPU time per token spent on the camera and screen, so the display stays live
Never freezes
the panel keeps drawing live camera and story text throughout generation

For comparison, published microcontroller runs of the same stories15M language model alone — with no camera or vision workload alongside it — report about 2.5 tokens/s on a Cortex-M7 and about 2.96 tokens/s on an ESP32-S3.

One event flag, single-writer memory

The same four tasks coordinate through a single µT-Kernel event flag plus shared, single-writer memory — a signaling path small enough that its worst-case timing is easy to reason about.

The event flag carries signals, not data

Only ready and done bits pass through it. An interrupt sets its bits directly, with nothing in between that could overflow.

tk_set_flg / tk_wai_flg · interrupt-safe

Data travels in single-writer structures

Processed images, joint positions, gesture results, and story text each live in a structure written by exactly one task, so no two tasks race over the same memory.

shared memory · one writer per structure

Five gestures, one shared vocabulary

21 joint positions become one of five named gestures through geometry ratio tests on the Cortex-M85 — no embedding model, no network call, just distances and ratios computed on-device.

Open Palm · start / yes Fist · goodbye / no Victory · game play Thumbs Up · yes Thumbs Down · no

A small proof of a larger idea

This demo is deliberately small — one board, one camera, one child-sized conversation. But the same properties that make it work reach well beyond this one demo. A gesture-only interface reaches people voice and touch assistants don't: non-verbal children, hospital patients, anyone across a language barrier — the back-and-forth reciprocity here is what makes an interface feel like it's listening, which matters most for the users existing assistants serve worst.

Keeping every byte on-device means that reach doesn't cost privacy: nothing about a child's face or voice has anywhere to leak, by construction, not by policy.

And underneath both is the discipline we build every engagement on: hardware-aware intelligence. We bridge the gap between heavy algorithms and constrained silicon, engineering code that strictly respects memory, thermal, and energy limits rather than asking the hardware to stretch to fit the software. This demo puts that discipline under real pressure — two AI workloads sharing one RA8P1 chip, scheduled by µT-Kernel's fixed priorities, without ever missing a frame. AI on a microcontroller doesn't have to mean flaky or cloud-dependent — not when the algorithm is engineered to fit the silicon it runs on, instead of the other way around.

Want to run RTOS and AI on one chip?

This is one build from our Renesas RA8P1 R&D work. Share your hardware targets and we'll walk you through what it takes to run vision and language workloads together on a single microcontroller.

services@gnomons.com