Instructions to use Tromset/flymotion with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use Tromset/flymotion with Microduck:
# Replace SLOT with the slot specified in the model card (walk, stand, sitstand, ground_pick, kick_left, kick_right, roulade). sudo robotctl policy load SLOT Tromset/flymotion
- Notebooks
- Google Colab
- Kaggle
|
Download README.md from Tromset/flymotion: direct link, hf CLI and curl.
- Browser
- Download file 3.86 kB
-
https://huggingface.co/Tromset/flymotion/resolve/main/README.md
- Command line
-
hf download hf://Tromset/flymotion/README.md
-
curl -L -o README.md https://huggingface.co/Tromset/flymotion/resolve/main/README.md
3.86 kB
| license: apache-2.0 | |
| language: | |
| - fr | |
| - en | |
| base_model: | |
| - Qwen/Qwen3.5-4B | |
| - Qwen/Qwen3.5-2B | |
| pipeline_tag: text-generation | |
| library_name: ollama | |
| tags: | |
| - robotics | |
| - motion-planning | |
| - microduck | |
| - ollama | |
| - function-calling | |
| datasets: | |
| - Tromset/flymotion-commands | |
| # FlyMotion 0.1 | |
| FlyMotion turns what you say into motion for a small robot such as [Microduck](https://github.com/pollen-robotics/microduck) (Pollen Robotics). "Avance d'un mètre, tourne à droite et frappe le ballon du pied gauche" becomes a plan that the FlyMotion bridge turns into velocity commands for the robot's walking policy. It runs locally with Ollama, on a laptop or a Raspberry Pi 5. | |
| ```sh | |
| ollama pull Tromset/flymotion0.1 # Qwen3.5 4B, computers with 8 GB | |
| ollama pull Tromset/flymotion0.1lite # Qwen3.5 2B, Raspberry Pi 5 | |
| git clone https://github.com/Tromset/flymotion && cd flymotion | |
| python3 -m flymotion "fais un carré de 50 cm puis salue" # simulator | |
| python3 -m flymotion --transport robot # on the robot | |
| ``` | |
| | Model | Base | Weights | Benchmark (36 requests) | Median planning time, 4-core CPU | | |
| |---|---|---|---|---| | |
| | `Tromset/flymotion0.1` | Qwen3.5 4B | 3.3 GB | 35/36 | 18.8 s | | |
| | `Tromset/flymotion0.1lite` | Qwen3.5 2B | 2.7 GB | 35/36 | 11.7 s | | |
| ## What is in this repository | |
| - `Modelfile`, `Modelfile.lite`: the two Ollama models (base, settings, system prompt). | |
| - `system_prompt.txt`: the system prompt, built from the Microduck profile. | |
| - `plan.schema.json`: the JSON schema of a plan, passed to Ollama's structured outputs so every reply parses. | |
| - `robots/`: robot profiles (limits, cruise speeds, head angles, skills, transport). | |
| - `bench/`: benchmark results, request by request. | |
| Version 0.1 does not retrain the weights: the gains come from the plan format, the prompt and the bridge, measured by the benchmark. The fine-tuned GGUF weights of 0.2 will be published here; the training data is [`Tromset/flymotion-commands`](https://huggingface.co/datasets/Tromset/flymotion-commands). | |
| ## The plan format | |
| The model writes words, the bridge does the physics: | |
| ```json | |
| {"say": "Je tourne à droite et je regarde en haut.", "repeat": 1, | |
| "steps": [{"action": "turn", "direction": "right", "degrees": 90}, {"action": "head", "look": "up"}]} | |
| ``` | |
| Steps: `walk` (forward, backward, left, right, meters), `turn` (left, right, degrees), `circle` (left, right, radius), `head` (ahead, left, right, up, down and the diagonals), `skill` (the robot's skills), `wait`, `stop`, and `repeat` for shapes. Distances and angles are always positive. With signed numbers instead (`"degrees": -90` for right), the 2B base confused left and right in a third of the requests: 22/32 on the first benchmark against 31/32 with words. | |
| The bridge validates every plan, clamps it to the robot's limits (Microduck: 0.4 m/s forward, 0.3 m/s sideways, 1 rad/s turning, 3 m and 60 s per plan), re-sends `robot.move` at 10 Hz, and always ends with `robot.stop`. The language model never drives the motors: Pollen's walking policies do, at 50 Hz. | |
| ## Benchmark | |
| 36 French and English requests: distances, turns, sideways steps, head, the six Microduck skills, shapes, combinations, a stop, and four requests to refuse (jump over a table, kick the cat, fly, a question). Each plan is played in a kinematic simulator and checked on the final position (10 cm), heading (10 degrees), head direction, skills and refusals. | |
| ## Limits | |
| - Plans are open loop: the robot does not see. Distances are as accurate as the calibration of your walking policy (`python3 -m flymotion calibrate vx`). | |
| - The simulator is flat-ground kinematics; it checks the plan, not the walking. | |
| - Independent project, not affiliated with Pollen Robotics or the Qwen team. | |
| Code: MIT, https://github.com/Tromset/flymotion. Weights: Apache 2.0, from Qwen3.5 by the Qwen team at Alibaba. | |