-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Request for Comments: Ideas for Twix 2 #310
Comments
Flowing dataMATE and Twix 1 had a collection of panels that each have their own state and functionality. One drawback is that panels that need common data processing need to calculate this each on their own. Another drawback is that panels cannot communicate and coordinate with each other because of the separation. One more flexible approach is to model the data flow from source to target. The source is usually a NAO (connected communication server) and the target is usually a GUI for the user. One possible model is a data pipeline where processing steps between source and target can be defined (similar to ordered nodes in the framework cyclers). Another model is a processing graph (directed acyclic graph) where nodes are processing entities and edges mark data flows. Flows defined in filesIn MATE we had the concept of loadable/storable layouts which allowed to easily switch between predefined arrangements of panels with settings. We should keep the highlighted features for Twix 2. MATE and Twix 1 had a sophisticated GUI that allowed to arrange panels e.g. via the mouse. These arrangements are then saved and restored later. A different approach would be to drop the GUI requirement for arrangement but rather define flows and arrangements in files with your favorite text editor. This would include GUI things in the flows. Lua for fast prototypingLua has prooven to be a very easy and fast way to define behavior simulator scenarios and Twix 1 transformation functions. Twix 2 flows may also leverage this potential by defining flows in Lua. The Lua files may be executed once to initialize a flow or executed for each frame of new data coming in. Nice to have: Hot reloading of Lua files would allow to keep Twix 2 open all the time and edit+save the flows in your favorite editor. |
Some things that came to mind whilst on the train back from GORE. Jersey/Player number as selection instead of IPAllow for quicker switching during a test match without needing to keep track of ip to number mapping. Could be listed as Recording and replaying in behavior simulatorRecord a limited set of info (from the panels) for a robot and what's needed for the behavior simulator. Then replay in the behavior simulator with the extra recorded params also available. Allows for analyzing behavior after a match. Robot statusShow the status of each robot in the robot selection dropdown, you might be able to this by looking at the data resend by the GameController to the TeamCommunicator. |
Two Configuration DomainsDuring design discussions of the data flow approach, we found that two "configuration" domains exist: 1. the selected robots to connect to and 2. the specific data flow to execute with the selected robots. We found two approaches to implement that: Data Flow Generation ApproachThe data flow is generated from a piece of code which could be named "generator". The input of the generator is at least the set of robots. The output is a data flow that is specialized for the current set of robots. Nodes of this data flow can be very simple because they only need to handle a scalar data stream. Non-Scalar Connections ApproachTypes of data streams may contain values for multiple robots. Special aggregation and filter nodes allow to reduce the robot-dimension, if necessary. The reduction criteria can be influenced by configuration values or GUI elements (e.g. robot selector). The whole data flow can be statically configured and only the robot selection would be dynamic. |
There are numerous ideas for a possible new version of twix floating around in the team.
The purpose of this issue is to collect those ideas and to host the discussion around them.
The text was updated successfully, but these errors were encountered: