Service Bot
A friendly wheeled serving robot, about 1.25 m tall, with a round base on hidden wheels, a slim torso, a screen face that shows an expression and one arm holding a tray of drinks or dishes out in front. The wheels turn with distance and the head tilts as it rolls; the face screen and base light ring glow at night.
- Size
- 0.52 × 1.3 × 0.78 m
- Triangles
- 2,316
- Kit
- Robots
Tune it
4 knobs: Colorway, Face, Tray, Height.
Specs
- Size
- 0.52 × 1.3 × 0.78 m width × height × depth
- Triangles
- 2,316 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 0.754 m of travel per cycle
- Moving parts
- 3 wheel_0 · spin, wheel_1 · spin, head · rotate
- Knobs
- 4 3 presets
- Night lights
- 2 screen, led
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/service-bot.mjs';
const serviceBot = createAsset();
scene.add(serviceBot); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
serviceBot.position.z = dist;
serviceBot.userData.tick(dist); // wheels roll exactly with the distance
renderer.render(scene, camera);
});import { useMemo, useRef } from 'react';
import { useFrame } from '@react-three/fiber';
import { createAsset } from 'https://gaitkit.com/cdn/service-bot.mjs';
export function ServiceBot({ speed = 1 }) {
const model = useMemo(() => createAsset(), []);
const dist = useRef(0);
useFrame((_, dt) => {
dist.current += speed * dt;
model.position.z = dist.current;
model.userData.tick(dist.current); // wheels roll exactly with the distance
});
return <primitive object={model} />;
}# Import service-bot.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $ServiceBot/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 0.754 # one Loop = 0.754 m of travel// Import service-bot.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 0.754 // one Loop = 0.754 m of travelUse the gaitkit MCP server: get_variant({ "id": "service-bot", "want": "default look" })
then place the result and drive it with userData.tick(distance).
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
colorway | choice | cream white coral mint | cream | Body colours: cream (warm white with orange trim), white (clean white with blue trim), coral (salmon pink with cream trim), mint (soft green). |
face | choice | happy calm wink eyes | happy | Expression on the screen face: happy (eyes and a smile), calm (closed eyes, small smile), wink (one eye shut) or eyes (two big round eyes, no mouth). |
tray | choice | drinks dishes empty | drinks | What is on the tray it carries: three glasses and a coffee cup, a plate of food and a bowl, or nothing. |
height | range | 0.8 to 1.3, step 0.05 | 1 | Stretches the torso. 1 is about 1.25 m tall; 0.8 is a child-height cafe bot, 1.3 a tall hotel concierge. |
Presets: cafe waiter {"colorway":"cream","tray":"drinks"} · hotel butler {"colorway":"white","face":"calm","tray":"dishes","height":1.25} · kids diner {"colorway":"coral","face":"wink","height":0.85}
Files
| File | What |
|---|---|
| service-bot.glb | GLB, default look · 265 KB |
| service-bot.mjs | ES module, every knob live |
| service-bot.obj | OBJ, static, no colour |
| service-bot-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.