Indoor flight with external navigation data


I’ve corrected some problems that I had with my setup and it is working now. It oscillates a little but it is holding position. Check this video.
At the moment I’m sending all information (x,y,z,roll,pitch,yaw) but I’ll try with x,y,z and yaw, don’t see the value of roll and pitch in this application. I’ll let you know if it works.
Please let me know if you made any progress with your setup.
Thanks :slight_smile:

1 Like

@samy74 and @guglie, did you manage to fly with only providing (x,y,z)? Did setting the angles to zero work?
I have the same request. I need to fly indoors and have only (x,y,z) data and no angles at the moment.


Didn’t try it yet. I believe you’ll need at least the yaw to fly indoor. I’ll try it next week and see the behavior without external pitch and roll.

1 Like

@chobitsfan: I will be using a clip from your video for an intro. Is it ok for you?

@chobitsfan: I will be using a clip from your video for an intro. Is it ok for you?

hi @tiffo: Sure, it is shared in Creative Commons

1 Like

I’ve tested this motion capture setup. For me it is working well as expected, but only if origin is set with SET_GPS_GLOBAL_ORIGIN, otherwise not only I can’t use guided or auto mode but I can’t read the position anywhere in telemetry or logs.

I’ve encountered a few issues (more relate to position controller) with my copter explained here with video and log. Maybe you know how to deal with them :slight_smile:

@chobitsfan, I’ve created this PR over in mavros to enable the mocap_pose_estimate plugin for ArduPilot by default. This is the right thing to do right?

1 Like

hi @rmackay9 That is really helpful! Thank you very much :slight_smile:

I test both bebop2 and skyviper v2450. running ardupilot master, in the same motion capture system setup. It is strange that bebop2 is more stable than skyviper. Skyviper seems a little toilet bowl which is not possible because I do not use compass

bebop2_indoor.BIN (595.7 KB)

skyviper_indoor.BIN (829.1 KB)


Thats fantastic @chobitsfan. I am trying to do the exact same thing for my skyviper drone using Aruco markers but so far I have been unsuccessful. Can you please tell me what parameters you use?

Here is my issue: Using Vision Position Estimate for Skyviper-v2450 running ArduCopter-3.7-dev

My skyviper oscillates up and down and constantly gives warning that battery is low(even if it’s not)! And then climbs up to hit the roof. I don’t understand this behavior.

Do you set the take off height? And what mode are you in when you take off? I keep my drone in guided mode but when I keep a takeoff command it probably switches to loiter. It doesn’t even takeoff to the commanded altitude/height. It just takes off, drifts a bit and then climbs up to hit the roof. I will post a video later.

@kkojima, nice video. What do you refer to when you say “poor man’s indoor positioning system”? Does it refer to aruco markers or april tags?

I’m using high bright LEDs as markers

which can give a few point images only. The positioning system uses them and the roll&pitch data from ardupilot to estimate the heading and position:


@kkojima that’s amazing!

Hey @chobitsfan, which firmware are you running on your skyviper? Does it show the warning that battery is low(even if it’s not!) when you fly it?

I run current master (3.7-dev) on my skyviper. Since I fly indoor, I usually ignore battery warning

1 Like

@chobitsfan, How do you fly your skyviper? Do you give it a setpoint to track or you just give it a takeoff signal? And which mode are you in when you are flying your skyviper using motion capture? Is it guided mode or loiter mode?

@chobitsfan, can you please share with me the parameter list you used for flying skyviper with motion capture data?

After applying #9485 and #9505 and fine tune some PID. loiter performance is better now, about ~10cm

code branch used is

@Subodh_Mishra this is my parameters for skyviper v2450 skyviper_extnav.parm (22.9 KB)


Thank you so much. I will look it up.

@chobitsfan, I get the following errors while building your firmware:

../../ArduCopter/toy_mode.cpp: In member function 'void ToyMode::update()':
../../ArduCopter/toy_mode.cpp:209:24: error: 'class AP_MotorsHeli' has no member named 'set_thrust_compensation_callback'
         copter.motors->set_thrust_compensation_callback(FUNCTOR_BIND_MEMBER(&ToyMode::thrust_limiting, void, float *, uint8_t));
compilation terminated due to -Wfatal-errors.

[541/985] Compiling ArduCopter/esc_calibration.cpp
Waf: Leaving directory `/home/subodh/github-projects/chobitsfan/ardupilot/build/skyviper-v2450-px4'
Build failed

Any suggestions to make this work?