Invalid local position

  • Dev Team

    There's the problem, voxl-camera-server is not running. Since it's enabled (and I'm assuming that you didn't stop it yourself) it probably aborted. This is usually due to a hardware issue with one of the camera cables. Can you now paste the output of journalctl -u voxl-camera-server to see what the logs for camera server say.

  • Okay, While I was waiting for your reply I went ahead and checked all of the cables and unplugged and re-plugged all of the cameras on the board and now I am getting this from the services:

     Service Name        |  Enabled  |   Running   |  CPU Usage
     docker-autorun      | Disabled  | Not Running | Not Running
     docker-daemon       | Disabled  | Not Running | Not Running
     modallink-relink    | Disabled  | Not Running | Not Running
     voxl-camera-server  |  Enabled  |   Running   |   7.5%
     voxl-cpu-monitor    |  Enabled  |   Running   |   0.0%
     voxl-dfs-server     |  Enabled  |   Running   |  10.0%
     voxl-imu-server     |  Enabled  |   Running   |   1.9%
     voxl-modem          | Disabled  | Not Running | Not Running
     voxl-qvio-server    |  Enabled  |   Running   |   2.2%
     voxl-streamer       | Disabled  | Not Running | Not Running
     voxl-tag-detector   |  Enabled  |   Running   |   4.1%
     voxl-tflite-server  |  Enabled  |   Running   |   0.0%
     voxl-time-sync      | Disabled  | Not Running | Not Running
     voxl-vision-px4     |  Enabled  |   Running   |   2.0%

  • Dev Team

    Are you still not getting localization data?

  • Still getting invalid local position data

  • Heres the output from QGC:

    nsh> ekf2 status
    INFO  [ekf2] local position: invalid
    INFO  [ekf2] global position: invalid
    INFO  [ekf2] time slip: 0 us
    ekf2: update: 8677 events, 49546us elapsed, 5.71us avg, min 1us max 94us 4.090us rms
    nsh> listener vehicle_visual_odometry
    TOPIC: vehicle_visual_odometry
        timestamp: 431364179  (297.960915 seconds ago)
        timestamp_sample: 431346994  (17185 us before timestamp)
        x: -682.8690
        y: -951.3774
        z: -868.9987
        q: [0.9878, -0.0083, 0.0614, -0.1428]
        q_offset: [0.0000, 0.0000, 0.0000, 0.0000]
        pose_covariance: [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
        vx: 0.0002
        vy: 0.0009
        vz: -0.0032
        rollspeed: 0.0095
        pitchspeed: 0.0000
        yawspeed: 0.0000
        velocity_covariance: [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
        local_frame: 1
        velocity_frame: 3

  • Dev Team

    Do you see data from voxl-inspect-qvio

  • Yes, but it is very iffy, when I have it sitting on my desk and move it around all of the data changes like it should, but then when I move it to the floor or vice versa then it will start giving me the LOW_FEATURES error

     T_imu_wrt_vio (m)   |Roll Pitch Yaw (deg)| state| error_code
       -0.02   -0.01   -0.07|   0.2    0.4    0.2| OKAY | 

  • Dev Team

    Yeah it'll be unstable when its being moved around like that, it's meant to have the service start at the takeoff location and then track initial features on the floor/wall during takeoff. However, this does show that localization data is coming from the VIO service, so the problem is further down the line.

    The two things to look at now are the vvpx4 config file at cat /etc/modalai/voxl-vision-px4.conf and make sure that the QGC stuff is set up properly, and that en_vio and send_vio_to_qgc are both set to true.

    If all of that looks good, then you should run voxl-inspect-pose vvpx4_body_wrt_local to see if the voxl-vision-px4 service is getting the localization data peroperly.

  • I believe that I have the voxl-vision-px4 setup correctly for QGC, here is the conf file:

    yocto:/$ cat /etc/modalai/voxl-vision-px4.conf
     * VOXL Vision PX4 Configuration File
    	"qgc_ip":	"",
    	"en_localhost_mavlink_udp":	true,
    	"en_secondary_qgc":	false,
    	"secondary_qgc_ip":	"",
    	"qgc_udp_port_number":	14550,
    	"localhost_udp_port_number":	14551,
    	"udp_mtu":	512,
    	"en_vio":	true,
    	"en_voa":	false,
    	"en_send_vio_to_qgc":	true,
    	"en_send_voa_to_qgc":	false,
    	"en_set_clock_from_gps":	true,
    	"en_force_onboard_mav1_mode":	true,
    	"en_reset_px4_on_error":	true,
    	"qvio_auto_reset_quality":	0.00050000002374872565,
    	"en_adsb":	false,
    	"adsb_uart_bus":	7,
    	"adsb_uart_baudrate":	57600,
    	"px4_uart_bus":	5,
    	"px4_uart_baudrate":	921600,
    	"offboard_mode":	"figure_eight",
    	"follow_tag_id":	0,
    	"en_tag_fixed_frame":	false,
    	"fixed_frame_filter_len":	5,
    	"en_transform_mavlink_pos_setpoints_from_fixed_frame":	false

    And here is the output for voxl-inspect-pose vvpx4_body_wrt_local:

    timestamp(ms)|     Position (m)     | Roll Pitch Yaw (deg) |    Velocity (m/s)    | angular rate (deg/s) |
          153336 |   0.00  -0.01  -0.09 |   -0.6   11.0   -0.2 |  -0.00   0.00   0.00 |  -0.00  -0.03   0.01 

  • Dev Team

    Yeah that all looks fine, but there's no data in the local_position_ned or either of the odometry messages?

  • In QGC I only have the ODOMETRY data, but there is no local_position_ned tab if that is what you're referring to.

  • Dev Team

    And what happens if you try to put it in position mode?

  • It just tells me "REJECT POSITION CONTROL"

  • Dev Team

    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:

  • Dev Team

    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

  • 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:start-vio.png

    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).

Log in to reply