snav fails to find libsensor_imu.so



  • Hi All,

    I installed the snav-modalai_1.3.0_8x96.ipk on my voxl flight deck. When I ran the "bash configure_snav.sh", the process failed when the script was trying to calibrate the imu sensor via "snav_calibration_manager -s". Here is the error message:
    932aa1b1-f599-4bac-b5b4-e15ecb701adb-image.png

    I checked the /usr/lib/ and there is no libsensor_imu.so in the folder.

    Any help will be appreciated.

    Best,
    Rui


  • Dev Team

    Hi Rui,

    A few things..

    • there have been a few updates in SNAV (mainly to support our new ESC, nothing major). Please use the latest release in https://developer.modalai.com/asset : snav-modalai_1.4.1_8x96.ipk
    • in order to run SNAV, you ineed to install imu_app package opkg install imu_app. This may remove some package like voxl-imu-server, since they can't run at the same time. imu_app package provides access to an older version of IMU server, which is used to pass imu data between SNAV and CPU applications (like vio, etc). you can also download the ipk from http://voxl-packages.modalai.com/stable/imu_app_0.0.6.ipk and run opkg install imu_app_0.0.6.ipk
    • in order to install the latest snav ipk, you need to modify /etc/opkg/opkg.conf (commend out the line at the bottom src/gz stable http://voxl-packages.modalai.com/stable . If you don't do this, then the package config will override your new ipk with another package modalai-vl and pull it from the package repo. However it so happens that latest SNAV is not a part of modalai-vl package..
    • after you install the latest snav ipk, you can change opkg.conf back to normal.
    • the rest of SNAV install should work the same as before..
    • if you don't want to use latest SNAV, you don't have to, you can just use your existing version and install the imu app and SNAV should work.

    Hope this helps.

    Alex



  • Hi Alex,

    Sorry for the late reply. I was moving over last several days.
    I installed the imu_app and the snav-modalai_1.4.1 as you instructed, however, when I tried to run snav_calibration_manager -s, it gave me this error:
    6e013b7e-2fb8-45e9-a14c-ffe7fd5e3e8a-image.png
    I was suspicious that the voxl_imu_server might be running, so I first checked if the voxl_imu_server was removed. It turns out that it was still being installed

    cf5b3e5d-dcac-4b4c-94f2-d180c7ce0a4d-image.png
    I was not sure whether I should manually remove it, so I tried disable the service first as following:

    21f9f80b-526d-4720-b086-a07d6dacad42-image.png

    but after this the snav_calibration_manager -s still gave me the same error. I was also suspicious that the snav might not be running, so I ran start snav, here is the output:
    75d2bd27-b320-487c-88d3-c17869350049-image.png

    Yet after this, the snav_calibration_manager -s still gave me the same error I showed at the beginning of this reply.

    I'm not sure what else I should do. Any advice will be appreciated!

    Best,
    Rui



  • Hi All,

    I'm just following up this post to see if there is any advice that you can provide to help resolving this issue.

    Thank you for your time in advance!

    Best,
    Rui


  • Dev Team

    Hello Rui,

    After installing SNAV IPK, did you do anything else with SNAV before running snav_calibration_manager?

    Installing the ipk does not autostart SNAV, if I remember correctly. So you might be trying to run calibration manager without snav itself running. SNAV ipk install does put the service files for systemd into /etc/systemd/system (i think), but if you want snav to auto start, you need to run systemctl enable snav. However, enabling snav, does not start it right that moment (until during next boot). if you just want to start snav, use systemctl start snav or you can just run start snav.

    Before starting snav, you need to make sure that snav_params.xml is in place in /usr/lib/rfsa/adsp/ - usually it is either a symlink to a standard configuration or a custom file.

    Then to check if snav is running after starting, i strongly suggest running snav_calibration_manager -d to see what debugging / error messages it prints. If IMU static calibration needs to be performed (which is the case before first flight), you will see a message saying that, at which point you could run snav_calibration_manager -s

    I also usually disable the snav vio app and drone controller (latter is pretty much obsolete) like so:

    systemctl disable snav_dronecontroller
    systemctl disable snav_vio_app
    

    When I know snav itself is working fine, you can make sure VIO params are set correctly and then enable/run snav_vio_app as well. If you know that vio app params are already correct, then you don't need to disable it.



  • @Alex-Kushleyev said in snav fails to find libsensor_imu.so:

    Hi Alex,
    Thanks for the reply! I don't recall I ran anything special with snav other than start snav and snav_calibration_manager -s

    As you instructed, After I ran start snav, I tried snav_calibration_manager -d and here is the output it gave:
    e1f66ac9-91b0-4419-89c4-3bb0d52f9da3-image.png
    It doesn't seem to have anything special.
    Then I tried to run snav_calibration_manager -s again and it still gives me this error:
    aee128c4-e35d-4340-b366-6998ccc26d8f-image.png


  • Dev Team

    I am sorry, I meant run snav_inspector -d to see the debug messages coming from SNAV. Apologies!

    Alex



  • No problem! It seems that the SNAV_IMU_MPC_DRIVER is not able to initialize the IMU0. I'm attaching the full report below:

    ~ # snav_inspector -d
    Please wait - attempting to read log file /data/logs/snav/flight/snav_00001_01.log.
    Updated param file name to snav_params.xml
    Attempting to parse parameters
    Attempting to open parameter file: /dev/fs/snav_params.xml. *Note /dev/fs/ on APQ8096 is /usr/lib/rfsa/adsp/
    Successfully opened file /dev/fs/snav_params.xml [100]
    XML parser successfully parsed document.
    Set parameter position_control_params:basethrust to 240
    Set parameter optic_flow_estimator_params:camera_offset_x to 0.055
    Set parameter optic_flow_estimator_params:camera_offset_y to 0
    Set parameter voltage_monitor_params:voltage_warn_threshold to 7.05
    Set parameter voltage_monitor_params:voltage_warn_critical to 6.95
    Set parameter voltage_monitor_params:voltage_force_landing to 6.9
    Set parameter voltage_monitor_params:voltage_no_start to 6.7
    Set parameter voltage_monitor_params:voltage_warn_threshold_external to 6.85
    Set parameter voltage_monitor_params:voltage_warn_critical_external to 6.75
    Set parameter voltage_monitor_params:voltage_force_landing_external to 6.7
    Set parameter voltage_monitor_params:voltage_no_start_external to 6.6
    Set parameter voltage_monitor_params:voltage_landing_reset_threshold to 7.7
    Set parameter voltage_monitor_params:low_voltage_thrust_slope to 700
    Set parameter att_control_params:kp_roll_moment to 23.084
    Set parameter att_control_params:kp_pitch_moment to 23.084
    Set parameter att_control_params:kd_roll_moment to 2.6508
    Set parameter att_control_params:kd_pitch_moment to 2.6508
    Set parameter att_control_params:kpy to 109.831
    Set parameter att_control_params:kdy to 18.699
    Set parameter att_control_params:second_order_yaw_filter_cutoff_freq to 52.873
    Set parameter att_control_params:ang_vel_z_ff_factor to 0.6
    Set parameter att_control_params:prop_config_type to 0
    Set parameter att_control_params:prop_config_Dx to 0.0707
    Set parameter att_control_params:prop_config_Dy to 0.08
    Set parameter att_control_params:prop_config_beta to 0
    Set parameter att_control_params:prop_rpm_thrust_curve_a2 to 4.2447e-07
    Set parameter att_control_params:min_rpm to 5500
    Set parameter att_control_params:max_rpm to 16400
    Set parameter att_control_params:number_of_props to 4
    Set parameter att_control_params:use_max_rpm_curve to 1
    Set parameter att_control_params:max_rpm_curve_a0 to 8000
    Set parameter att_control_params:max_rpm_curve_a1 to 1200
    Set parameter rc_params:min_thrust to 60
    Set parameter rc_params:max_thrust to 460
    Set parameter rc_params:yaw_acc_limit to 9
    Set parameter orientation_params:vehicle_center_to_imu_x to 0.05
    Set parameter orientation_params:vehicle_center_to_imu_y to 0.0152
    Set parameter orientation_params:vehicle_center_to_imu_z to -0.023
    Set parameter orientation_params:imu_R00 to 0
    Set parameter orientation_params:imu_R01 to 1
    Set parameter orientation_params:imu_R02 to 0
    Set parameter orientation_params:imu_R10 to -1
    Set parameter orientation_params:imu_R11 to 0
    Set parameter orientation_params:imu_R12 to 0
    Set parameter orientation_params:imu_R20 to 0
    Set parameter orientation_params:imu_R21 to 0
    Set parameter orientation_params:imu_R22 to 1
    Set parameter orientation_params:imu1_R00 to -1
    Set parameter orientation_params:imu1_R01 to 0
    Set parameter orientation_params:imu1_R02 to 0
    Set parameter orientation_params:imu1_R10 to 0
    Set parameter orientation_params:imu1_R11 to 1
    Set parameter orientation_params:imu1_R12 to 0
    Set parameter orientation_params:imu1_R20 to 0
    Set parameter orientation_params:imu1_R21 to 0
    Set parameter orientation_params:imu1_R22 to -1
    Set parameter orientation_params:imu2_R00 to 1
    Set parameter orientation_params:imu2_R01 to 0
    Set parameter orientation_params:imu2_R02 to 0
    Set parameter orientation_params:imu2_R10 to 0
    Set parameter orientation_params:imu2_R11 to 1
    Set parameter orientation_params:imu2_R12 to 0
    Set parameter orientation_params:imu2_R20 to 0
    Set parameter orientation_params:imu2_R21 to 0
    Set parameter orientation_params:imu2_R22 to 1
    Set parameter orientation_params:mag_R00 to -1
    Set parameter orientation_params:mag_R01 to 0
    Set parameter orientation_params:mag_R02 to 0
    Set parameter orientation_params:mag_R10 to 0
    Set parameter orientation_params:mag_R11 to 1
    Set parameter orientation_params:mag_R12 to 0
    Set parameter orientation_params:mag_R20 to 0
    Set parameter orientation_params:mag_R21 to 0
    Set parameter orientation_params:mag_R22 to -1
    Set parameter orientation_params:downward_cam_R00 to 0
    Set parameter orientation_params:downward_cam_R01 to -1
    Set parameter orientation_params:downward_cam_R10 to -1
    Set parameter orientation_params:downward_cam_R11 to 0
    Set parameter device_drivers_params:rc0_driver_file_name to librc0_spektrum_driver.so
    Set parameter device_drivers_params:baro0_driver_file_name to libbaro0_bmp280_driver.so
    Set parameter device_drivers_params:vsense0_driver_file_name to libvsense0_ltc2946_driver.so
    Set parameter device_drivers_params:isense0_driver_file_name to libvsense0_ltc2946_driver.so
    Set parameter device_drivers_params:mag0_driver_file_name to libmag0_ak0991x_driver.so
    Set parameter device_drivers_params:sonar0_driver_file_name to libsonar0_maxbotix_driver.so
    Set parameter device_drivers_params:gnss0_driver_file_name to libgnss0_qc_driver.so
    Set parameter device_drivers_params:gnss1_driver_file_name to libgnss0_ublox_driver.so
    Set parameter device_drivers_params:imu0_driver_file_name to libimu_mpu_driver.so
    Set parameter device_drivers_params:imu0_description to imu_flight_primary_mpu9250
    Set parameter device_drivers_params:imu0_bit_rate to 10000000
    Set parameter device_drivers_params:imu0_update_rate_hz to 500
    Set parameter device_drivers_params:imu0_hw_accel_lpf_hz to 184
    Set parameter device_drivers_params:imu0_hw_gyro_lpf_hz to 184
    Set parameter device_drivers_params:imu0_sw_accel_lpf_hz to 0
    Set parameter device_drivers_params:imu0_sw_gyro_lpf_hz to 0
    Set parameter device_drivers_params:imu1_driver_file_name to libimu_mpu_driver_copy1.so
    Set parameter device_drivers_params:imu1_description to imu_flight_secondary_mpu9250
    Set parameter device_drivers_params:imu1_bit_rate to 10000000
    Set parameter device_drivers_params:imu1_update_rate_hz to 1000
    Set parameter device_drivers_params:imu1_hw_accel_lpf_hz to 184
    Set parameter device_drivers_params:imu1_hw_gyro_lpf_hz to 184
    Set parameter device_drivers_params:imu1_sw_accel_lpf_hz to 0
    Set parameter device_drivers_params:imu1_sw_gyro_lpf_hz to 0
    Set parameter device_drivers_params:imu2_driver_file_name to libimu_mpu_driver_copy2.so
    Set parameter device_drivers_params:imu2_description to imu_camera_video_icm20602
    Set parameter device_drivers_params:imu2_bit_rate to 10000000
    Set parameter device_drivers_params:imu2_update_rate_hz to 1000
    Set parameter device_drivers_params:imu2_hw_accel_lpf_hz to 184
    Set parameter device_drivers_params:imu2_hw_gyro_lpf_hz to 184
    Set parameter device_drivers_params:imu2_sw_accel_lpf_hz to 0
    Set parameter device_drivers_params:imu2_sw_gyro_lpf_hz to 0
    Set parameter device_drivers_params:imu0_device_path to /dev/spi-1
    Set parameter device_drivers_params:imu1_device_path to /dev/spi-10
    Set parameter device_drivers_params:rc0_device_path to /dev/tty-12
    Set parameter device_drivers_params:esc0_device_path to /dev/tty-5
    Set parameter device_drivers_params:gnss0_device_path to internal
    Set parameter device_drivers_params:gnss1_device_path to /dev/tty-9
    Set parameter device_drivers_params:sonar0_device_path to /dev/tty-7
    Set parameter device_drivers_params:baro0_device_path to /dev/iic-3
    Set parameter device_drivers_params:mag0_device_path to /dev/iic-6
    Set parameter device_drivers_params:vsense0_device_path to /dev/iic-8
    Set parameter device_drivers_params:isense0_device_path to /dev/iic-8
    Set parameter device_drivers_params:imu0_client_file_name to libimu_server_2_0.so
    Set parameter device_drivers_params:imu1_client_file_name to libimu_server_2_0.so
    Set parameter device_drivers_params:imu2_client_file_name to libimu_server_2_0.so
    Set parameter rc_receiver_params:is_binding_supported to 1
    Set parameter rc_receiver_params:bind_mode to 2
    Set parameter rc_receiver_params:power_ctrl_pin to 117
    Set parameter rc_receiver_params:bind_pin to 86
    Set parameter logging_params:buffer_size to 200000
    Parameter parsing successful [0].
    Parameter loading successful [1].
    SNAV Parameter checker succeeded
    Param parsing took 440568 us
    Setting clock and bus scaling to 100 100
    Successfully opened file fiducial_markers.xml [100]
    Read 3465 characters in file fiducial_markers.xml
    XML parser successfully parsed document.
    Found "SnavFiducialMarkers" attribute in xml file.
    Found "FiducialMarker" of type "AprilTag" in xml file.
    Setting id to 0
    Setting pos_x to 0.0
    Setting pos_y to 0.0
    Setting pos_z to 0.0
    Setting R_00 to 0.0
    Setting R_01 to 1.0
    Setting R_02 to 0.0
    Setting R_10 to -1.0
    Setting R_11 to 0.0
    Setting R_12 to 0.0
    Setting R_20 to 0.0
    Setting R_21 to 0.0
    Setting R_22 to 1.0
    Successfully added new fiducial marker.
    id = 0, type = AprilTag
    position = (0.000000, 0.000000, 0.000000)
    rotation:
      [ 0.000000 1.000000 0.000000 ]
      [ -1.000000 0.000000 0.000000 ]
      [ 0.000000 0.000000 1.000000 ]
    [DEVICE_DRIVERS] :  imu0    .so name = libimu_mpu_driver.so
    [DEVICE_DRIVERS] :  imu1    .so name = libimu_mpu_driver_copy1.so
    [DEVICE_DRIVERS] :  imu2    .so name = libimu_mpu_driver_copy2.so
    [DEVICE_DRIVERS] :  baro0   .so name = libbaro0_bmp280_driver.so
    [DEVICE_DRIVERS] :  sonar0  .so name = libsonar0_maxbotix_driver.so
    [DEVICE_DRIVERS] :  mag0    .so name = libmag0_ak0991x_driver.so
    [DEVICE_DRIVERS] :  mag1    .so name = 
    [DEVICE_DRIVERS] :  vsense0 .so name = libvsense0_ltc2946_driver.so
    [DEVICE_DRIVERS] :  isense0 .so name = libvsense0_ltc2946_driver.so
    [DEVICE_DRIVERS] :  led0    .so name = 
    [DEVICE_DRIVERS] :  rc0     .so name = librc0_spektrum_driver.so
    [DEVICE_DRIVERS] :  gnss0   .so name = libgnss0_qc_driver.so
    [DEVICE_DRIVERS] :  gnss1   .so name = libgnss0_ublox_driver.so
    [DEVICE_DRIVERS] :  esc0    .so name =  (built-in)
    [DEVICE_DRIVERS] :  imu0_client .so name = libimu_server_2_0.so
    [DEVICE_DRIVERS] :  imu1_client .so name = libimu_server_2_0.so
    [DEVICE_DRIVERS] :  imu2_client .so name = libimu_server_2_0.so
    SNAV_DRIVERS: Could not open library (libgnss0_qc_driver.so): cannot open libgnss_test_skel.so, 0
    SNAV_DRIVERS: Successfully opened driver : libgnss0_ublox_driver.so, handle=2958424112
    SNAV_UBLOX_GNSS_DRIVER: Updated gnss device path param to /dev/tty-9
    SNAV_UBLOX_GNSS_DRIVER: Updated gnss bit rate param to 9600
    SNAV_UBLOX_GNSS_DRIVER: Updated gnss update interval to 100000
    SNAV_UBLOX_GNSS_DRIVER: Updated gnss logging function pointer
    SNAV_UBLOX_GNSS_DRIVER: thread creation Successful
    SNAV_UBLOX_GNSS_DRIVER: Starting thread, opening device /dev/tty-9 at baud rate of 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    UBLOX: gps try 10
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_DRIVERS: Successfully opened driver : libbaro0_bmp280_driver.so, handle=2958433728
    SNAV_BMP280_DRIVER: Updated baro device path param to /dev/iic-3
    SNAV_BMP280_DRIVER: Updated baro bit rate to 400000
    SNAV_BMP280_DRIVER: Updated baro update interval to 20000
    SNAV_BMP280_DRIVER: thread creation Successful
    SNAV_BMP280_DRIVER: Starting thread, opening device /dev/iic-3
    SNAV_BMP280_DRIVER: Setting i2c slave address 0x76, baud rate 400000
    SNAV_BMP280_DRIVER: BMP280 verify id: read 88, expected 88: SUCCESS!
    SNAV_BMP280_DRIVER: BMP280 params 27563 26008 50    37767 -10535 3024 7175 -187 -7 15500 -14600 6000
    SNAV_BMP280_DRIVER: BMP280 sensor config1 ok!
    SNAV_BMP280_DRIVER: BMP280 sensor config2 ok!
    SNAV_BMP280_DRIVER: BMP280 initialization successful!
    SNAV_DRIVERS: Successfully opened driver : libsonar0_maxbotix_driver.so, handle=2958441200
    SNAV_SONAR0_MAXBOTIX_DRIVER: Updated sonar device path param to /dev/tty-7
    SNAV_SONAR0_MAXBOTIX_DRIVER: Updated sonar0_bit_rate param to 9600
    SNAV_SONAR0_MAXBOTIX_DRIVER: Updated sonar update interval to 100000
    SNAV_SONAR0_MAXBOTIX_DRIVER: Starting thread, opening device /dev/tty-7 at baud rate of 9600
    SNAV_SONAR0_MAXBOTIX_DRIVER: Setting baud rate to 9600
    SNAV_DRIVERS: Successfully opened driver : libvsense0_ltc2946_driver.so, handle=2958442208
    SNAV_LTC2946_DRIVER: Updated vsense device path param to /dev/iic-8
    SNAV_LTC2946_DRIVER: Updated isense device path param to /dev/iic-8
    SNAV_LTC2946_DRIVER: Updated vsense0_bit_rate param to 400000
    SNAV_LTC2946_DRIVER: Updated isense0_bit_rate param to 400000
    SNAV_LTC2946_DRIVER: Updated vsense update interval to 20000
    SNAV_LTC2946_DRIVER: Updated isense update interval to 20000
    SNAV_LTC2946_DRIVER: thread creation Successful
    SNAV_LTC2946_DRIVER: Starting thread, opening device /dev/iic-8
    SNAV_DRIVERS: Driver is already open, returning existing interface (libvsense0_ltc2946_driver.so)
    SNAV_LTC2946_DRIVER: Setting i2c baud rate 400000
    SNAV_LTC2946_DRIVER: Updated vsense device path param to /dev/iic-8
    SNAV_LTC2946_DRIVER: Updated isense device path param to /dev/iic-8
    SNAV_LTC2946_DRIVER: Updated vsense0_bit_rate param to 400000
    SNAV_LTC2946_DRIVER: Updated isense0_bit_rate param to 400000
    SNAV_LTC2946_DRIVER: Updated vsense update interval to 20000
    SNAV_LTC2946_DRIVER: Updated isense update interval to 20000
    SNAV_LTC2946_DRIVER: Updated measurement scale to 1000.000000
    SNAV_LTC2946_DRIVER: ltc2946 config failed!
    SNAV_LTC2946_DRIVER: LTC2946 initialization FAILED!
    SNAV_LTC2946_DRIVER: Exiting main thread with code (-1)
    SNAV_DRIVERS: Successfully opened driver : libimu_mpu_driver.so, handle=2958447488
    imu0: will use blocking read
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu device path param to /dev/spi-1
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu bit rate param to 10000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu to use blocking IO=1
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu update interval param to 0
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated enable data buffer to 0
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu accel lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Updated imu gyro lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): thread creation Successful
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Starting thread, opening device
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): attempting to detect sensor (try #1)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): ICM20948 detected!
    SNAV_DRIVERS: Successfully opened driver : libimu_mpu_driver_copy1.so, handle=2958482256
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu device path param to /dev/spi-10
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu bit rate param to 10000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu to use blocking IO=0
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu update interval param to 1000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated enable data buffer to 1
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu accel lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Updated imu gyro lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): thread creation Successful
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Starting thread, opening device
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): attempting to detect sensor (try #1)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): ICM20948 detected!
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_DRIVERS: Successfully opened driver : libimu_mpu_driver_copy2.so, handle=2958499744
    SNAV_IMU_MPU_DRIVER (): Updated imu device path param to 
    SNAV_IMU_MPU_DRIVER (): Updated imu bit rate param to 10000000
    SNAV_IMU_MPU_DRIVER (): Updated imu to use blocking IO=0
    SNAV_IMU_MPU_DRIVER (): Updated imu update interval param to 1000
    SNAV_IMU_MPU_DRIVER (): Updated enable data buffer to 1
    SNAV_IMU_MPU_DRIVER (): Updated imu accel lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (): Updated imu gyro lpf to 184.000000
    SNAV_IMU_MPU_DRIVER (): thread creation Successful
    SNAV_IMU_MPU_DRIVER (): Starting thread, opening device
    SNAV_IMU_MPU_DRIVER (): Failed to open port. Exiting.
    SNAV_IMU_MPU_DRIVER (): Exiting main thread with code (-1)
    SNAV_DRIVERS: Successfully opened driver : librc0_spektrum_driver.so, handle=2958506880
    SNAV_RC_SPEKTRUM_DRIVER: Updated rc0 device path param to /dev/tty-12
    SNAV_RC_SPEKTRUM_DRIVER: Updated rc bit rate param to 115200
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_DRIVERS: Successfully opened driver : libmag0_ak0991x_driver.so, handle=2958507600
    SNAV_MAG0_AK0991x_DRIVER: Updated mag device path param to /dev/iic-6
    SNAV_MAG0_AK0991x_DRIVER: Updated mag bit rate to 400000
    SNAV_MAG0_AK0991x_DRIVER: Updated mag update interval to 20000
    SNAV_MAG0_AK0991x_DRIVER: thread creation Successful
    SNAV_MAG0_AK0991x_DRIVER: Starting thread, opening device /dev/iic-6
    SNAV_MAG0_AK0991x_DRIVER: Setting i2c slave address 0x0C, baud rate 400000
    SNAV_MAG0_AK0991x_DRIVER: AK0991x failed to read ID!!!
    SNAV_MAG0_AK0991x_DRIVER: AK0991x verify ID failed!
    SNAV_MAG0_AK0991x_DRIVER: Exiting main thread with code (-2)
    SNAV_DRIVERS: Successfully opened driver : libimu_server_2_0.so, handle=2958613888
    SNAV_IMU_SERVER_2_0(0): Updated device description to imu_flight_primary_mpu9250
    SNAV_IMU_SERVER_2_0(0): Updated sample rate to 500
    SNAV_IMU_SERVER_2_0(0): Updated accel lpf to 184
    SNAV_IMU_SERVER_2_0(0): Updated gyro lpf to 184
    SNAV_IMU_SERVER_2_0(0): Updated buffer size to 100
    SNAV_IMU_SERVER_2_0(0): Updated position vector to 0.00 0.00 0.00
    SNAV_IMU_SERVER_2_0(0): Updated rotation matrix to 0.00 1.00 0.00   -1.00 0.00 0.00   0.00 0.00 1.00
    SNAV_DRIVERS: Driver is already open, returning existing interface (libimu_server_2_0.so)
    SNAV_IMU_SERVER_2_0(1): Updated device description to imu_flight_secondary_mpu9250
    SNAV_IMU_SERVER_2_0(1): Updated sample rate to 1000
    SNAV_IMU_SERVER_2_0(1): Updated accel lpf to 184
    SNAV_IMU_SERVER_2_0(1): Updated gyro lpf to 184
    SNAV_IMU_SERVER_2_0(1): Updated buffer size to 100
    SNAV_IMU_SERVER_2_0(1): Updated position vector to 0.00 0.00 0.00
    SNAV_IMU_SERVER_2_0(1): Updated rotation matrix to -1.00 0.00 0.00   0.00 1.00 0.00   0.00 0.00 -1.00
    SNAV_DRIVERS: Driver is already open, returning existing interface (libimu_server_2_0.so)
    SNAV_IMU_SERVER_2_0(2): Updated device description to imu_camera_video_icm20602
    SNAV_IMU_SERVER_2_0(2): Updated sample rate to 1000
    SNAV_IMU_SERVER_2_0(2): Updated accel lpf to 184
    SNAV_IMU_SERVER_2_0(2): Updated gyro lpf to 184
    SNAV_IMU_SERVER_2_0(2): Updated buffer size to 100
    SNAV_IMU_SERVER_2_0(2): Updated position vector to 0.00 0.00 0.00
    SNAV_IMU_SERVER_2_0(2): Updated rotation matrix to 1.00 0.00 0.00   0.00 1.00 0.00   0.00 0.00 1.00
    ESC: directions: 1 1 1 1 1 1 1 1
    Compass calibration file open failure (/dev/fs/compass_calib.txt).
    IMU calibration file open failure (/dev/fs/imu_linear_calib.txt).
    Offset calibration file open failure (/dev/fs/offset_calib.txt).
    Optic flow camera yaw calibration file open failure (/dev/fs/of_camera_yaw_calib.txt).
    IMU0 Rotation matrix is valid
    IMU1 Rotation matrix is valid
    IMU2 Rotation matrix is valid
    Offset calibration file open failure (/dev/fs/imu1_offset_calib.txt).
    Offset calibration file open failure (/dev/fs/imu2_offset_calib.txt).
    IMU calibration file open failure (/dev/fs/imu1_linear_calib.txt).
    IMU calibration file open failure (/dev/fs/imu2_linear_calib.txt).
    mag0_R = ...
    [-1.0000000000,  0.0000000000,  0.0000000000]
    [0.0000000000,  1.0000000000,  0.0000000000]
    [0.0000000000,  0.0000000000,  -1.0000000000]
    MAG0 Rotation matrix is valid
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 9
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): attempting to detect sensor (try #2)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): ICM20948 detected!
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): attempting to detect sensor (try #2)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): ICM20948 detected!
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 8
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 7
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): attempting to detect sensor (try #3)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): ICM20948 detected!
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): attempting to detect sensor (try #3)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): ICM20948 detected!
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 6
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    ESC: Number of feedback packets (expected 15) from each ESC ID: 0 0 0 0 0 0 0 0
    ESC: trying esc 0 version query (attempt 0)
    ESC: trying esc 0 version query (attempt 1)
    ESC: trying esc 0 version query (attempt 2)
    ESC: trying esc 0 version query (attempt 3)
    ESC: trying esc 0 version query (attempt 4)
    ESC: trying esc 1 version query (attempt 0)
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    ESC: trying esc 1 version query (attempt 1)
    ESC: trying esc 1 version query (attempt 2)
    ESC: trying esc 1 version query (attempt 3)
    ESC: trying esc 1 version query (attempt 4)
    ESC: trying esc 2 version query (attempt 0)
    ESC: trying esc 2 version query (attempt 1)
    ESC: trying esc 2 version query (attempt 2)
    ESC: trying esc 2 version query (attempt 3)
    ESC: trying esc 2 version query (attempt 4)
    ESC: trying esc 3 version query (attempt 0)
    ESC: trying esc 3 version query (attempt 1)
    ESC: trying esc 3 version query (attempt 2)
    ESC: trying esc 3 version query (attempt 3)
    ESC: trying esc 3 version query (attempt 4)
    ESC: SW versions : -1 -1 -1 -1 -1 -1 -1 -1
    ESC: HW versions : -1 -1 -1 -1 -1 -1 -1 -1
    ESC: Unique ids : 0 0 0 0 0 0 0 0
    SNAV_RC_SPEKTRUM_DRIVER: thread creation Successful
    SNAV_RC_SPEKTRUM_DRIVER: Starting thread, opening device /dev/tty-12 at baud rate of 115200
    SNAV_RC_SPEKTRUM_DRIVER: Setting baud rate to 115200
    SNAV_RC_SPEKTRUM_DRIVER: Done init.
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 50
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 5
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): unable to initialize imu
    SNAV_IMU_MPU_DRIVER (/dev/spi-1): Exiting main thread with code (-2)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): unable to initialize imu
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): Exiting main thread with code (-2)
    IMU0 read error. total number of errors = 100
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 4
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    IMU0 read error. total number of errors = 150
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 200
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 3
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    IMU0 read error. total number of errors = 250
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 300
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 2
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 350
    UBLOX: did not get ACK for GPS baud rate setting
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 400
    UBLOX: did not get ACK for GPS baud rate setting
    UBLOX: Baud rate change FAILED
    UBLOX: gps try 1
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 9600
    SNAV_UBLOX_GNSS_DRIVER: Setting baud rate to 230400
    IMU0 read error. total number of errors = 450
    

    Thanks for your help!!
    Best,
    Rui


  • Dev Team

    It looks like you are using a snav_params file which was used for a different (older) board with a different IMU (mpu9250). In your case, both IMUs are detected as newer icm20948 and you are trying to set accel/gyro low pass filter settings which are not supported by this IMU. You can choose the setting that is close to what you need from available options:

    SNAV_IMU_MPU_DRIVER (/dev/spi-10): attempting to detect sensor (try #2)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): initializing MPU6050/MPU6500/MPU9250/ICM20602/ICM20948 I2C/SPI driver
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register 117 is 0x40
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): (expected 0x68->mpu6050, 0x70->mpu6500, 0x71->mpu9250, 0x12->icm20602, 0x47>icm42688)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): mpu6050, mpu9250, icm20602 not detected.. trying icm20948
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): WHOAMI register is 0xEA (expected 0xEA for icm20948)
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): ICM20948 detected!
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available accel hw lpf (hz) : 6,12,24,50,111,246,473,1209
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): available gyro  hw lpf (hz) : 6,12,24,51,120,152,197,361,12106
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested accel and gyro lpf = 184.000000 184.000000
    SNAV_IMU_MPU_DRIVER (/dev/spi-10): requested unsupported accel hw lpf 184.000000
    mpu_driver_core.cpp mpu_config_icm20948() failed, returned: -1
    

    You could change your device_driver_params to something like this:

    <device_drivers_params>
        <param name="imu0_hw_accel_lpf_hz"     value="50"/>
        <param name="imu0_hw_gyro_lpf_hz"      value="120"/>
        <param name="imu1_hw_accel_lpf_hz"     value="50"/>
        <param name="imu1_hw_gyro_lpf_hz"      value="120"/>
    </device_drivers_params>
    

    You probably don't want such high bandwidth as 184, as the data could be noisy, depending on the vibration characteristics of your drone.



  • I see! Yes after changing this params I can calibrate the imu now with snav!! Thanks for your help!


Log in to reply