Conversation
|
I do not have idea how to install proj on Mac. |
|
Done research, I am little less stupid. I think I understand what’s happening. The GPSA fix is the WGS84 height. So you need to subtract (or add) u to alt to obtain the ellipsoidal height. The data confirms this (from our system): The difference I’m seeing now in HDMapping is due to the fact that the mean sea level used in NMEA does not match the mean sea level used in ISOK. |
Michal --> this is very significant step to City Level mapping! Many THX |
7604857 to
1f0ccde
Compare
|
I had to update runner to ubuntu 24.04 - 22.04 had ancient proj in apt. |
|
It is ready for review! Ready for testing! |
There was a problem hiding this comment.
Pull request overview
This PR integrates the PROJ library into the project to improve GNSS/geographic coordinate conversions and adds UI support for exporting data in multiple coordinate reference systems (with optional geoid models). It also updates CI and build scripts to install/link PROJ and adjusts GNSS usage in pose-graph SLAM to use the newly introduced projected coordinates.
Changes:
- Add PROJ build integration (CMake + 3rd-party binary fetch on Windows; system dependency on Linux) and link it into
coreand the GUI app. - Refactor GNSS loading/projection APIs and migrate internal usage from
x/y/alttoenu_x/enu_y/enu_z. - Update GitHub Actions workflows and Ubuntu dependency scripts to include
libproj-devand use Ubuntu 24.04 runners.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 19 comments.
Show a summary per file
| File | Description |
|---|---|
ubuntu-24.04-apt-requirements.sh |
Adds libproj-dev to Ubuntu apt requirements. |
core/src/pose_graph_loop_closure.cpp |
Switches pose-graph GNSS fusion to use enu_* coordinates. |
core/src/gnss.cpp |
Adds PROJ-based projection/unprojection, geoid discovery, CRT conversion, and migrates GNSS fields to enu_*. |
core/include/gnss.h |
Updates GNSS API and data model (enu_*), adds CRT identifiers and new conversion APIs. |
core/CMakeLists.txt |
Links core targets against PROJ. |
apps/multi_view_tls_registration/multi_view_tls_registration_gui.cpp |
Updates GNSS import/export UI to use new GNSS APIs; adds geoid/CRT export options. |
apps/multi_view_tls_registration/CMakeLists.txt |
Links the GUI executable against PROJ. |
CMakeLists.txt |
Includes new PROJ setup script. |
3rdpartyBinary/Proj/CMakeLists.txt |
Adds PROJ discovery on Linux and prebuilt download on Windows. |
.gitignore |
Ignores additional build directories. |
.github/workflows/python-bindings-linux.yml |
Moves to ubuntu-24.04 and installs libproj-dev. |
.github/workflows/cmake-linux.yml |
Moves to ubuntu-24.04, installs libproj-dev, and adjusts PKG_CONFIG_PATH. |
.github/workflows/cmake-linux-deb.yml |
Moves to ubuntu-24.04 and installs libproj-dev. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Proj is a library for performing cartographic transformations and geodetic computations. This commit integrates proj into the project, allowing for more accurate and flexible handling of geospatial data. The data fron NMEA sequences are projected to local ENU coordinates for GNSS processing. The ellipsoid height is obtained from the NMEA sequences instead of using mean sea level (MSL) height. Added conversion to WPUWG92 and UTM. Old code was kept to prevent breaking changes, but it is marked as deprecated and will be removed in future releases. Signed-off-by: Michał Pełka <michalpelka@gmail.com>

I am publishing current state of proj integration.
It seems to improve quality of geographics conversions (I am comparing it to airborne Lidar).
However I have some misaligment in height (about 3-5 meters):

I am consulting with experts in the field. It seems that is result of GNSS receiver in test data.
About this change:
What need to be done: