Prototype GoPiGo3 URML “Runtime” Now Available
While the concept of a “Universal Robot Language” can seem esoteric, the URML project has just released a prototype URML runtime for the GoPiGo3.
Discussion on the scope and emergence is here.
While the concept of a “Universal Robot Language” can seem esoteric, the URML project has just released a prototype URML runtime for the GoPiGo3.
Discussion on the scope and emergence is here.
It was bound to happen, but didn’t expect it like this:
Unless you have an academic or business interest in certification of a way to use a robot API to be safe and reliable, the URML project adds unnecessary layer of complexity to programming robots.
I was hoping for a usable human - machine interface for the GoPiGo3 - it is not such for me. It is an interesting commercial robot concept which is demonstrable with a GoPiGo3, and the project has put the GoPiGo3 “on the map” in both a basic URML runtime and documenting what URML is and is not.
Obviously, install GoPiGo3 API and URML
Either have subscription to a commercial LLM,
or set up a remote Ollama server with qwen3.5:9b LLM
Create a prose statement expressing what you want your GoPiGo3 to do - Example:
./run_gopigo3.py -f my.valid.urml.program.yaml
./run_gopigo3.py -f my.valid.urml.program.yaml --execute
(gopigo3) ubuntu@U26LDave:~/LyricalDave/systests/urml/mygopigo3$ ./run_gopigo3.py -f remote.qwen3.5_9b.gopigo3_t1.program.urml.yaml --execute
[gopigo3 example] gopigo3 example, running on urml-validator 0.2.0, urml-ros2-runtime 0.2.0
[gopigo3 example] --execute: this WILL move a connected GoPiGo3. Clear space around the robot.
[gopigo3 example] backend: real (executing on hardware)
URML on a basic GoPiGo3 - running remote.qwen3.5_9b.gopigo3_t1.program.urml.yaml (Discussion #523).
gopigo3 example, running on urml-validator 0.2.0, urml-ros2-runtime 0.2.0
robot: gopigo3_basic drive_type: differential max drive: 2.0 m
[VALID] program file: remote.qwen3.5_9b.gopigo3_t1.program.urml.yaml
executed 4 steps, success=True
wheel + speech calls, in order:
emit_speech -> espeak 'Driving forward 10 centimeters'
wait_passively
drive_by -> easygopigo3.drive_cm(10.0)
emit_speech -> espeak 'Wow that was fun. Lets do it again soon.'
I have strictly avoided any non flight-sim use of my “Flight Sim Machine with NVIDIA RTX 4070 12GB GPU”, but the Internet promised me that Ollama server takes 0 processor and very little memory when not processing requests…
Other option if you have it - Install Ollama server on M-Series Mac (not my 8 year old Intel MacMini)
Thanks for all the work you put into this!
Ido here, the author of URML.
Thank you for this, genuinely.
A careful public evaluation that says plainly where the project does and does not earn its keep is worth more to me than any endorsement, and your “what URML is and is not” framing is exactly right.
You have put your finger on the real boundary.
For someone who knows their robot and writes their own Python, URML is a layer you do not need, and I would not pretend otherwise.
Where it earns its place is narrower: when an LLM is turning plain English into actions, when safety or certification has to be checkable, or when you want one program to run on more than one robot.
For a fluent GoPiGo3 programmer doing none of those, the honest answer is that it is overhead.
The one place I would gently push: the audience where it helps most is the opposite of you, the novice or the classroom, where “say it in English, and the robot only does what it was declared able to do safely” is the whole point.
That is the thread I would most like to keep pulling with the GoPiGo community.
And thank you for putting the GoPiGo3 on the URML map.
Dave earned it!!
Dave is lovin’ this URML stuff - lots of stuff to do during his “playtime”.
Still some things to work out. Dave is testing “orbits”:
Not sure why I am pursuing getting the URML project to have a GoPiGo3 runtime - perhaps because I miss being needed as a tester and developer.
Many people told me I would miss working after I retired (9 years ago), and I told them “forget it - I’m going to play with my robots!”
Here I am playing with my robots pretending to be a tester and developer, but w/o the pressure and egos.
I just submitted a pull request that fixes three issues with the GoPiGo3 runtime:
Since the URML project implements real production software process, I am sure my “backroom” fixes and process will be rejected at first, but perhaps with assistance the ideas will get through.
Next up - find out why I can’t read my ToF DI Distance Sensor.
I would like to think on these lines some. Indeed I am not currently an educator, and no longer a novice user. I do have a career of experience with “say it in English and the [thing] only does what it was [designed] to do” having worked in:
and have taught neophytes system design concepts and programming languages as the capabilities of computers, languages, and human interfaces have matured over my now 60 years “bending computers to my will”.
I believe "the robot only does what it was declared able to do safely” does not square with my experience with any robot perhaps short of the no longer marketed Amazon Astro.
Educational robots allow students to dream up intents, and discover the reality of the robot’s abilities and limitations by positive and negative experiences, but do not, as a norm, “declare” any safe abilities. Every educational robot requires the instructor create a “safe playground around the robot’s sensory and effector abilities”. I am aware of only one educational robot to date - the failed iRobot Create3 with always active self-protection functions.
My second, even greater disconnect is with intimating “say it … and the robot … does… it” will soon be available in the educational robotics space. Educators need robust, reliable, predictable, supported tools to develop pedagogy. This is perhaps the toughest part for a robot vendor to meet at scale, profitably.
Specific Points for the GoPiGo3 with URML:
All my opinions, of course. I wish there were more opinions haunting these fora, but alas it has been a bit lonely here these days.
Thanks again, @cyclicalobsessive , for all the time you’ve been putting into this project! It’s invaluable to us
I just wanted to bring up the case here that educators do not always have the goal to teach robotics concepts. Our robots are used in classrooms to support math, for example. For example:
Absolute values:
https://edu.modrobotics.com/mod/page/view.php?id=161
or even Biology in college (at the Masters’ level)
https://edu.modrobotics.com/mod/book/view.php?id=156
So the use of the GoPiGo goes beyond teaching programming concepts and robotics.
That is so cool! (and “Masters Level” indeed. I dabbled with Braitenberg Vehicles on the GoPiGo3 which are “two neuron” simulations, but C. Elegans? Wow!
I did English proof reading for a German team using C. Elegans for flavonoid influence on cancer cells.
I couldn’t find the Python3 version of the Connectome tutorial. Have a link handy?
It’s now a Jupyter notebook and not a pure Python file.
Supposedly the pure python for GoPiGo3 is here:
I’m going to add this to my TODO: list - looks really interesting, and I think Dave always wanted “worms in his brain”…maybe that was some other of questionable intelligence.
Interesting to see John Cole in the author list!
if I remember correctly the pure python file wasn’t working with Python3. It was timing out or something. It was taking a really long time to get started. Jupyter Notebook handled it much better
My two centavos:
IMHO, learning robotics is difficult enough as it is, without adding layers of complexity or requiring massive external resources as a dependency.
If this were natively available, and were as simple as a Bloxter script - “move from here to there” - without requiring a massive “flight simulator” capable robot as a co-processing host, then it would be useful.
As it is, it takes a relatively complex process and somewhat steep learning curve and makes it both more complex and steeper than necessary.
Again, IMHO, this is like ROS - a layer that the GoPiGo doesn’t really need unless you want to explore more advanced robotic concepts than the current environment can support.
This reminds me of Bradly’s Bromide - “Inside every large, complex program is a smaller, simpler program struggling to get out.” If we can navigate to the moon with nothing more than a pocket calculator’s worth of computing power, surely we can move from one place to another without requiring the robot to carry a Cray on its back.
Note:
This does NOT invalidate current research. I am simply expressing my opinion as to the general applicability of this as a language model for the GoPiGo3.
What say ye?
P.S.
@cyclicalobsessive
@greenvh
I think both avenue’s of research have value; your emphasis on larger logic models applicable to more complex reasoning and my emphasis on logic models that are more simple and easier to understand for the less advanced student. It’s not that your model is wrong, I just think that I can achieve results that are substantially similar with a smaller, less complex, logical model.
The problem wasn’t that “it wasn’t working with Python3”, it was that it was expecting Python3 v7, and certain dependencies were incompatible with later Python versions.
Dave, a status note here because GitHub is not the right channel this week.
Since 27 August my GitHub account has been hidden by a moderation flag: my profile, PRs, and comments return 404 to everyone but me, and CI on the repo stopped. I have an appeal in.
Your three open threads (#597 prompt carried into the program, #600 wait_passively, #604 the template link) are answered in code, merged to main as PR #736. urml translate now writes the sentence into the program’s description, and run_gopigo3.py prints it as prompted by: above the wheel calls. wait is honored on the real clock under --execute and shows time.sleep(N) in the dry run. The template links are absolute now. The written replies go up on GitHub the moment the account is visible again, so they notify you properly.
Sorry these sat since July. That part has nothing to do with the flag.
Thanks for the update Ido. Figured you were busy - saw a few “real robot” interactions going on with vendors as evidence your “URML” is getting good attention.
My attention has been mostly other places since Dave started saying hi to everyone that walks by, and when he assumes the TV is talking to him.
Hope you can get the GitHub issue sorted - with AI making so many decisions today we humans are having to work harder to figure out how to get past the AI gatekeepers to talk with the wizard behind the curtain.