You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Code needs to be written to go from a show file to robot commands that are executable. This is all rough thoughts, but the show file will likely be a JSON file that roughly looks like this:
// JSON file would use the Showfile type.typeShowfile={version: 1;timeline: RobotTimelineLayer[];// uhhhh I had not thought about audio much before this point ngl.audio?: {startMs: number;// maybe we use something like capnproto, msgpack, or protobuf so we could // include an audio file in the showfile. if we really wanted to use JSON we'd// probably have to base64 encode the file 💀. would work, just feels a little scuffed.// plus I've always wanted an excuse to use msgpack or capnproto loldata: string;}}typeRobotTimelineLayer=MovementEvent[]typeMovementEvent={// time since the beginning of the show that this action should be executedstartMs: number// how long it should take to reach this pointdurationMs: number// see PointSchema in `src/common/spline.ts` on PR #216target: Point}
I'm kind of just yapping/thinking out loud here so sry if any of this doesn't make sense
New commands and packets probably need to be added on both the embedded and server side to support this. We've briefly discussed some ideas for this, like sending the full 'timeline' of splines for a robot in one packet from the server, and sending another packet from the server telling a robot to 'execute' the timeline it was sent. The server should probably be able to pause execution of a timeline. More thought needs to be put into how we're going to run all this at the same time. AFAIK because we communicate between robots with TCP, there's not really a way for us to broadcast one packet to multiple robots, which would ensure that they all receive their 'execute' pacet at the same time. We may just have to hope that all the robots receive their execute packets at the same time, otherwise they won't be moving in sync.
We'll probably need some sort of interface to control show playback.
When we playback, we need to map an actual robot ID to one of the robots in the show file since the file doesn't specify specific robot IDs (should it?).
Implementation Details:
The text was updated successfully, but these errors were encountered:
Once this gets figured out and the schema is set/agreed on (should be done in #215), we should create separate issues for the server (creating the commands and packets to send to robots to facilitate playback), embedded (implementing packets), and client (building playback interface)
Task Description:
Code needs to be written to go from a show file to robot commands that are executable. This is all rough thoughts, but the show file will likely be a JSON file that roughly looks like this:
I'm kind of just yapping/thinking out loud here so sry if any of this doesn't make sense
New commands and packets probably need to be added on both the embedded and server side to support this. We've briefly discussed some ideas for this, like sending the full 'timeline' of splines for a robot in one packet from the server, and sending another packet from the server telling a robot to 'execute' the timeline it was sent. The server should probably be able to pause execution of a timeline. More thought needs to be put into how we're going to run all this at the same time. AFAIK because we communicate between robots with TCP, there's not really a way for us to broadcast one packet to multiple robots, which would ensure that they all receive their 'execute' pacet at the same time. We may just have to hope that all the robots receive their execute packets at the same time, otherwise they won't be moving in sync.
We'll probably need some sort of interface to control show playback.
When we playback, we need to map an actual robot ID to one of the robots in the show file since the file doesn't specify specific robot IDs (should it?).
Implementation Details:
The text was updated successfully, but these errors were encountered: