ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Popular
    Log in to post
    • All Time
    • Day
    • Week
    • Month
    • All Topics
    • New Topics
    • Watched Topics
    • Unreplied Topics
    • All categories
    • R

      Hadron ov64b snapshots have a vertical image artifact

      Video and Image Sensors
      • • • restore
      21
      0
      Votes
      21
      Posts
      562
      Views

      Alex KushleyevA

      OK, some updates..

      the reason why the resolution 9216x6944 was not accepted for snapshot is that the camera pipeline has a list of allowed resolutions and that resolution was not one of them. I could add the resolution 9216x6944 to the list, but actually another resolution (9216x6912) was already supported, so i updated the ov64b driver to include that. The latest driver is available here : https://storage.googleapis.com/modalai_public/temp/ov64b/20260417/ov64b_20260417.zip

      this driver has the following resolutions : 9248x6944, 9216x6944 9216x6912 and the other lower resolutions. You can use 9216x6912 since it's compatible with misp and isp snapshot.

      I also added 9216x6912 resolution to the supported misp resolutions in camera server (dev branch) as well as allowed using misp with snapshot (previously it would throw an error since we thought that previously they were not compatible).

      Actually, snapshot does work with raw_preview + misp, but here is a warning that gets printed continuously:

      WARNING: preview buffer pool for Cam(hires), Frame(30) has 0 free, skipping request

      we can work around this warning by adding the following line to the voxl-camera-server.conf for the ov64b camera. this limits the number of buffers that are queued up for the streams and resolves the warning.

      "max_request_queue_depth": 6,

      So with these changes, you should be able to use two configurations

      preview + raw_preview + misp + snapshot small_video + snapshot

      Please use the latest camera server from dev branch.

      Right now, if you enable misp + small+video + snapshot, it does not work properly, but i will try it figure it out. Here is an example set up for small video + snapshot, but you can easily change it to use misp by disabling small_video and enabling preview + misp (and set auto exposure to "auto" from "isp" (auto will use misp auto exposure)).

      Please try it out. I do agree that the ISP output has better overall image quality than MISP, also related to pretty significant lens shading of this small lens on ov64b. We will work on improvements of misp image processing.

      For now, you just need to decide whether you need both RAW bayer and ISP JPG, in which case you cannot use small_video for streaming (until i resolve the issue). This means slightly worse image quality for live streaming. But if you are ok with ISP jpg, you can disable misp and use small_video stream for streaming.

      By the way, i did not see any artifacts in the jpeg from ISP. Can you please let me know if the artifact is in every frame and where exactly it is located? or is the occurrence and location random?

      { "type": "ov64b", "name": "hires", "enabled": true, "camera_id": 1, "fps": 30, "en_preview": false, "en_misp": false, "max_request_queue_depth": 6, "preview_width": 9216, "preview_height": 6912, "en_raw_preview": true, "en_small_video": true, "en_large_video": false, "en_snapshot": true, "ae_mode": "isp", "gain_min": 100, "gain_max": 1600, "misp_width": 1600, "misp_height": 1200, "misp_venc_enable": false, "misp_venc_mode": "h265", "misp_venc_br_ctrl": "cqp", "misp_venc_Qfixed": 38, "misp_venc_Qmin": 15, "misp_venc_Qmax": 50, "misp_venc_nPframes": 29, "misp_venc_mbps": 30, "misp_venc_osd": false, "misp_awb": "auto", "misp_gamma": 1, "misp_zoom": 1, "ae_desired_msv": 110, "exposure_min_us": 20, "exposure_max_us": 33000, "exposure_soft_min_us": 5000, "ae_filter_alpha": 0.6, "ae_ignore_fraction": 0.2, "ae_slope": 0.05, "ae_exposure_period": 1, "ae_gain_period": 1, "small_video_width": 1600, "small_video_height": 1200, "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_snapshot_width": 9216, "en_snapshot_height": 6912, "exif_focal_length": 3.1, "exif_focal_length_in_35mm_format": 17, "exif_fnumber": 1.24, "snapshot_jpeg_quality": 75 }
    • R

      Snapshot crashes voxl-camera-server

      Video and Image Sensors
      • • • rddrone
      7
      0
      Votes
      7
      Posts
      135
      Views

      R

      I tested the fix and snapshots work now, thank you very much!

    • AniruddhaA

      PX4 calibration

      Starling & Starling 2
      • • • Aniruddha
      7
      0
      Votes
      7
      Posts
      182
      Views

      Aaron PorterA

      @Aniruddha
      On QGC, do the Parameters ever fully load? The reason I am asking is because if the connection to the GCS is not fast enough or strong enough for QGC to fully download the parameters then the other tabs like sensors and actuators in QGC will not appear. Which is why you are having an issue doing the level horizon from QGC. I know that QGC is seeing the video feed meaning you are connected, is the Green bar going across the full length of the fly view bar on QGC?

    • Myles LevineM

      Replacement Starling 2 Max ToF Board

      Ask your questions right here!
      • • • Myles Levine
      6
      0
      Votes
      6
      Posts
      65
      Views

      Alex KushleyevA

      Hi @Myles-Levine ,

      I just want to double check something to make sure there is no confusion.

      The lepton sensor is an IR (thermal) camera. it does not measure range. The lepton sensor plugs into the large square socket that is mounted to the M0157 / M0187 board (they are very similar). The infrared TOF sensor is a smaller (rectangular) sensor, which is marked as U1 on M0187 : https://docs.modalai.com/M0187/ .

      Have you checked whether the Lepton sensor is working using voxl-portal, which would allow you to look at the IR image coming from the sensor?

      Alex

    • Y

      Inquiry about camera lens for M0161, Starling 2

      Image Sensors
      • • • yaoyuh
      6
      0
      Votes
      6
      Posts
      126
      Views

      Alex KushleyevA

      @yaoyuh , it looks like the order has been taken care of. please let us know if you have any more questions.

      Alex

    • Jesus CardenasJ

      Cannot Download QDL Image File

      Ask your questions right here!
      • • • Jesus Cardenas
      6
      0
      Votes
      6
      Posts
      162
      Views

      Z

      @Jesus-Cardenas Flat builds should be available now!!

    • Daehan WonD

      Issue with USB Camera Disconnecting on VOXL2

      Ask your questions right here!
      • • • Daehan Won
      6
      0
      Votes
      6
      Posts
      161
      Views

      VinnyV

      OK @Daehan-Won
      Yeah, I'd try to run one first on it's own before the hub to rule that out.
      Keep us posted.
      Thanks!

    • Daehan WonD

      Question about sonar sensor(distance sensor) in voxl2

      VOXL 2
      • • • Daehan Won
      6
      0
      Votes
      6
      Posts
      159
      Views

      Daehan WonD

      @Eric-Katzfey Thank you for reply!

      I will try creating a custom build using the document you provided.

    • C

      Two-camera VIO non-functional in voxl-open-vins-server 0.6.0 (SDK 1.6.3)

      GPS-denied Navigation (VIO)
      • • • cbay
      5
      0
      Votes
      5
      Posts
      123
      Views

      Alex KushleyevA

      I have uploaded the latest ar0144 drivers with fsin versions for all camera slots here : https://storage.googleapis.com/modalai_public/temp/ar0144/ar0144_drivers_20260402.zip

      There are two additional files (inside the zip), which you should copy to /usr/lib/camera to make sure you have the latest updates:

      com.qti.sensor.ar0144.so -- contains functions for exposure / gain control (we recently made some improvements to make gain control smoother) com.qti.tuned.default.bin -- fixed gain scaling so that min gain (1.0x analog gain) is equal to 100 in the HAL3 gain units, not 54 (and the max gain will be 29.6 = 29600 for AR0144) -- you can also double check this using voxl-camera-server -l and update the min/max gain settings in your voxl-camera-server.conf to make sure you are using the full range.

      My colleague will follow up with a diagram for locations of the DNI resistors that need to be installed to enable sync signal for camera slots 1 and 3 (0402 0-ohm resistor)

      Alex

    • D

      Technical Support: Sudden Loss of Control and Connectivity - VOXL 2

      Ask your questions right here!
      • • • DronAlan
      4
      0
      Votes
      4
      Posts
      44
      Views

      tomT

      @DronAlan https://www.modalai.com/pages/rma

    • IgorI

      Multiple Critical Bugs in voxl-imu-server: Incorrect FIFO Latching and HiRes Indexing (ICM-42688)

      VOXL SDK
      • • • Igor
      4
      0
      Votes
      4
      Posts
      149
      Views

      IgorI

      @Alex-Kushleyev Hi Alex,

      Thank you for the clarification.

      That makes sense regarding the accel parsing—agreed that a 4 LSB discrepancy on a 20-bit value is negligible compared to in-flight noise, but it’s good to see it will be corrected.

      Appreciate you taking the time to investigate and confirm.
      Igor

    • I

      Starling 2 loses all cameras; voxl-camera-server -l reports 0 cameras even after voxl-configure-cameras 27, voxl-configure-mpa, and reflash

      Ask your questions right here!
      • • • irw
      4
      0
      Votes
      4
      Posts
      135
      Views

      VinnyV

      Hi @irw
      Can you please post High Res and clear photos of both sides of the VOXL 2?

    • Gerhold Ten VoordeG

      Higher lens mount

      Image Sensors
      • • • Gerhold Ten Voorde
      3
      0
      Votes
      3
      Posts
      61
      Views

      Gerhold Ten VoordeG

      Hi @Alex-Kushleyev

      Thanks for your response. We did not consider to add a spacer, but it is a good idea.

      Yes, I would like to receive the lens holder part number, so let me know when you found it.

      Gerhold

    • IgorI

      Unable to findQRB5165 emulator image

      Software Development
      • • • Igor
      3
      0
      Votes
      3
      Posts
      74
      Views

      Alex KushleyevA

      @Igor , we just uploaded the emulator docker image, please see details in this post : https://forum.modalai.com/topic/5179/qrb5165-emulator-image-1-6

    • A

      Latest voxl-cross images missing?

      VOXL SDK
      • • • Alan_S
      3
      0
      Votes
      3
      Posts
      67
      Views

      A

      @ZuraNeb Perfect! Thank you!

    • M

      Which STEP file do I need for Starling2 MAX GPS mast?

      3D Models
      • • • MikeD
      3
      0
      Votes
      3
      Posts
      66
      Views

      M

      @Alex-Kushleyev Awesome Thank you!

    • Mason N.M

      Seeker Documentations

      Seeker
      • • • Mason N.
      3
      0
      Votes
      3
      Posts
      55
      Views

      Mason N.M

      Additionally, where can I buy the propeller replacements? It's not here https://www.modalai.com/search?page=1&q=propeller

    • Q

      Time Of Flight (TOF) camera output FPS divided by 5 after upgrading from SDK 1.5.0 to SDK 1.6.3 (Starling2 Max C29)

      Support Request Format for Best Results
      • • • qt
      3
      0
      Votes
      3
      Posts
      106
      Views

      Q

      @Alex-Kushleyev, thank you for your answer.
      I confirm your assumption, when I set the decimator to 1, the fps is not divided.
      Here are the tests I did on SDK 1.5.0 and SDK 1.6.3 :

      test with SDK 1.5.0 ; fps = 10 | standy_enabled = false or true | decimator = 5 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 2.90 | 0 | 1540 | 28.0 | 10.0 | 3.5 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 7170622 | 240 | 180 | 7.1 | -0.0 0.0 0.0 0 fps = 60 | standy_enabled = false or true | decimator = 5 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 1.30 | 0 | 2155 | 9.3 | 59.9 | 20.7 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 10666991 | 240 | 180 | 3.1 | 0.0 0.0 0.0 0 fps = 60 | standy_enabled = false or true | decimator = 5 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 1.18 | 0 | 869 | 9.4 | 59.9 | 20.7 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 10753813 | 240 | 180 | 3.1 | 0.0 0.0 0.0 0 test with SDK 1.6.3 fps = 10 | standy_enabled = true or false | decimator = 1 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 3.02 | 0 | 260 | 29.7 | 10.0 | 3.5 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 2052194 | 240 | 180 | 7.1 | -0.0 0.0 0.0 0 fps = 60 | standy_enabled = true or false | decimator = 1 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 1.18 | 0 | 7532 | 9.3 | 59.9 | 20.7 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 2190721 | 240 | 180 | 3.1 | 0.0 0.0 0.0 0 fps = 60 | standy_enabled = true or false | decimator = 10 | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | tof_depth | 43200 | 180 | 240 | 1.20 | 0 | 83 | 10.1 | 6.0 | 2.1 | RAW8 timestamp(ms)| w | h | Zmax | center point (m) (conf) 2469720 | 240 | 180 | 3.1 | 0.0 0.0 0.0 0

      As you can see, for SDK 1.5.0, fhe fps is NEVER divided, regardless of the value of standby_enabled.
      For SDK 1.6.3, fhe fps is ALWAYS divided, regardless of the value of standby_enabled.
      So, my problem is solved but I think you have a bug on the management of the paramater 'standby_enabled'.
      I fastly investigate the code of voxl-camera-server and I can't find where you are using 'standby_enabled'. Here is the search result in all the project :

      # Query: standby_en # ContextLines: 2 6 results - 2 files include/common_defs.h: 370 modal_exposure_msv_config_t ae_msv_info; ///< ModalAI AE data (MSV) 371 372: int standby_enabled; ///< Standby enabled for lidar 373 int decimator; ///< Decimator to use for standby 374 src/config_file.cpp: 129 printf(" gain_min : %d\n", cams[i].ae_msv_info.gain_min); 130 printf(" gain_max : %d\n", cams[i].ae_msv_info.gain_max); 131: printf(" standby_enabled: %d\n", cams[i].standby_enabled); 132 printf(" decimator: %d\n", cams[i].decimator); 133 printf(" independent_exposure:%d\n", cams[i].ind_exp); 642 // standby settings for tof only 643 if(is_tof_sensor(cam->type)) { 644: json_fetch_bool_with_default(item, "standby_enabled", (int*)&cam->standby_enabled, cam->standby_enabled); 645 json_fetch_int_with_default (item, "decimator", &cam->decimator, cam->decimator); 646 }

      Maybe you should add a condition in your function PerCameraMgr::ProcessTOFPreviewFrame():

      void PerCameraMgr::ProcessTOFPreviewFrame(mpa_ion_buf_t* buffer_info, camera_image_metadata_t meta) { tofFrameCounter++; if(grab_cpu_pitmode_active() && tofFrameCounter % (int)configInfo.decimator != 0){ return; } auto noStridePlaneSize = static_cast<size_t>(pre_width*pre_height*1.5); auto realWidth = static_cast<uint32_t>(pre_width*1.5); uint8_t* noStridePlane; if (buffer_info->stride != realWidth) { noStridePlane = new uint8_t[noStridePlaneSize]; removePlaneStride(buffer_info->stride, realWidth, buffer_info->height, (uint8_t*) buffer_info->vaddress, noStridePlane); } else { noStridePlane = static_cast<uint8_t*>(buffer_info->vaddress); } uint16_t srcPixel16[pre_width * pre_height] = {0}; // NOTE we don't actually puvblish tis particular metadata to the pipe // TOF data is published separately in a very different way to cameras meta.format = IMAGE_FORMAT_RAW8; meta.size_bytes = pre_width * pre_height; meta.stride = pre_width; Mipi12ToRaw16(meta.size_bytes, noStridePlane, srcPixel16); tof_interface->ProcessRAW16(srcPixel16, meta.timestamp_ns); if (buffer_info->stride != realWidth) { delete[] noStridePlane; } M_VERBOSE("Sent tof data to royale for processing\n"); return; }

      Best regards
      Quentin

    • David AveryD

      HDMI output from Seeker Vision FPV Goggles

      FPV Drones
      • • • David Avery
      3
      0
      Votes
      3
      Posts
      105
      Views

      David AveryD

      @tom Thank you!

    • H

      QRB5165 emulator image 1.6

      VOXL SDK
      • • • huy
      2
      0
      Votes
      2
      Posts
      17
      Views

      Alex KushleyevA

      @huy ,

      The latest qrb5165 emulator docker image is v 1.5. We have been updating our downloads section, so it was inadvertently removed.

      Right now, this docker image is available in the Downloads / Miscellaneous section and is called 865-rootfs_m0054_qrb5165-emulator-v1.5.tar. You can download it from there.

      However, the name and location of this docker image is slightly incorrect. It will be renamed to qrb5165-emulator-v1.5.tar and moved to the Docker Images section soon. So if you cant find it under Miscellaneous section, please look at the Docker Images section.

      https://developer.modalai.com/

      Alex