Allow Plexus to work as a standalone node #158
Replies: 2 comments 1 reply
-
I edited the description a bit for more clarity and added links to the referenced PRs. @JensOgorek please check if I oversimplifed anything 😁 |
Beta Was this translation helpful? Give feedback.
-
In view of PR #153 and its limitations we came up with the following concept for "standalone ESPs" on a serial bus. Multiple Lizard ESPs on a single busRequirements
AspectsScheduling: Who is sending when? A coordinating ESP can cycle through peer ESPs on the bus and ask them to send buffered messages. Addressing: How to call Lizard commands on a specific ESP? This is part of the protocol internal to the Initial address assignment: How is a bare ESP addressed for its first configuration? The ESPs are configured with a minimum configuration containing a serial bus module with a given ID. Configuration: How to configure individual ESPs? The Updates: How to update the Lizard firmware on individual ESPs? ESPs between host and target ESP enter a dedicated "bridge mode" to reduce transmission errors. APIDefining a bus on any ESP (first argument is own ID, ID 0 indicates coordinator): bus = SerialBus(serial, 0, 1, 2, 7)
# or:
bus = SerialBus(serial, 0)
bus.set_peers(1, 2, 7) Sending messages to other ESPs: bus.send(1, 'led.on()')
bus.send(2, 'button.level') # output on sender ESP: "1:button.level 0" Configuring a peer ESP (second option would require an update to the Lizard grammar): bus.configure(1,
"led = Output(32);" +
"serial = Serial(42, 43);" +
"bus = Bus(serial, 1, 0);"
)
bus.configure(1, """
led = Output(32)
serial = Serial(42, 43)
bus = Bus(serial, 1, 0)
""") |
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.
-
In the current PR #153, the Plexus is fully controlled by the core ESP. It will not even execute a single step without explicit instructions from the core.
The new idea is to fully drop the main → sub model for Plexus modules and let them operate as standalone Lizard nodes. This way, they can run independently without a robot brain, but still act on commands/calls received from the robot brain.
!!
-message.!!
-transmission is no longer happening.This list will be updated as we go.
Beta Was this translation helpful? Give feedback.
All reactions