Indoor Mission Plan (No GPS)

Hi all. I’ve begun research for a submersible drone project using ArduCopter and possibly also dronekit-python. I am trying to evaluate whether a remotely controlled or autonomous approach is best.

In the autonomous case, the drone would navigate itself above a pool, lower its altitude until in contact with the water’s surface, and perform a custom action.

The drone will operate indoors, so without any of this non-GPS navigation hardware, is there any way to predefine a mission plan, using dead-reckoning? The motion need not be very accurate. The drone can afford to drift laterally to some degree without issue, and the drone doesn’t need to maintain any specific altitude - just ascend and descend at a (relatively) constant speed.

I understand that Mission Planner uses AUTO mode, which requires GPS as a precondition, so I’ve ruled that out. I’ve considered using channel overrides with dronekit-python to set the throttle values via script. But have read that this is not recommended. Is there a better way to achieve simple navigation indoors, without additional equipment? Or am I simply better off using RC?

Any tips or suggestions would be greatly appreciated, as I am new to ArduPilot in general.


Ardupilot will use dead-reckoning if no external sensors are available. You’ll need to disable the arming checks for GPS though.

It should be noted that relying solely on an IMU will generally give you <90 seconds of accurate positioning (exact value depends on sensor type and vibration levels) before breaking down.

Running without GPS requires you to set the “EKF Origin” before arming. This tells ArduPilot the lon/lat of it’s initial starting point, as ArduPilot’s navigation algorithms work in lon/lat format.

Mission Planner is the GCS. This is different to Ardupilot, which runs on the vehicle itself. AUTO mode will work fine without a GPS, subject to the conditions I described above.

Why not use ArduSub instead of ArduCopter?