Invalid local position
I've asked some of our px4 experts what their thoughts are, can you share your px4 params file so we can see what's going on there since this seems to be a px4-side issue.
I couldn't figure out how to share the file through here, so I uploaded them to a drop box:
We noticed that your EKF2 Aid mask is different from what we usually run, did you install the voxl px4 parameters file as here or did you create your own? Can you try to run with our default parameters file and see what happens?
I ran the parameters from the quickstart guide, I also ran the indoor_VIO helper and just changed the aid mask to fit was in the quickstart guide. I reverted it back to its original settings and the drone is still having the same problems.
So I've tried completely resetting the parameters on the drone back to factory and reloading all of the parameters again, but I am still getting invalid local position data.
Also as a small side note, should the tracking camera be inverted? (for example, I move an object from the top of the tracking camera and it shows up from the bottom on the feed)
Do you have a magnetometer connected? We have seen this issue when the px4 ekf doesn't initialize due to missing sensor
Cliff Wong last edited by
Hi Dillion--the reject control on mode switching is from having GPS activated (sounds like you don't have a 3D fix) considering your aid mask is 329. For vio-only flight, the parameters should be this:
If that does not solve it, you'll need to confirm in QGC's nuttx shell that vio message data is getting to PX4:
- In QGC, goto the [mavlink console] under [analysis tools], press [enter] to get a nuttx prompt
- type "uorb top vehicle_visual_odometry" [enter]
- confirm you're getting similar rates like this (key is the rate column)
TOPIC NAME INST #SUB RATE #Q SIZE vehicle_visual_odometry 0 1 30 1 256 vehicle_visual_odometry_aligned 0 0 15 1 256
That will confirm vio data is being processed directly in PX4's EKF module. If not, we'll need to have you setup the video overlay to verify vio data itself (aka verify a mavlink issue).
Since we are attempting to preforming indoor flight using VIO I had disabled the SYS_HAS_MAG and the GPS_1 config like it says in the quickstart guide, so for this reason I didn't have the GPS and magnetometer plugged in. Once I plugged in the GPS and magnetometer the drone had valid position data and we were able to actually fly the drone.
The problem now is that when we flew it (which was outside in the sun which might have caused problems) the drone would take off in position mode very nice for about 5 seconds then it would start to freak out and flying more sporadically which is when we would land the drone. Is this due to the drone being flown outside is the sun or is this some type of calibration issue?
You can initialize properly without mag, but you'll need a ModalAI firmware image on the Flight Core. You can see the v1.10 and 1.11 images here
I found the SYS_HAS_MAG reference in the calibrate cameras page where it also references needing the firmware. I could not find it in a quickstart though. If you have a pointer to that page we would like to make sure it correctly calls out the custom firmware as well as it could be an oversight on our end.
The firmware we shipped the unit with would support this, so maybe you upgraded through QGC or something.
To debug VIO, there are a number of different tools:
This is all assuming you have not modified the location of your tracking camera relative to the IMU. Are you using the Flight Deck mechanical configuration exactly, or has it been modified?
The only thing that we have really modified is the forward distance from the center of gravity which should only be a slight difference. I remember seeing something about changing that in the T_stereo_wrt_body in the voxl-vision-px4 for the collision detection to match the distance from the center of gravity, but that setting does not show up when I look at the voxl-vision-px4, is that what I would need to change to help stabilize my flights?
Am I going to have to add those IMU settings to the voxl-vision-px4.conf like "R_imu_to_body" and "T_imu_wrt_body"? I believe that I'm using the IMU1 but I'm also no sure how to check and see which one is in use currently.