Skip to content
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

Service architecture and networking redesign #127

Merged
merged 239 commits into from
Aug 1, 2024
Merged

Conversation

hmakelin
Copy link
Owner

@hmakelin hmakelin commented Aug 1, 2024

  • Redesigns service architecture to be more maintainable by splitting the large Compose file into multiple smaller files.
  • New CLI tool gnc to simplify management of services. The tool is a wrapper around docker compose that removes the need to pick the right combination of Compose overrides on supported platforms.
  • Introduces physical separation to networking between simulation host and companion computer to make deployment on companion computer easier.
  • Updated documentation, especially around HIL simulation as we now have better separation in networking and are also attempting to support running GISNav without GPU (see note on VO below).
  • Implements visual odometry (VO) to bridge gaps in deep matching (e.g. featureless terrain or slow matching when running without GPU)
  • Some optimizations around caching of keypoints to improve performance: shallow (VO) and deep matching share the same keypoints (SIFT) to enable reuse. Does not yet cache precomputed keypoints for reference map rasters in the onboard GIS but makes it easier to do that in the future to further increase performance. SIFT has wide support and seems to have better rotational invariance than the old DISK features so we need to rotate the map less frequently. Introduces MultiThreadedExecutor to remove the bottleneck of running deep matching and shallow matching (VO) on the same CPU core if running on CPU (e.g. Raspberry Pi).

…pped and only remove them when the package is removed
Copies over ROS package source code so that the .deb package can build the gisnav image on its own. Makes the
package independent of any external container registry.

Disables running px4 service by default (introduces docker-compose.companion.yaml override) as it is not intended
to be run on the companion computer where gisnav-compose is intended to be installed.

Makes postrm script more robust to missing files, missing commands etc.
Includes dummy docs folder and vitepress/package.json to ensure gisnav image Dockerfile script goes through.

Uses .gitignore to ensure rsync does not copy over unintended files to the Debian package
…rted with VO

This ensures we can use VO even when no global matches have yet arrived.

Also helps with debugging when gisnav_map and gisnav_odom are initialized to match the FCU (MAVROS) published equivalents
Paves way for significantly improving performance by (1) sharing keypoints for query image between LightGlue and visual odometry, and by (2) caching rotation independent SIFT keypoints for map tiles (DISK is not rotation independent)
This enables supporting cached precomputed keypoints and descriptors for reference maps later
This change needed because ORB features were swapped for SIFT features
Earlier the recomputation would be triggered if a new OrthoImage message was received even if the new map was the same as the old one
…d reference raster from updating with camera field of view movement
Ideally model parameters would be adjusted dynamically based on detected matching speed at runtime regardless of CPU/GPU
System is developed and tested on Raspberry Pi 5 but recommend Jetson Orin Nano instead even though not tested on that board.

Performance much better using GPU
@hmakelin hmakelin changed the title Service architecture redesign Service architecture and networking redesign Aug 1, 2024
@hmakelin hmakelin merged commit bd5482e into master Aug 1, 2024
@hmakelin hmakelin deleted the sift-keypoints branch August 1, 2024 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant