[Builders & Makers] Example Runtime for Educational GoPiGo3 Robot #523
Replies: 11 comments 4 replies
-
Front End Success - Looks like I need a runtime:Test 1: |
Beta Was this translation helpful? Give feedback.
-
|
Yes, please provide an example (native platform, non-ROS) GoPiGo3-URML-Runtime |
Beta Was this translation helpful? Give feedback.
-
|
Done, and thank you for the nudge. It has three pieces: The headline case is the exact command you translated: announce "Driving forward 1 meter", then drive 1 m. It runs here against a fake easygopigo3 so CI stays hermetic, and unchanged on your Pi once you pip install gopigo3 easygopigo3 and delete the fake block. If you send your gopigo3.manifest.yaml I will tune the example to match your exact distances and speeds. Thanks, |
Beta Was this translation helpful? Give feedback.
-
Thank you for supporting the GoPiGo3 educational robot platform.For over 10 years the GoPiGo3 has maintained relevance in a very competitive market, which is important to me as a user. Having the GoPiGo3 as one possible platform to learn about URML and exercise these concepts is exciting. |
Beta Was this translation helpful? Give feedback.
-
|
That means a lot, thank you. One update: the example is merged and live now (examples/gopigo3/), not just landing. Enjoy exercising it. Thanks, |
Beta Was this translation helpful? Give feedback.
-
FYI: "URML.dev in the news"I published small mentions of urml.dev and URML for the GopiGo3 |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for spreading the word on both the GoPiGo3 forum and Fosstodon. Word-of-mouth from someone who has actually run it is the signal that matters most at this stage. |
Beta Was this translation helpful? Give feedback.
-
|
@idoco2003 Thank you for creating the example GoPiGo3 runtime. It was very exciting (well "heart stopping") to hear Dave really executing the URML we have been discussing. Reviewing the run_gopigo3.py program, I realized how I want to use my_run_gopigo3_urml.py program: Looks like I needed to improve my gopigo3_t1_remote.sh to clean the model="qwen3.5:9b" when inserting it into the --out parameter to "urml translate ..." |
Beta Was this translation helpful? Give feedback.
-
|
This is exactly the right shape, and I built most of it (PR #544). run_gopigo3.py now takes -f: It validates your file against the GoPiGo3 manifest and runs it; the two demos only run when you do not pass -f. So your my_run_gopigo3_urml.py is now the stock runner with a flag. On the mock-vs-real default I went the other way from your sketch, on purpose. After Dave's unplanned trip across the room, the default is now a dry run: -f, or a bare run, validates and prints the planned wheel and speech calls and moves nothing. To actually drive you add --execute. And I kept your -m: it forces the fake even with --execute, so you can preview a program on Dave's Pi without Dave moving. The reason for flipping the default is the lesson Dave taught us: in a validate-before-actuate project, running the tool should not be able to surprise you into motion. The gate goes in front of the motor. Nice catch on the filename, too. The colon in qwen3.5:9b makes a messy --out path; sanitizing it to qwen3.5_9b is the right move. That part is yours to do, since the model name is yours to pass, but it is a good tip for anyone using a model tag as a filename. Thanks for designing this out loud. It made the feature obvious. Thanks, |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
This is the whole thing, end to end, on your own robot with a model running on your own hardware. English, to a remote local LLM, to a validated program, to Dave actually moving. There is no cloud anywhere in that loop. That is exactly the picture URML exists to make real, and you got there first. The full circle: you typed a sentence, an Ollama model turned it into URML, the validator checked it against Dave's declared capabilities, and -f ran it on the wheels. Sentence to motion, offline, on a Pi-class robot. On the timeout: that one is a cold start, not a real failure. The first call to Ollama has to load the multi-GB model into memory, which can blow past the default request timeout; your warm retry worked because the model was already resident. I shipped a small fix so you do not have to lean on the retry (PR #546): the OpenAI provider now honors URML_OPENAI_TIMEOUT, so gives a cold load room to finish. Keeping the model warm with OLLAMA_KEEP_ALIVE helps too. Tutorial 3 now notes both. Congratulations. This is the demo I would put in front of anyone who asks what URML is for. Thanks, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Which are you?
Evaluating, not building yet
Substrate or product
GoPiGo3 Educational Robot with Raspberry Pi 4 (Basic and ROS2)
What do you want to discuss?
Your offer for an example runtime for the basic GoPiGo3 robot is very welcome. I usually start with someone else's code and adapt for the GoPiGo3 - Basic OpenCV object recognition tutorial, TurtleBot3_Cartographer, TurtleBot4 Nav2_Bringup, etc. but getting a specific headstart is great.
Beta Was this translation helpful? Give feedback.
All reactions