Hello Matteo, This is exactly the kind of functionality I've been eager to explore in NuttX.
I know about PSMQ <https://psmq.bofc.pl/> within NuttX apps, and could be enough. But I believe a tailored publish-subscribe library could allow for sensor publishing and data passing between apps would further our ability to replicate and extend PX4's functionalities. From my experience with ROS and PX4, such a library would streamline inter application communications within NuttX applications. I've reached out to Donny, who worked on the uORB port, to discuss this idea further. Additionally, I'm considering which features from PX4 we might port back into NuttX to increase functionalities and avoid being tied to their ecosystem (like the parameter system in PX4). I also think incorporating an optional serializer/deserializer (maybe something like Nanopb <https://jpa.kapsi.fi/nanopb/>) could be beneficial, especially if different applications use various programming languages. This would facilitate smoother communication and make implementing publish/subscribe between NuttX more straightforward. I agree that a fusion node, as you described, could be highly beneficial for the NuttX community. I'd love to collaborate or help in any way on what would be possible with uORB inside NuttX. Looking forward to hearing thoughts from the community. Best regards, Ludovic Vanasse ludovicvana...@gmail.com +1(514) 475-0447 On Tue, Jan 28, 2025 at 5:34 PM Matteo Golin <matteo.go...@gmail.com> wrote: > Hello again everyone, > > I was going through some of the NuttX documentation for UORB again since > InSpace is using it in our applications and > also to mock our sensors to see our system response in different scenarios > (we are planning to use a modified fakesensor > example). > > I noticed an intriguing application mentioned in the documentation that it > would be possible to create a UORB node that > subscribes to other sensor nodes and performs fusion/creates a new output. > The docs mention PX4's use of this and links > to this graph: https://docs.px4.io/main/en/middleware/uorb_graph.html > > For our application, we would be doing things such as calculating altitude > from barometer data, or roll/pitch/yaw > measurements from IMU + magnetometer data. I am thinking that such a node > might become useful for other NuttX users, but > I'm not sure where in the source tree it would live (or if it belongs > there). It's not a sensor so I don't think it > would go in `drivers/sensors`, but I'm not too sure. My reasoning is that > since a "barometer topic" under UORB has a > standard interface, it would be possible to register a altitude fusion > node which pulls from any barometer node, > irregardless of the barometer type. If the user needs to add more > configuration to the barometer, they could use > `orb_ioctl` commands to modify the sensor settings from their application > and these changes would bubble up to any > fusion nodes. > > What are your thoughts on this? Would something like this be beneficial > for NuttX? > > -- > Matteo Golin >