New copter indoor flight mode

I am missing flight mode that would make slow indoor flying (cave mapping and exploring) in narrow passages easier.

Here is how it would work: drone has gimbal that allows camera pitch ± 90 deg relatively to the horizontal plane. So you can look straight up or down or any angle in between, if you want to. When pushing elevator stick forward, drone would move in direction where camera is looking to: say camera is tilted 45 deg up, controller would command drone to go 50% up and 50% forward with just one stick movement. If camera was looking straight down, pushing elevator stick would move drone straight down. So forward would be always in direction where camera is looking. No GPS is used.

Reason for that is, when flying say straight down, I have to point camera in that direction to see where I’m flying to and then I have to switch my brain to going down mode since all sticks acts differently relatively to what I see. It causes drone to bump walls very often. Which is not exactly what I want to do.

I don’t think doing that is feassible for a few reasons

  1. Velocity control requires GPS or at least optical flow, GPS doesn’t work in caves for obvious reasons and OF will struggle due to lighting conditions and uneven surfaces. You would need some more advanced SLAM system capable of handling dynamic and complex illumination changes.
  2. What should other axes (throttle, roll, yaw) do?
  3. What should happen if the gimbal id in an unstabilized mode?
  4. How mode switch control input should be handled as mapping likely is significantly different from other modes?
2 Likes
  1. Yes, SLAM would be used. Drone would be equipped with two 2d lidars in horizontal and vertical planes and one stereo camera. Which might replace optical flow which would not work most of the time, since main usage of this drone is in vertical spaces, so there is usually nothing to see below.

  2. Other controls don’t need to change. Yaw would be used to change horizontal direction. roll would not be used much since you’d be moving in direction you don’t see. The same for the throttle.

  3. If software can’t recognize camera position, it should fall back to preset default flight mode. Or user have to switch mode manually. Maybe second downwards looking emergency landing camera might be a good solution for that. In emergency scenario all controls should work as usual. I have to land half-blinded straight down.

  4. Mapping of 3D space will be manual. I’m far away from autonomous indoor mapping flight right now. There are many obstacles that lidar don’t recognize (ropes, ladders, stalagmites…). If autonomous flight would be the case, autonomous software would not need “human friendly” one stick mode. So switching during mapping session would be manual anyway.


  1. Yaw is fine.
    Roll is expected to cause side to side movement, I would keep that. For example to counter draft faster than controller can or to reposition during maneuvers you really don’t want to have to rotate and adjust camera just to move sideways.
    Throttle, how will it be mixed with pitch tick when camera is looking up or down?
  2. I wasn’t talking about lack of camera attitude information. I was talking about controls response when camera is fixed relative to vehicle body and not stabilized relative to horizon. Control logic as described my cause unexpected coupling as attitude changes change control demand and vice versa.
  3. control mapping is how control input is translated into desired response of the copter.

I would focus on pretend 6-DoF control mode as it may be more flexible and useful, for example in cinematography. So ditch the cave for now (SLAM was already done a few times) and focus on 6DoF controls for gimbal drone.

I am a speleologist. I work on project which goal is to create a 3D mapping drone for mapping areas which are hard or impossible to reach and to reuse mapping sensors as a handheld 3D scanner. I have some experience with DJI drone flying in cave. But it has many limitations. So I am building a new one from scratch to fulfill all my needs. Of course that such thing already exist. But just stating that does not help me with the project.

You could create a new flight mode in LUA and give it whatever charactistics you want. …

https://ardupilot.org/copter/docs/common-lua-scripts.html

Controlling a plane using LUA [ also has copter tips ]

https://ardupilot.org/plane/docs/common-scripting-aerobatics.html

you should absolutely test/develop this in SITL first. crashing a ‘sitl’ copter costs nothing. :slight_smile:

lots of example lua code to copy and reuse bits from… the ‘examples’ folder contains undocumented ‘simpler’ stuff that’s main goal is to use/test/try a specific binding…

the ‘applets’ folder has documented scripts that try to solve a specific problem, and are thus oftem more ‘complete’ …

1 Like

Thanks a lot. Glad to see someone who is constructive and helpful. Yes, I am gonna crash many copters in SITL :smiley: