Removes custom relative transformation topics and uses tf2 instead to make the application easier to maintain and debug. The reference frame is discontinuous so tf2 interpolation is not applied to it to avoid large jumps in the position estimate whenever the reference bounding box is updated.
Redesigns ROS architecture to be more distributed and easier to maintain. Roughly speaking the new TransformNode and BBoxNode are split out from GISNode, while the old CVNode is now PoseNode.
Reduces latency by removing torch-serve Docker Compose service and bringing torch inside a ROS node (PoseNode) to take advantage of shared memory. Earlier design had good separation between deep learning dependency chain and other dependencies but introduced too much latency as images had to be serialized to be sent over to torch server.
All elevation computations besides AGL are externalized to within the mock GPS node. Having to figure out AMSL and ellipsoidal elevation/altitude belongs to the GNSS problem domain, and in this MR is not included in the core logic which is only concerned with the local frames and AGL altitude. At the same time some altitude/elevation related non-core capability is stripped out to have less code to maintain.
Removes a lot of legacy code e.g. classes in the old Data module.
Adds a QGIS service and a new PostGIS back end to make debugging of output easier. The PostGIS backend end should probably be used for mapserver in the future to improve modularity.
Known issues:
ArduPilot Docker Compose service is stale/broken, needs significant rework
GPS blending in the demo should work but fully killing the simulated GPS in the demo scenario possibly triggers failsafes because PX4 EKF2 seems to now require a velocity estimate which GISNav currently does not provide
tf2
instead to make the application easier to maintain and debug. The reference frame is discontinuous sotf2
interpolation is not applied to it to avoid large jumps in the position estimate whenever the reference bounding box is updated.TransformNode
andBBoxNode
are split out fromGISNode
, while the oldCVNode
is nowPoseNode
.torch-serve
Docker Compose service and bringing torch inside a ROS node (PoseNode
) to take advantage of shared memory. Earlier design had good separation between deep learning dependency chain and other dependencies but introduced too much latency as images had to be serialized to be sent over to torch server.mapserver
in the future to improve modularity.Known issues: