I ported NASA's open source Core Flight Software (CFS) to the AR Drone 2 quadcopter. I'm looking for an open source alternative to the ground displays system I'm using now. I wrote my own prototype system, but think a ARINC 661 display would be more appropriate. I played with this ARINC 661 project a couple years back. How mature is this project now? Do you think I could use this for my project? Is it possible to stream video to the simulated head and overlay graphical primitives over it? Is there a good API to interface this to a live data stream?
We used extensively the Swing version of the J661 Server (0.57 branch) for several "big" projects recently (the last less than one year ago), and we still use it in "production-like" smaller projects, I think it's mature enough for what you want to do. We also used Maps for these, however the way we used it to put it over an external content was to draw the Swing content in OpenGL (using jogl as middleware) in an external context, and even if it worked, it's also tricky to manage because any lingering problem in the OpenGL stack before calling the J661 layer can lead to problems.
We now prefer to draw the J661 stuff on a transparent window over the external graphical context, it's much more simple, and it is supported since Java 7 (and Windows 7 for example). We did not see graphical artifacts while doing this. However we only support it on the 1.0 branch (which is now our trunk).
Apart from that, we have decoupled the Server from its rendering Layer, we are still supporting Swing but we we are now working heavily on a JavaFX rendering Layer, which is now beginning to work well (even if it has much less history than our Swing one). How we still have work to do to make the Editor work correctly when using the JavaFX rendering Layer.
As for videos, I think it shall be possible to do what you want to do, at least with JavaFX (which support videos natively), but we have not worked on this area yet.
As for interfacing to a live Data Stream, we have two kinds of APIs:
- a scripted one, using an XML file and setting relationships between the system variables and the ARINC 661 atributs (taking care of the ARINC 661 protocol transparently for the user). This API allows you to create your our "data provider", which is a kind of Codec for your own data stream.
- a much lower level one, which allows to send whatever command you want to the Server (again taking care of the protocol). But in this case you have to take care yourself of the data stream.
The second API is much more mature than the first, because it is heavily used in the generic ARINC 661 Client. The first one is working, but maybe lack properties you would need for what you want to do.
Also the way to define the Look and Feel in JavaFX (if you need to do this kind of thing) is much more simple than in Swing it's based on CSS.