音声操縦 LeKiwi ロボット — デプロイガイド

GitHub でソースを見る
プリセット

Voice Control Your LeKiwi

Build a voice-controlled robot that understands natural language commands and moves in any direction — forward, backward, strafe, turn — just by speaking to it.

DevicePurpose
LeKiwi Kit3-wheeled Kiwi-drive chassis with 3× STS3215 smart servos
XIAO ESP32S3Motor controller — receives serial commands from the Pi 5
Pi 5 (8GB)Voice AI brain — runs wake word detection, STT, LLM, and TTS
reSpeaker Flex XVF38004-microphone array for far-field voice capture

What you'll get:

  • A robot you control hands-free with natural language
  • Wake word activation ("Hey Jarvis") — robot listens only when you call it
  • Groq-powered AI: Whisper (speech recognition) + Llama 3 (reasoning) + Orpheus (voice reply)
  • Kiwi-drive omnidirectional movement + emergency stop

Requirements: LeKiwi Kit · XIAO ESP32S3 · Pi 5 (8GB) · reSpeaker Flex XVF3800 · Speaker · Groq API key (free) · Internet access on Pi

1

Assemble Hardware

Before deploying any software, you need to physically build the robot.

配線
  1. Assemble the chassis — Follow the LeKiwi Assembly Tutorial to build the frame and mount the wheels/servos. Don't connect the servo bus to the XIAO yet — Steps 2 and 3 flash the ID setter firmware and assign servo IDs one at a time.
  2. Connect reSpeaker Flex — Plug the reSpeaker Flex into a USB port on the Raspberry Pi
  3. Connect XIAO ESP32S3 — Use a USB-C cable to connect the XIAO to the Raspberry Pi
  4. Connect speaker — Plug speakers into the Raspberry Pi's audio jack or USB port
トラブルシューティング
IssueSolution
Servo not respondingComplete Steps 2 and 3 first: flash the servo ID setter firmware, then use the serial wizard to assign IDs 1, 2, and 3
Servo wiring confusionServo 1 = front wheel, Servo 2 = rear-left, Servo 3 = rear-right
USB device not detectedTry a different USB cable — some are power-only with no data lines
2

Flash Servo ID Setter

Flash the servo ID configuration firmware to your XIAO ESP32. This firmware assigns unique IDs (1, 2, 3) to your STS3215 servos through an interactive serial console in the next step.

配線
  1. Plug the XIAO ESP32 into your computer via USB-C
  2. Click Deploy to flash the firmware
  3. Proceed to Step 3 to set servo IDs
トラブルシューティング
IssueSolution
Flash fails / device not detectedHold the BOOT button on XIAO, press RESET, then release BOOT
3

Set Servo IDs

Use the serial console to assign IDs to your servos one at a time. The firmware will guide you — connect each servo when prompted and press Enter.

配線
  1. Click Connect to open the serial console
  2. Connect ONE servo at a time to the XIAO servo bus when prompted:
    • FRONT wheel → ID 1
    • REAR-LEFT wheel → ID 2
    • REAR-RIGHT wheel → ID 3
  3. Use the Send Enter button or type in the input field and press Enter to proceed
  4. After all three IDs are set, power off and reconnect all servos
トラブルシューティング
IssueSolution
No servo detectedCheck servo power wiring and try the Rescan button
Multiple servos detectedConnect only ONE servo at a time to the bus
ID setter shows nothingDisconnect and reconnect the XIAO USB, then click Connect again
4

Flash Motor Controller

Flash the motor controller firmware. This handles Kiwi-drive kinematics and listens for serial commands from the Raspberry Pi.

Verification

After flashing, the XIAO will boot and check for servos 1, 2, 3. The serial monitor (115200 baud) will show Servo 1 OK, Servo 2 OK, Servo 3 OK followed by System ready!.

配線
  1. Plug the XIAO ESP32 into your computer via USB-C
  2. Click Deploy to flash the firmware
  3. After flashing, reconnect the XIAO to the Raspberry Pi and power on the servos
