ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Cannot connect to cameras on VOXL Flight, voxl-camera-server crashes

    VOXL Flight
    1
    2
    16
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • LucasWL
      LucasW
      last edited by LucasW

      I upgraded the system image to SDK1.2, as it is the latest supported for VOXL Flight (I have a beta version of the Starling drone):

      voxl-version
      --------------------------------------------------------------------------------
      system-image: 4.0.0
      kernel:       #1 SMP PREEMPT Thu Oct 13 17:57:05 UTC 2022 3.18.71-perf
      --------------------------------------------------------------------------------
      hw platform:  VOXL
      mach.var:     1.0
      --------------------------------------------------------------------------------
      voxl-suite:   1.2.0
      --------------------------------------------------------------------------------
      Packages:
      Repo: http://voxl-packages.modalai.com/dists/apq8096/sdk-1.2/binary-arm64/
      Last Updated: Never
      List:
      	apq8096-dfs-server          0.3.1
      	apq8096-imu-server          1.1.0
      	apq8096-libpng              1.6.38-1
      	apq8096-rangefinder-server  0.1.3
      	apq8096-system-tweaks       0.2.3
      	apq8096-tflite              2.8.3-1
      	libapq8096-io               0.6.1
      	libmodal-cv                 0.4.0
      	libmodal-exposure           0.1.0
      	libmodal-journal            0.2.2
      	libmodal-json               0.4.3
      	libmodal-pipe               2.10.0
      	libvoxl-cci-direct          0.2.1
      	libvoxl-cutils              0.1.1
      	voxl-camera-calibration     0.5.4
      	voxl-camera-server          1.9.2
      	voxl-configurator           0.5.6
      	voxl-cpu-monitor            0.4.8
      	voxl-docker-support         1.3.1
      	voxl-gphoto2-server         0.0.10
      	voxl-jpeg-turbo             2.1.3-5
      	voxl-lepton-server          1.2.0
      	voxl-libgphoto2             0.0.4
      	voxl-libuvc                 1.0.7
      	voxl-logger                 0.4.0
      	voxl-mavcam-manager         0.5.3
      	voxl-mavlink                0.1.1
      	voxl-mavlink-server         1.4.0
      	voxl-modem                  1.0.9
      	voxl-mongoose               7.7.0-1
      	voxl-mpa-to-ros             0.3.7
      	voxl-mpa-tools              1.1.5
      	voxl-opencv                 4.5.5-2
      	voxl-portal                 0.6.5
      	voxl-qvio-server            1.0.2
      	voxl-remote-id              0.0.9
      	voxl-streamer               0.7.4
      	voxl-suite                  1.2.0
      	voxl-system-image           4.0-r0
      	voxl-tag-detector           0.0.4
      	voxl-tflite-server          0.3.2
      	voxl-utils                  1.3.9
      	voxl-uvc-server             0.1.6
      	voxl-vision-hub             1.7.4
      	voxl-vpn                    0.0.6
      --------------------------------------------------------------------------------
      

      The cameras were working fine up until recently and I did not attempt to modify any hardware. The following cameras are connected to VOXL Flight (connectors) :

      • tracking (port J4)
      • hires (port J2)
      • tof (port J3)

      (left unaltered as provided by ModalAI)

      I performed the following setup after flashing the image:

      voxl-configure-cameras 6 # Hires + TOF + Tracking
      voxl-configure-extrinsics starling_v1_voxl_flight
      voxl-configure-qvio factory_enable_imu0 # for VOXL Flight all-in-one board.
      

      Which yielded the following extrinsics:

      voxl-inspect-extrinsics   
      #0:
          parent:                imu1
          child:                 imu0
          T_child_wrt_parent:   -0.048   0.037   0.002 
          RPY_parent_to_child:   0.0     0.0     0.0  
          R_child_to_parent:     1.000  -0.000   0.000 
                                 0.000   1.000  -0.000 
                                 0.000   0.000   1.000 
      #1:
          parent:                imu0
          child:                 tracking
          T_child_wrt_parent:    0.060  -0.014   0.011 
          RPY_parent_to_child:   0.0    45.0    90.0  
          R_child_to_parent:     0.000  -0.707   0.707 
                                 1.000   0.000  -0.000 
                                -0.000   0.707   0.707 
      #2:
          parent:                imu1
          child:                 tracking
          T_child_wrt_parent:    0.012   0.015   0.013 
          RPY_parent_to_child:   0.0    45.0    90.0  
          R_child_to_parent:     0.000  -0.707   0.707 
                                 1.000   0.000  -0.000 
                                -0.000   0.707   0.707 
      #3:
          parent:                body
          child:                 imu0
          T_child_wrt_parent:    0.000   0.014  -0.008 
          RPY_parent_to_child:   0.0     0.0     0.0  
          R_child_to_parent:     1.000  -0.000   0.000 
                                 0.000   1.000  -0.000 
                                 0.000   0.000   1.000 
      #4:
          parent:                body
          child:                 imu1
          T_child_wrt_parent:    0.049  -0.015  -0.011 
          RPY_parent_to_child:   0.0     0.0     0.0  
          R_child_to_parent:     1.000  -0.000   0.000 
                                 0.000   1.000  -0.000 
                                 0.000   0.000   1.000 
      #5:
          parent:                body
          child:                 stereo_l
          T_child_wrt_parent:    0.065  -0.040   0.000 
          RPY_parent_to_child:   0.0    90.0    90.0  
          R_child_to_parent:     0.000  -0.000   1.000 
                                 1.000   0.000  -0.000 
                                -0.000   1.000   0.000 
      #6:
          parent:                body
          child:                 tof
          T_child_wrt_parent:    0.065  -0.013   0.010 
          RPY_parent_to_child:   0.0    90.0    90.0  
          R_child_to_parent:     0.000  -0.000   1.000 
                                 1.000   0.000  -0.000 
                                -0.000   1.000   0.000 
      #7:
          parent:                body
          child:                 ground
          T_child_wrt_parent:    0.000   0.000   0.029 
          RPY_parent_to_child:   0.0     0.0     0.0  
          R_child_to_parent:     1.000  -0.000   0.000 
                                 0.000   1.000  -0.000 
                                 0.000   0.000   1.000
      

      Listing plugged in camera with voxl-camera-server -l returns:

      DEBUG:   Attempting to open the hal module
      DEBUG:   SUCCESS: Camera module opened on attempt 0
      DEBUG:   ----------- Number of cameras: 2
      
      DEBUG:   Note: This list comes from the HAL module and may not be indicative
      DEBUG:   	of configurations that have full pipelines
      
      DEBUG:   Number of cameras: 2
      
      
      ====================================
      Stats for camera: 0
      
      ANDROID_SCALER_AVAILABLE_RAW_SIZES:
      These are likely supported by the sensor
      4208 x 3120
      4096 x 2160
      2104 x 1560
      1920 x 1080
      1280 x  720
      2104 x 1506
      
      ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
      These are NOT necessarily supported by the sensor
      4208 x 3120 HAL_PIXEL_FORMAT_RAW_OPAQUE
      ...
      
      ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
      	min = 41
      	max = 3987
      
      ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
      	332
      
      ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
      	min = 20678ns
      	max = 683881516ns
      
      
      ====================================
      Stats for camera: 1
      
      ANDROID_SCALER_AVAILABLE_RAW_SIZES:
      These are likely supported by the sensor
       640 x  480
       320 x  240
      
      ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
      These are NOT necessarily supported by the sensor
       640 x  480 HAL_PIXEL_FORMAT_RAW_OPAQUE
      ...
      
      ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
      	min = 100
      	max = 6399
      
      ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
      	6399
      
      ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
      	min = 19425ns
      	max = 1020461640ns
      
      ====================================
      Number of cameras detected: 2
      ====================================
      

      Trying to run voxl-camera-server -d 0 generates:

      WARNING Failed to set priority, errno = 1
      This may be because the FIFO scheduler is not available when running in a console.
      It should work properly when run as a systemd background process on boot.
      WARNING: failed to set scheduler
      using new imx214 defaults
      =================================================================
      configuration for 3 cameras:
      
      cam #0
          name:                tracking
          sensor type:         ov7251
          isEnabled:           1
          camId:               2
          camId2:              -1
          fps:                 30
          en_rotate:           0
          en_rotate2:          0
      
          en_preview:          1
          pre_width:           640
          pre_height:          480
          en_raw_preview:      1
      
          en_small_video:      0
          small_video_width:   -1
          small_video_height:  -1
      
          en_large_video:      0
          large_video_width:   -1
          large_video_height:  -1
      
          en_snapshot:         0
          snap_width:          -1
          snap_height:         -1
      
          ae_mode:             lme_msv
          standby_enabled:     0
          decimator:           1
          independent_exposure:0
      
      cam #1
          name:                tof
          sensor type:         pmd-tof
          isEnabled:           1
          camId:               1
          camId2:              -1
          fps:                 5
          en_rotate:           0
          en_rotate2:          0
      
          en_preview:          1
          pre_width:           224
          pre_height:          1557
          en_raw_preview:      1
      
          en_small_video:      0
          small_video_width:   -1
          small_video_height:  -1
      
          en_large_video:      0
          large_video_width:   -1
          large_video_height:  -1
      
          en_snapshot:         0
          snap_width:          -1
          snap_height:         -1
      
          ae_mode:             off
          standby_enabled:     0
          decimator:           5
          independent_exposure:0
      
      cam #2
          name:                hires
          sensor type:         imx214
          isEnabled:           1
          camId:               0
          camId2:              -1
          fps:                 30
          en_rotate:           0
          en_rotate2:          0
      
          en_preview:          0
          pre_width:           640
          pre_height:          480
          en_raw_preview:      0
      
          en_small_video:      1
          small_video_width:   1024
          small_video_height:  768
      
          en_large_video:      1
          large_video_width:   1920
          large_video_height:  1080
      
          en_snapshot:         1
          snap_width:          4160
          snap_height:         3120
      
          ae_mode:             isp
          standby_enabled:     0
          decimator:           1
          independent_exposure:0
      
      fsync_en:            0
      fsync_gpio:          111
      =================================================================
      DEBUG:   Attempting to open the hal module
      DEBUG:   SUCCESS: Camera module opened on attempt 0
      DEBUG:   ----------- Number of cameras: 2
      
      DEBUG:   ------ voxl-camera-server: Starting 3 cameras
      Starting Camera: tracking (id #2)
      WARNING: cam tracking (id 2) does not seem to be alive
      Starting Camera: tof (id #1)
      DEBUG:   Checking Gain limits for Camera: tof
      Using gain limits min: 100 max: 6399
      DEBUG:   cam ID 1 checking for fmt:   33  w:  224 h: 1557 o:   0
      DEBUG:   	==> option   0: format= 36 width= 640 height= 480 is_input=0
      DEBUG:   	==> option   4: format= 36 width= 320 height= 240 is_input=0
      DEBUG:   	==> option   8: format= 32 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  12: format= 32 width= 320 height= 240 is_input=0
      DEBUG:   	==> option  16: format= 35 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  20: format= 35 width= 640 height= 240 is_input=0
      DEBUG:   	==> option  24: format= 35 width= 640 height= 360 is_input=0
      DEBUG:   	==> option  28: format= 35 width= 480 height= 480 is_input=0
      DEBUG:   	==> option  32: format= 35 width= 480 height= 360 is_input=0
      DEBUG:   	==> option  36: format= 35 width= 480 height= 320 is_input=0
      DEBUG:   	==> option  40: format= 33 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  44: format= 33 width= 640 height= 240 is_input=0
      DEBUG:   	==> option  48: format= 33 width= 640 height= 360 is_input=0
      DEBUG:   	==> option  52: format= 33 width= 480 height= 480 is_input=0
      DEBUG:   	==> option  56: format= 33 width= 480 height= 360 is_input=0
      DEBUG:   	==> option  60: format= 33 width= 480 height= 320 is_input=0
      DEBUG:   	==> option  64: format= 37 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  68: format= 37 width= 320 height= 240 is_input=0
      DEBUG:   	==> option  72: format= 38 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  76: format= 38 width= 320 height= 240 is_input=0
      DEBUG:   	==> option  80: format= 34 width= 640 height= 480 is_input=0
      DEBUG:   	==> option  84: format= 34 width= 640 height= 240 is_input=0
      DEBUG:   	==> option  88: format= 34 width= 640 height= 360 is_input=0
      DEBUG:   	==> option  92: format= 34 width= 480 height= 480 is_input=0
      DEBUG:   	==> option  96: format= 34 width= 480 height= 360 is_input=0
      DEBUG:   	==> option 100: format= 34 width= 480 height= 320 is_input=0
      ERROR:   Camera 1 failed to find supported preview config: 224x1557
      WARNING: Failed to start cam tof due to invalid resolution
      WARNING: assuming cam is missing and trying to compensate
      Starting Camera: hires (originally id #0) with id offset: 1
      WARNING: cam hires (id -1) does not seem to be alive
      ERROR:   failed to initialize any cameras
      
      ------ voxl-camera-server: Started 0 of 3 cameras
      
      ------ voxl-camera-server: Camera server is now running
      
      ------ voxl-camera-server: Camera server is now stopping
      DEBUG:   	Erasing all managers
      
      ------ voxl-camera-server: Camera server exited gracefully, returning -1
      

      Finally, here is the camera server configuration (/etc/modalai/voxl-camera-server.conf) :

      {
      	"version":	0.1,
      	"fsync_en":	false,
      	"fsync_gpio":	111,
      	"cameras":	[{
      			"type":	"ov7251",
      			"name":	"tracking",
      			"enabled":	true,
      			"camera_id":	2,
      			"fps":	30,
      			"en_rotate":	false,
      			"en_preview":	true,
      			"preview_width":	640,
      			"preview_height":	480,
      			"en_raw_preview":	true,
      			"ae_mode":	"lme_msv",
      			"ae_desired_msv":	60,
      			"exposure_min_us":	20,
      			"exposure_max_us":	33000,
      			"gain_min":	54,
      			"gain_max":	8000,
      			"exposure_soft_min_us":	5000,
      			"ae_filter_alpha":	0.600000023841858,
      			"ae_ignore_fraction":	0.20000000298023224,
      			"ae_slope":	0.05000000074505806,
      			"ae_exposure_period":	1,
      			"ae_gain_period":	1
      		}, {
      			"type":	"pmd-tof",
      			"name":	"tof",
      			"enabled":	true,
      			"camera_id":	1,
      			"fps":	5,
      			"ae_mode":	"off",
      			"standby_enabled":	false,
      			"decimator":	5
      		}, {
      			"type":	"imx214",
      			"name":	"hires",
      			"enabled":	true,
      			"camera_id":	0,
      			"fps":	30,
      			"en_preview":	false,
      			"preview_width":	640,
      			"preview_height":	480,
      			"en_raw_preview":	false,
      			"en_small_video":	true,
      			"small_video_width":	1024,
      			"small_video_height":	768,
      			"small_venc_mode":	"h264",
      			"small_venc_br_ctrl":	"cqp",
      			"small_venc_Qfixed":	30,
      			"small_venc_Qmin":	15,
      			"small_venc_Qmax":	40,
      			"small_venc_nPframes":	9,
      			"small_venc_mbps":	2,
      			"en_large_video":	true,
      			"large_video_width":	1920,
      			"large_video_height":	1080,
      			"large_venc_mode":	"h264",
      			"large_venc_br_ctrl":	"cqp",
      			"large_venc_Qfixed":	40,
      			"large_venc_Qmin":	15,
      			"large_venc_Qmax":	50,
      			"large_venc_nPframes":	29,
      			"large_venc_mbps":	40,
      			"en_snapshot":	true,
      			"en_snapshot_width":	4160,
      			"en_snapshot_height":	3120,
      			"ae_mode":	"isp"
      		}]
      }
      
      

      I doubt all cameras are dead... I can actually run the server with only hires by setting the enabled field to false in the camera server config. Could this be linked to some hardware/software version mismatch of the expected camera types? Any pointers as to how to address this issue would be much appreciated!

      Edit: a similar issue has been raised before, see this post, but no solution was given.

      1 Reply Last reply Reply Quote 0
      • LucasWL
        LucasW
        last edited by

        I tried swapping the tof camera with a spare one I had around. The spare tof worked immediately without issue. I then disconnected the spare tof, configured the camera server with only hires and tracking (with no connected tof camera, which worked fine). I then tried to plug back in the original tof and it started working again. So nothing changed, just unplugged and plugged back the tof camera and reflected the changes by configuring the camera server accordingly, weird...

        1 Reply Last reply Reply Quote 0
        • First post
          Last post
        Powered by NodeBB | Contributors