Hi all,
I am writing a prototypical air traffic simulation application. The sky is partitioned into various entities: airspaces, traffic volumes, ... Aircrafts will follow flight plans. Flight plans are described in 4D (3D + time) thru entities such as: en-route routes, points, flight levels, takeoff time, relative times over (points)... I would like to have 1. Croquet participants (robots, not "human" avatars) representing different (group of) airports instantiating flight from a local data source (file, db,...) 2. instantiation should be time driven: a new flight enters into the simulation at takeoff time as specified in its flight plan 3. human avatars will be able to ask for relevant aggregated information (table/graph of flight counts per hour, ...) for their geographical area of competence (aerodrome, airspace). Given the above, my questions for Croquet developers/experts are: a. is it really possible to have a participant which creates new instances based on local machine information (file, db...)? If not, do I only have the possibility to create instances in a centralized way? b. is there any possibility to define a reference simulation start time (at island level?) shared by all participants? Is it OK for example to do it in (a subclass of) CroquetParticipant? Any helps/ideas is welcome Thanks in advance Regards Enrico |
That's an interesting application!
The answer to a) is yes. If I understand you properly, then you want to have an ongoing Croquet simulation where a new "airport participant" can join and use their own data sources to simulate their flights. This should work fine. The answer to b) is also yes. The Croquet simulation would explicitly model "real-world" time (which could be paused, sped-up, etc. as your application demands). Participants could observe the passage of time in the island; for example, when a certain time is reached, a new plane can take off (based on the flight info in that airports local data source). Does it seem like I understand your scenario properly? If so, then it looks like you can achieve your goals using Croquet. Cheers, Josh On Jun 10, 2007, at 2:53 AM, Enrico Spinielli wrote: > Hi all, > I am writing a prototypical air traffic simulation application. > The sky is partitioned into various entities: airspaces, > traffic volumes, ... > Aircrafts will follow flight plans. > Flight plans are described in 4D (3D + time) thru > entities such as: en-route routes, points, flight levels, > takeoff time, relative times over (points)... > > I would like to have > 1. Croquet participants (robots, not "human" avatars) > representing different (group of) airports > instantiating flight from a local data source (file, db,...) > 2. instantiation should be time driven: a new flight enters > into the simulation at takeoff time as specified in its > flight plan > 3. human avatars will be able to ask for relevant aggregated > information (table/graph of flight counts per hour, ...) > for their geographical area of competence (aerodrome, > airspace). > > Given the above, my questions for Croquet developers/experts are: > a. is it really possible to have a participant which creates > new instances based on local machine information (file, db...)? > If not, do I only have the possibility to create instances in a > centralized way? > b. is there any possibility to define a reference simulation start > time (at island level?) shared by all participants? > Is it OK for example to do it in (a subclass of) > CroquetParticipant? > > Any helps/ideas is welcome > Thanks in advance > Regards > Enrico |
In reply to this post by espin
The "replicated computation" model takes some getting used to. A
"local" file or database is properly thought of as a non-replicated file within the replicated computational world. That means that it can only be *directly* accessed by a non-replicated portion of the computation. So the way to do this in Croquet is to start a non-replicated activity on the machine that has the file or database, and have it communicate events that are replicated to all replicated island instances of a replicated computation. That's the answer to (a). (b) is straightforward - just create a mapping (any one-to-one and onto mapping will do) between simulation time and Croquet time. Such a mapping can be at a relative rate and start time, or even a non-linear mapping. Run the simulation up to the corresponding Croquet time. Enrico Spinielli wrote: > Hi all, > I am writing a prototypical air traffic simulation application. > The sky is partitioned into various entities: airspaces, > traffic volumes, ... > Aircrafts will follow flight plans. > Flight plans are described in 4D (3D + time) thru > entities such as: en-route routes, points, flight levels, > takeoff time, relative times over (points)... > > I would like to have > 1. Croquet participants (robots, not "human" avatars) > representing different (group of) airports > instantiating flight from a local data source (file, db,...) > 2. instantiation should be time driven: a new flight enters > into the simulation at takeoff time as specified in its > flight plan > 3. human avatars will be able to ask for relevant aggregated > information (table/graph of flight counts per hour, ...) > for their geographical area of competence (aerodrome, > airspace). > > Given the above, my questions for Croquet developers/experts are: > a. is it really possible to have a participant which creates > new instances based on local machine information (file, db...)? > If not, do I only have the possibility to create instances in a > centralized way? > b. is there any possibility to define a reference simulation start > time (at island level?) shared by all participants? > Is it OK for example to do it in (a subclass of) > CroquetParticipant? > > Any helps/ideas is welcome > Thanks in advance > Regards > Enrico > > |
In reply to this post by espin
Hi Enrico,
I am working on fuzzy neuro systems; it seems to me that your application can have advantages using this technology. I have developped a framework in Smalltalk that seems quite effective. Could you be interested in trying it into your application ? Lorenzo ----- Original Message ----- From: "Enrico Spinielli" <[hidden email]> To: <[hidden email]> Sent: Sunday, June 10, 2007 11:53 AM Subject: [croquet-dev] [Q] simulation: robotic avatars and time reference > Hi all, > I am writing a prototypical air traffic simulation application. > The sky is partitioned into various entities: airspaces, > traffic volumes, ... > Aircrafts will follow flight plans. > Flight plans are described in 4D (3D + time) thru > entities such as: en-route routes, points, flight levels, > takeoff time, relative times over (points)... > > I would like to have > 1. Croquet participants (robots, not "human" avatars) > representing different (group of) airports > instantiating flight from a local data source (file, db,...) > 2. instantiation should be time driven: a new flight enters > into the simulation at takeoff time as specified in its > flight plan > 3. human avatars will be able to ask for relevant aggregated > information (table/graph of flight counts per hour, ...) > for their geographical area of competence (aerodrome, > airspace). > > Given the above, my questions for Croquet developers/experts are: > a. is it really possible to have a participant which creates > new instances based on local machine information (file, db...)? > If not, do I only have the possibility to create instances in a > centralized way? > b. is there any possibility to define a reference simulation start > time (at island level?) shared by all participants? > Is it OK for example to do it in (a subclass of) > CroquetParticipant? > > Any helps/ideas is welcome > Thanks in advance > Regards > Enrico > |
In reply to this post by Joshua Gargus-2
Hi Joshua,
On 6/10/07, Joshua Gargus <[hidden email]> wrote: > That's an interesting application! > > The answer to a) is yes. If I understand you properly, then you want > to have an ongoing Croquet simulation where a new "airport > participant" can join and use their own data sources to simulate > their flights. This should work fine. You got perfectly. It should also be interesting having other stakeholders contributing to the simulation, for example airspace designers which change the shape of the infrastructure (airspaces, sectors, route...) to gain capacity (more flights per our per sector) and/or safety (less sector handovers...). If you then turn it all upside down, you can have the real thing being fed by up-to-the-minute events (flight plans, live updates to relevant aeronautical information entities [sector/runway capacities, restrictions...]) and one/many parallel disposable simulations where you play with some scenario/s so as to choose the best one (minimum overall delays for example). I want to start from a simple but significant enough simulation and turn it upside down. > > The answer to b) is also yes. The Croquet simulation would > explicitly model "real-world" time (which could be paused, sped-up, > etc. as your application demands). Participants could observe the > passage of time in the island; for example, when a certain time is > reached, a new plane can take off (based on the flight info in that > airports local data source). > > Does it seem like I understand your scenario properly? you got it perfectly. > If so, then > it looks like you can achieve your goals using Croquet. I'll now dig into the evil details ;-) > > Cheers, > Josh Thanks and bye Enrico > > > On Jun 10, 2007, at 2:53 AM, Enrico Spinielli wrote: > > > Hi all, > > I am writing a prototypical air traffic simulation application. > > The sky is partitioned into various entities: airspaces, > > traffic volumes, ... > > Aircrafts will follow flight plans. > > Flight plans are described in 4D (3D + time) thru > > entities such as: en-route routes, points, flight levels, > > takeoff time, relative times over (points)... > > > > I would like to have > > 1. Croquet participants (robots, not "human" avatars) > > representing different (group of) airports > > instantiating flight from a local data source (file, db,...) > > 2. instantiation should be time driven: a new flight enters > > into the simulation at takeoff time as specified in its > > flight plan > > 3. human avatars will be able to ask for relevant aggregated > > information (table/graph of flight counts per hour, ...) > > for their geographical area of competence (aerodrome, > > airspace). > > > > Given the above, my questions for Croquet developers/experts are: > > a. is it really possible to have a participant which creates > > new instances based on local machine information (file, db...)? > > If not, do I only have the possibility to create instances in a > > centralized way? > > b. is there any possibility to define a reference simulation start > > time (at island level?) shared by all participants? > > Is it OK for example to do it in (a subclass of) > > CroquetParticipant? > > > > Any helps/ideas is welcome > > Thanks in advance > > Regards > > Enrico > > |
In reply to this post by David P. Reed
Hello David,
On 6/10/07, David P. Reed <[hidden email]> wrote: > The "replicated computation" model takes some getting used to. A > "local" file or database is properly thought of as a non-replicated file > within the replicated computational world. That means that it can only > be *directly* accessed by a non-replicated portion of the computation. > So the way to do this in Croquet is to start a non-replicated activity > on the machine that has the file or database, and have it communicate > events that are replicated to all replicated island instances of a > replicated computation. > > That's the answer to (a). External non-replicated messages are extremely dangerous and must be avoided. They do play a role, but it is extremely rare that anyone will ever have a need to make use of this mechanism. The problem is obviously that if a non-replicated message is executed and happens to modify the state of an Island it breaks the determinism the Island shares with the other replicated copies. We do use such non-replicated message when rendering the contents of an Island, but this is extremely well controlled.
So I have to be extremely careful and probably take inspiration form the coderendering for local participant: for example CroquetHarness>>setupLocal in the SDK (where a non-replicated portal and overlay are created to serve the local participant) [1] Island Time in Croquet's System Overview http://croquetconsortium.org/index.php/System_Overview#Island_Time > > (b) is straightforward - just create a mapping (any one-to-one and onto > mapping will do) between simulation time and Croquet time. Such a > mapping can be at a relative rate and start time, or even a non-linear > mapping. Run the simulation up to the corresponding Croquet time. This boils down to keep some global simulation counter (simulation time initialized with island time at the start of the simulation) and use Croquet time, aka TIsland>>time, doesn't it? Thanks for your reply Bye Enrico > > > Enrico Spinielli wrote: > > Hi all, > > I am writing a prototypical air traffic simulation application. > > The sky is partitioned into various entities: airspaces, > > traffic volumes, ... > > Aircrafts will follow flight plans. > > Flight plans are described in 4D (3D + time) thru > > entities such as: en-route routes, points, flight levels, > > takeoff time, relative times over (points)... > > > > I would like to have > > 1. Croquet participants (robots, not "human" avatars) > > representing different (group of) airports > > instantiating flight from a local data source (file, db,...) > > 2. instantiation should be time driven: a new flight enters > > into the simulation at takeoff time as specified in its > > flight plan > > 3. human avatars will be able to ask for relevant aggregated > > information (table/graph of flight counts per hour, ...) > > for their geographical area of competence (aerodrome, > > airspace). > > > > Given the above, my questions for Croquet developers/experts are: > > a. is it really possible to have a participant which creates > > new instances based on local machine information (file, db...)? > > If not, do I only have the possibility to create instances in a > > centralized way? > > b. is there any possibility to define a reference simulation start > > time (at island level?) shared by all participants? > > Is it OK for example to do it in (a subclass of) > > CroquetParticipant? > > > > Any helps/ideas is welcome > > Thanks in advance > > Regards > > Enrico > > > > > |
On Jun 12, 2007, at 3:33 PM, Enrico Spinielli wrote: Hello David, It's only non-replicated messages sent to replicated (on-island) objects that are dangerous. Non-replicated messages are safely sent outside of the island all the time. For example, keyboard events run though quite a bit of Squeak/Morphic code before they result in replicated Croquet events. As another example, take a look at the webcam code in the SDK. When a new video frame is grabbed, a replicated message is sent into the island with the contents of the frame (this should be quite similar to noticing that some relevant flight-plan event should occur, and sending the appropriate replicated message); this is perfectly safe. > Josh
|
In reply to this post by espin
I think of correct Croquet applications as having two kinds of non-
replicated computation: I) Things That Don't Matter. Look but don't touch. This is how rendering works. You can do pretty much whatever you want if you don't actually change anything in the Island. II) Things That Do Matter. A system with no input is pretty boring. The way we inject input into the system is to have non-replicated computation (e.g., a user interface on one participant) send a message to an object in the Island. Croquet automatically replicates that message to all participants. So my keyboard and mouse are not replicated, nor are the computation that surrounds them. But this computation eventually results in one or more replicated messages. Your application is simply replacing the keyboard/mouse computation with some other set of non-replicated computation that uses a database. That is, they're "Things That Do Matter." Inputs. Croquet is designed to make this fairly easy to do (e.g., it is a network architecture that takes care of replicating the to-Island messages for you). By contrast, the passage you quoted can be thought of as scaring you off from trying to do stuff that you think are "Things That Don't Matter." I don't think that's the case here. I sometimes LOOSELY think of the above as: non-replicated stuff producing replicated inputs = OK non-replicated output = be careful non-replicated side-effects to Island = NEVER On Jun 12, 2007, at 5:33 PM, Enrico Spinielli wrote: > Hello David, > > On 6/10/07, David P. Reed <[hidden email]> wrote: > > The "replicated computation" model takes some getting used to. A > > "local" file or database is properly thought of as a non- > replicated file > > within the replicated computational world. That means that it > can only > > be *directly* accessed by a non-replicated portion of the > computation. > > So the way to do this in Croquet is to start a non-replicated > activity > > on the machine that has the file or database, and have it > communicate > > events that are replicated to all replicated island instances of a > > replicated computation. > > > > That's the answer to (a). > According to 'Island Time' section in Croquet's 'System Overview' [1] > External non-replicated messages are extremely dangerous and must > be avoided. They do play a role, but it is extremely rare that > anyone will ever have a need to make use of this mechanism. The > problem is obviously that if a non-replicated message is executed > and happens to modify the state of an Island it breaks the > determinism the Island shares with the other replicated copies. We > do use such non-replicated message when rendering the contents of > an Island, but this is extremely well controlled. > So I have to be extremely careful and probably take inspiration > form the code > rendering for local participant: for example > CroquetHarness>>setupLocal in the SDK > (where a non-replicated portal and overlay are created to serve the > local participant) > > [1] Island Time in Croquet's System Overview > http://croquetconsortium.org/index.php/System_Overview#Island_Time > > > > > (b) is straightforward - just create a mapping (any one-to-one > and onto > > mapping will do) between simulation time and Croquet time. Such a > > mapping can be at a relative rate and start time, or even a non- > linear > > mapping. Run the simulation up to the corresponding Croquet time. > > This boils down to keep some global simulation counter (simulation > time > initialized with island time at the start of the simulation) and use > Croquet time, aka TIsland>>time, doesn't it? > > Thanks for your reply > Bye > Enrico > > > > > > > > Enrico Spinielli wrote: > > > Hi all, > > > I am writing a prototypical air traffic simulation application. > > > The sky is partitioned into various entities: airspaces, > > > traffic volumes, ... > > > Aircrafts will follow flight plans. > > > Flight plans are described in 4D (3D + time) thru > > > entities such as: en-route routes, points, flight levels, > > > takeoff time, relative times over (points)... > > > > > > I would like to have > > > 1. Croquet participants (robots, not "human" avatars) > > > representing different (group of) airports > > > instantiating flight from a local data source (file, db,...) > > > 2. instantiation should be time driven: a new flight enters > > > into the simulation at takeoff time as specified in its > > > flight plan > > > 3. human avatars will be able to ask for relevant aggregated > > > information (table/graph of flight counts per hour, ...) > > > for their geographical area of competence (aerodrome, > > > airspace). > > > > > > Given the above, my questions for Croquet developers/experts are: > > > a. is it really possible to have a participant which creates > > > new instances based on local machine information (file, db...)? > > > If not, do I only have the possibility to create instances in a > > > centralized way? > > > b. is there any possibility to define a reference simulation start > > > time (at island level?) shared by all participants? > > > Is it OK for example to do it in (a subclass of) > > > CroquetParticipant? > > > > > > Any helps/ideas is welcome > > > Thanks in advance > > > Regards > > > Enrico > > > > > > > > |
In reply to this post by Lorenzo
Hi Lorenzo,
thanks for you offer but for now I plan to keep things really simple. I wasn't even thinking about fuzzy logic mainly because I would like to drive the simulation from existing flight plans without the need to create/validate them against the relevant aeronautical entities (open/closed routes, existence of referred points/SID/STAR/...). With the little details you provided, the application to flight plan definition is the first application of fuzzy logic that comes to my mind...I am probably off mark, sorry for that. Maybe more details will help to understand further. Bye and thanks again Enrico On 6/11/07, Lorenzo Schiavina <[hidden email]> wrote: > Hi Enrico, > > I am working on fuzzy neuro systems; it seems to me that your application > can have advantages using this technology. > > I have developped a framework in Smalltalk that seems quite effective. > > Could you be interested in trying it into your application ? > > Lorenzo > ----- Original Message ----- > From: "Enrico Spinielli" <[hidden email]> > To: <[hidden email]> > Sent: Sunday, June 10, 2007 11:53 AM > Subject: [croquet-dev] [Q] simulation: robotic avatars and time reference > > > > Hi all, > > I am writing a prototypical air traffic simulation application. > > The sky is partitioned into various entities: airspaces, > > traffic volumes, ... > > Aircrafts will follow flight plans. > > Flight plans are described in 4D (3D + time) thru > > entities such as: en-route routes, points, flight levels, > > takeoff time, relative times over (points)... > > > > I would like to have > > 1. Croquet participants (robots, not "human" avatars) > > representing different (group of) airports > > instantiating flight from a local data source (file, db,...) > > 2. instantiation should be time driven: a new flight enters > > into the simulation at takeoff time as specified in its > > flight plan > > 3. human avatars will be able to ask for relevant aggregated > > information (table/graph of flight counts per hour, ...) > > for their geographical area of competence (aerodrome, > > airspace). > > > > Given the above, my questions for Croquet developers/experts are: > > a. is it really possible to have a participant which creates > > new instances based on local machine information (file, db...)? > > If not, do I only have the possibility to create instances in a > > centralized way? > > b. is there any possibility to define a reference simulation start > > time (at island level?) shared by all participants? > > Is it OK for example to do it in (a subclass of) > > CroquetParticipant? > > > > Any helps/ideas is welcome > > Thanks in advance > > Regards > > Enrico > > > > |
In reply to this post by Joshua Gargus-2
Hi Joshua,
thanks for the clarification and hints about where to take inspiration in Croquet image. When thinking about this simulation I was sort of thinking about a "robotic avatar" as a generator of local events, i.e. flights taking off from a certain aerodrome... keyboard events, i.e. pressing a button to create a flight instance, was my embrio of idea. I got better food for thought (and code snippets to study) from all the very helpful replies. Thanks Bye Enrico On 6/13/07, Joshua Gargus <[hidden email]> wrote:
|
In reply to this post by Howard Stearns
Hi Howard,
On 6/13/07, Howard Stearns <[hidden email]> wrote: I think of correct Croquet applications as having two kinds of non- The way we inject input into the system is to have non-replicated I get your point about 'no input' = 'boring', but even systems with no input can be interesting...what about books? Or TV (zapping often the only way to make it interesting!-)? Theater? Soccer match (wouldn't it be fun being able to go and play with your team?)?... Contents make them interesting, interaction could potentially make them more interesting! But do not take me wrongly, I am actually digressing probably due to the fact it's time for me to go and sleep!!!!!!!!!!!!!! Your application is simply replacing the keyboard/mouse computation This further clarifies it. Thanks. I sometimes LOOSELY think of the above as: Excellent summary Thanks again and bye Enrico On Jun 12, 2007, at 5:33 PM, Enrico Spinielli wrote: |
Free forum by Nabble | Edit this page |