トラブルシューティング
IssueSolution
Flash fails / device not detectedHold the BOOT button on XIAO, press RESET, then release BOOT
Wrong USB port detectedUnplug other USB-serial devices and try again
Servos not found at bootCheck servo power. Run Steps 2-3 again if IDs aren't set
5

Deploy Voice Brain

Deploy the voice AI container to the Raspberry Pi on the robot (wake word + ASR + LLM + TTS all bundled in one image).

トラブルシューティング
IssueSolution
Docker not installedRun curl -fsSL https://get.docker.com |​ sh on the Pi
Container exits immediatelydocker logs lekiwi-voice — usually a missing GROQ_API_KEY
Wake word never triggersMake sure reSpeaker is connected before deployment. The container auto-selects the microphone; check docker logs lekiwi-voice for the selected input device
Robot not movingMake sure the XIAO is connected to the Pi over USB-C and the motor controller firmware from Step 4 is running. The container auto-selects the ESP32 serial port
TTS / STT errorsGROQ_API_KEY is invalid, the Groq terms are not accepted, or the Pi cannot reach Groq
デプロイ方法
入力が必要な項目(SenseCraft Solution アプリで入力)
  • Groq API Key*

    Get a free API key at console.groq.com

既定値のある残り 5 項目
  • Wake Word既定値 hey jarvis
    6 件の選択肢
    • · Hey Jarvis
    • · Alexa
    • · Hey Mycroft
    • · Hey Rhasspy
    • · Timer
    • · Weather

    Phrase used to wake the assistant. Changing this swaps the loaded openWakeWord model.

  • Wake Word Threshold既定値 0.03

    Detection sensitivity (0.01-0.5). Lower = more sensitive, higher = stricter.

  • Wake Word Cooldown (s)既定値 2

    Seconds to ignore further wake events after a successful trigger.

  • TTS Voice既定値 autumn
    6 件の選択肢
    • · Autumn
    • · Tara
    • · Leah
    • · Dan
    • · Mia
    • · Zac
  • LLM Model既定値 llama-3.1-8b-instant
    3 件の選択肢
    • · Llama 3.1 8B Instant (fast)
    • · Llama 3.3 70B Versatile (smart)
    • · Mixtral 8x7B

    Groq-hosted model used to interpret commands. Larger models are smarter but slower.

6

Talk to Your Robot

Now that everything is running, test your voice-controlled robot.

Verification

  1. Stand within ~1 metre of the robot
  2. Say "Hey Jarvis" clearly — you should not hear a response yet (the robot is waiting for your command)
  3. After the wake word, say a command like:
    • "move forward"
    • "turn left"
    • "strafe right"
    • "what can you do?"
  4. The robot should respond verbally and then move
トラブルシューティング
IssueSolution
Wake word never detectedSpeak clearly within 1m of the mic. Check docker logs lekiwi-voice and confirm the detected microphone is the reSpeaker device
Robot moves wrong directionVerify servo IDs 1, 2, 3 are assigned correctly and wheel angles are correct
Response is slowGroq API latency. First request may take 2-3 seconds; subsequent ones are faster
Container keeps restartingCheck logs: docker logs lekiwi-voice. Verify GROQ_API_KEY is valid
デプロイ後

Your LeKiwi robot is now voice-controlled.

Command Reference

PhraseRobot Action
"move forward" / "go ahead"Forward nudge
"go back" / "reverse"Backward nudge
"turn left" / "rotate left"Turn left nudge
"turn right" / "rotate right"Turn right nudge
"strafe left" / "slide left"Strafe left nudge
"strafe right" / "slide right"Strafe right nudge
"keep going forward" / "continuously"Continuous movement (until stop)
"stop" / "halt" / "emergency"Emergency stop

Advanced Commands

The robot also responds to:

  • "what can you do?" — lists capabilities
  • "increase speed" / "decrease speed" — adjusts nudge parameters
  • Conversational queries — the LLM will chat naturally and reply via TTS

Next Steps

  • Adjust nudge duration/speed by editing device settings and re-deploying
  • Change TTS voice (Autumn, Tara, Leah, Dan, Mia, Zac) in device settings
  • Check docker logs lekiwi-voice if the wake word is hard to trigger; the log shows which microphone was auto-selected
  • LeKiwi Voice GitHub