GPS denied / Fully indoor Navigation with VIO

Hi px4 developers and Users,
we are currently having issues with PX4 to do fully indoor autonomous navigation as if it would be in outdoor (with GPS). Bellow you may find a description of the setup and issue we are facing.

Setup :

  • Nvidia Jetson Tx2 running ROS Melodic
  • Hollybro Durandal(v1.0 w/ STM32H743) running PX4 from Master.

Objective:
The main objective is to do navigation with VIO(provided by intel T265) over an on-board companion computer(in my case Nvidia Jetson) in fully indoor environment(no GPS connected at all).

Issue Description:
I have all setup correctly and as advised in several forums and https://dev.px4.io/v1.9.0/en/ros/external_position_estimation.html
For the purpose I used the VIO ros package from https://github.com/Auterion/VIO to do the transformation from the T265 coordinates to ENU and finally to NED.
The pose data is transmitted and received proper by PX4. Its possible to see the frames arriving on the LOCAL_POSITION_NED.
On Rviz is possible to see the drone moving around and coordinates are properly displayed.

The issue seems to be that all the PX4 autonomous flight behavior are performed in global coordinates(@baumanta correct me if I am wrong).
So, of course, I am not able to get the global position or home position(unless this is faked, I assume ).
So at the moment, we are kinda stuck on what could be done in order to achieve our objectives with PX4. I know that with Ardupilot this is already possible.

Alternative solution:
An alternative would be to perform all operations in Offboard mode. But then I assume I cannot use QGroundControl to upload missions(as easy at least) directly to the FC. This would have to be done through the companion pc.

Any hints or help would be appreciated.

Greeting,
Pedro

Hi, you might be fine if you set LPE_FAKE_ORIGIN to 1. See the discussion here.

As for designing and uploading missions via QGC: The coords(waypoints, etc) are also global. So not sure if that would work without pre-/post-processing the mission-data for your setup/use-case. But somebody correct me here if im wrong.

In my projects I run missions & flight path planning completely offboard. It’s more work but that way I’m in control of all the nasty bits.

Yes, currently PX4 does not support any of tha AUTO (Mission, RTL, etc…) modes in local coordinate frame. I believe the reason being that they are fundamentally handled in the navigator module, which operates in global coordinates (I could be wrong there, I’m not too familiar with navigator).

You mention that you’re stuck in “achieving your objectives”, but you didn’t explicitly state what those are. Flying an indoor mission? Then maybe just faking GPS will be easier than re-writing the whole mission pipeline to support local missions. How would you plan such a mission? It starts with the missing UI on QGC, which would need to make some assumptions on local origin in a global context. (Or just on empty background?)

@nicovanduijn Thanks for your reply. My idea was to use in a preliminary stage the Qgroundcontrol to establish missions. But since that is yet not possible in PX4 I move on to perform everything int OffBoard mode. All the mapping, route planning, collision avoidance etc is going to be made under ROS.