First GoPiGo3 Robot Runs "Validated Safe" URML Program #542
Replies: 2 comments 2 replies
-
|
This made my day. Lyrical-Dave is the first robot anywhere to run a validated URML program, and I love that he did it before you finished your coffee. You also found a real bug, and an embarrassing one for a project whose whole pitch is validate before actuate: the example drove your robot when you typed -h. That is on me. A demo should never surprise-move a robot, least of all this one. Fixed in PR #543:
So now ./run_gopigo3.py -h does what habit expects, and ./run_gopigo3.py --execute is the "let Dave loose" button. On the silence: that was a gap too. The default speech backend is espeak, and if espeak is missing or the Pi has no audio out, it said nothing and gave you nothing to debug. It now prints on stderr when it cannot speak. Better still, Dave already has a say node, so pass your own speak callback and route "announce" through it, no espeak needed: Thank you for running it for real, footgun and all. That is the first time the whole loop, English to validated program to a robot actually moving, has closed outside my own machine. Dave earned the Mastodon post. Thanks, |
Beta Was this translation helpful? Give feedback.
-
|
@slowrunner this is going up on urml.dev as a field note, crediting you and Dave. As last time, here is the near-final before it goes live, so you can change anything, especially anything about you or Dave. It reuses the Lyrical-Dave photo you shared, credits you as @slowrunner with links to your LyricalDave repo and your Mastodon post, and it is honest that the footgun was ours, not yours. This week a community member who goes by @slowrunner closed the loop the whole project is built around. An English sentence, validated into a robot program, executed on real hardware. His GoPiGo3, Lyrical-Dave, drove across the room. Then it drove under a chair. Lyrical-Dave, @slowrunner's GoPiGo3 ROS 2 robot. Photo: @slowrunner. The headlineThis is the first time the full URML loop has run end to end outside a maintainer's machine: English, to a validated program, to a robot that moves, on an educational two-wheel buggy and a Raspberry Pi, with no cloud. The loop closed on someone else's robot, in their own home. That is the milestone. How it actually happened, which is the better storyWe had just shipped an update to the GoPiGo3 example so it would notice a real robot and use it. @slowrunner pulled the update onto Dave, copied the example into his test folder, and ran it with He told it himself, with good humor: be careful what you type, your robot may be listening. The part we are not proud of, and fixedURML's entire pitch is validate before actuate. Nothing moves until it is checked. And our own example moved a robot when someone typed So we fixed it the same day. The example is now a dry run by default. Run it, or run it with The lesson is the project's own, turned back on itself: a validated-safe program is only safe if running the tool cannot surprise you into executing it. The gate has to sit in front of the motor, including in the demo. What the robot was actually toldThe "validated safe" program Dave ran was a short patrol: announce, drive a meter, turn, drive, return home. Every step had been checked against Dave's declared capabilities, a frameless two-wheel buggy with wheel encoders, before a single wheel turned. The validator did its job. The demo's invocation did not. Now both do. One footnote: Dave moved but stayed silent. The example's default speech path is espeak, and on Dave it produced no sound and, worse, no error. That was a gap too, so the adapter now says on its log when it cannot speak, and a robot with its own voice, like Dave's ROS say node, can be wired straight in. Why we are writing this downThe validator-first design held: the robot did only what was declared possible and checked safe. What failed was operational glue around the demo, and a user caught it on his own hardware in the most memorable way possible. That is what early adoption looks like, and it is worth more than a clean launch. The full thread, including Dave's own account, is on the discussion board. Lyrical-Dave's code is at github.com/slowrunner/LyricalDave. If that reads right to you, it goes live. Anything to fix, just say and I will change it. Thanks, |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
GoPiGo3 Robot "Lyrical-Dave" Ran A URML Program!
Be careful what you type - your robot may be listening. This morning I awoke to notices that the URML/examples/gopigo3 had been updated to notice a real robot was available when running a URML program.
Not being awake enough, (only one cup of coffee...), I did a git pull to bring the updates down to my GoPiGo3 robot Lyrical-Dave, and copied the GoPiGo3 "runtime" into my test folder, and typed
./run_adapter.py -hout of habit when about to attempt new code.I was immediately alerted to my error, by the sound of Lyrical-Dave's motors coming from the next room. Oh boy, what trouble did he get into now?
I raced into the next room to see Dave spinning 90 degrees and driving under a chair. My heart was racing as fast as Dave.
I checked the report to see what "validated safe" URML program I had unintentionally unleashed:
I don't recall hearing Dave speak, so I have some debugging of the emit_speech primitive after my heart calms from Dave obediently performing the "intent" it heard.
Of course, Dave wanted to tell the world
https://fosstodon.org/@cyclical_obsessive/116811057601974296
Beta Was this translation helpful? Give feedback.
All reactions