Skip to content

Image Sensors

145 Topics 750 Posts
  • Using MSU-0161 Hi-res camera with MMSU-M0014 tracking camera.

    4
    0 Votes
    4 Posts
    668 Views
    Alex KushleyevA
    @vaibhavswami , Ov7251 stereo pairs are supported on camera ports J6 or J8 on VOXL2. Since you have already occupied J6 and J7, you can connect one stereo pair to J8 (take note of the orientation of J8, since it's rotated compared to J6, J7). Cameras on J8 would have slot IDs 4 and 5, so you would need to copy the following files: cp /usr/share/modalai/chi-cdk/ov7251-combo/com.qti.sensormodule.ov7251_combo_4.bin /usr/lib/camera/ cp /usr/share/modalai/chi-cdk/ov7251-combo/com.qti.sensormodule.ov7251_combo_5.bin /usr/lib/camera/ (if you need to rotate the camera 180 degrees, there is the "flip" version of the sensormodules too: ov7251-combo-flip) After this you should be able to detect the stereo cameras using voxl-camera-server -l as camera ID 2 and 3 (since 0 and 1 are single ov7251 and IMX412). Finally, you would need to update your camera server config: camera-server-config-helper tracking:ov7251:0 hires:imx412:1 stereo:ov7251:2:3 Try it out and let me know if you run into any issues.. If you wanted to use dual stereo, that use case is very similar to the one described here : https://docs.modalai.com/voxl2-image-sensors/#sdk-10-usage-example but you would need to use non-coax version of IMX412 (M0107) M0084 dual camera Y flex or M0135 dual camera interposer in order to plug in tracking camera M0014 and IMX412 M0107 extension flex M0036 (long) or M0074 (short) for IMX412, Alex
  • This topic is deleted!

    11
    0 Votes
    11 Posts
    371 Views
  • Mating connector for M0173

    2
    0 Votes
    2 Posts
    516 Views
    VinnyV
    Hi @Peter-Milani Yes, M0173 requires both J6 and J7 to operate as designed. The uCoax connectors are from Hirose as documented here: https://docs.modalai.com/micro-coax-user-guide/
  • Possibilities to use 2 hi-res on VOXL2 J8

    1
    0 Votes
    1 Posts
    476 Views
    No one has replied
  • M0149 camera refocusing and tuning parameters

    57
    1
    0 Votes
    57 Posts
    26k Views
    tomT
    @Aaky You'll have to use a nightly build of the SDK, here's a link to the latest one: https://storage.googleapis.com/platform-nightlies/voxl2/voxl2_SDK_nightly_20241208.tar.gz Keep in mind that these builds are untested so we can't promise any functionality
  • cam does not seem to be alive issue

    26
    2
    0 Votes
    26 Posts
    6k Views
    G
    @Alex-Kushleyev sorry for the delay, this sounds about right. I'm not sure about the 15 fps but we do use raw preview only for our application and no other stream this is my camera conf file: cat /etc/modalai/voxl-camera-server.conf /** * voxl-camera-server Configuration File * * Each camera has configurations for up to 4 HAL3 streams: * - `preview` stream for raw unprocessed images from CV cameras * - `small_video` 720p (ish) h264/h265 compressed for fpv video streaming * - `large_video` 4k (ish) h264/h265 for onboard video recording to disk * - `snapshot` ISP-processed JPG snapshots that get saved to disk * * on QRB5165 platforms (VOXL2 and VOXL2 mini) you can only have 3 of the 4 enabled * * This file is generated from default values by voxl-configure-cameras. * Do not expect arbitrary resolutions to work, the ISP and video compression * pipelines only support very specific resolutions. * * The default video compression mode is cqp or Constant Quantization Parameter * * * */ { "version": 0.1, "cameras": [{ "type": "ov7251", "name": "stereo", "enabled": true, "camera_id": 0, "camera_id_second": 1, "independent_exposure": false, "fps": 30, "en_rotate": false, "en_rotate_second": 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": "imx412", "name": "hires2", "enabled": true, "camera_id": 2, "fps": 3, "en_rotate": true, "en_preview": true, "preview_width": 4056, "preview_height": 3040, "en_raw_preview": false, "en_small_video": false, "small_video_width": 1024, "small_video_height": 768, "small_venc_mode": "h265", "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": false, "large_video_width": 2048, "large_video_height": 1536, "large_venc_mode": "h265", "large_venc_br_ctrl": "cqp", "large_venc_Qfixed": 38, "large_venc_Qmin": 15, "large_venc_Qmax": 50, "large_venc_nPframes": 29, "large_venc_mbps": 30, "en_snapshot": false, "en_snapshot_width": 4056, "en_snapshot_height": 3040, "ae_mode": "lme_msv", "ae_desired_msv": 65, "exposure_min_us": 20, "exposure_max_us": 33000, "gain_min": 20, "gain_max": 250, "exposure_soft_min_us": 3000, "ae_filter_alpha": 0.700000023841858, "ae_ignore_fraction": 0.20000000298023224, "ae_slope": 0.05000000074505806, "ae_exposure_period": 1, "ae_gain_period": 0.5 }, { "type": "imx412", "name": "hires", "enabled": true, "camera_id": 3, "fps": 3, "en_preview": true, "preview_width": 4056, "preview_height": 3040, "en_raw_preview": false, "en_small_video": false, "small_video_width": 1024, "small_video_height": 768, "small_venc_mode": "h265", "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": false, "large_video_width": 4056, "large_video_height": 3040, "large_venc_mode": "h265", "large_venc_br_ctrl": "cqp", "large_venc_Qfixed": 38, "large_venc_Qmin": 15, "large_venc_Qmax": 50, "large_venc_nPframes": 29, "large_venc_mbps": 30, "en_snapshot": false, "en_snapshot_width": 4056, "en_snapshot_height": 3040, "ae_mode": "lme_msv", "ae_desired_msv": 65, "exposure_min_us": 20, "exposure_max_us": 33000, "gain_min": 20, "gain_max": 250, "exposure_soft_min_us": 3000, "ae_filter_alpha": 0.700000023841858, "ae_ignore_fraction": 0.20000000298023224, "ae_slope": 0.05000000074505806, "ae_exposure_period": 1, "ae_gain_period": 0.5 }, { "type": "ov7251", "name": "tracking", "enabled": true, "camera_id": 4, "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 }] } hope this helps
  • voxl2 mini, ov9782 + hires on J6

    7
    0 Votes
    7 Posts
    2k Views
    modaltbM
    Hi @Trinadh Can you confirm (using voxl-version) what version you have? e.g. should paste this info: -------------------------------------------------------------------------------- system-image: kernel: -------------------------------------------------------------------------------- hw platform: mach.var: -------------------------------------------------------------------------------- voxl-suite: -------------------------------------------------------------------------------- To confirm, you are using: VOXL2 Mini -> J6 -> M0135 --> JL for ov9282, and JU for IMX214? We don't have a binary setup for IMX214 or ov9782 on J6 upper, which is "ID 1". ls /usr/share/modalai/chi-cdk/ov9782 com.qti.sensormodule.ov9782_0.bin com.qti.sensormodule.ov9782_2.bin com.qti.sensormodule.ov9782_3.bin com.qti.sensormodule.ov9782_4.bin voxl2:/usr/lib/camera$ ls /usr/share/modalai/chi-cdk/imx214 com.qti.sensormodule.imx214_0.bin com.qti.sensormodule.imx214_2.bin com.qti.sensormodule.imx214_3.bin com.qti.sensormodule.imx214_4.bin So it seems like you would need a binary built for imx214 on "slot1", correct?
  • MO173 Vision Sensor specs

    voxl2 sensors
    2
    0 Votes
    2 Posts
    1k Views
    ModeratorM
    @Jetson-Nano The M0173 kits include the IR filter on all sensors.
  • Switching between cameras in QGC

    3
    0 Votes
    3 Posts
    557 Views
    Eric KatzfeyE
    @LR If you just want to change the camera that is streaming then modify /etc/modalai/voxl-streamer.conf to specify the desired camera. If you want to stream two or more cameras then you need to start a voxl-streamer instance for each one and specify a different port for each one. Then use voxl-mavcam-manager to inform QGC of the availability of the multiple streams. See https://docs.modalai.com/voxl-mavcam-manager/
  • Next Gen Camera Connectors

    7
    0 Votes
    7 Posts
    892 Views
    Alex KushleyevA
    @Jetson-Nano , just to add to what Vinny said and answer your specific question about vibration affecting the micro coax connectors. The difficulty associated with removal is separate from the connector’s robustness under vibration. Once the connectors are inserted (mated), they are difficult to disconnect without applying significant force that might actually break the connector (that is why a tool is required, which correctly separates the connector). This type of stress is very unlikely in typical applications, unless the drone crashes and camera or board is somehow ejected from the vehicle.
  • Connecting the Image Sensor Micro-coax Adapter to a Walksnail Camera

    3
    2
    0 Votes
    3 Posts
    755 Views
    VinnyV
    Hi @TomP Absolutely No. Do Not use our Micro Coax cables or adapter boards with ANY sensor other than provided by ModalAI. We spent months designing this new ecosystem of connectors, pinouts, and adapter boards with a ton of thought and care. Part of that is complete incompatibility with other vendors' products. https://docs.modalai.com/micro-coax-user-guide/ Thanks!
  • IMX 327

    2
    0 Votes
    2 Posts
    403 Views
    Alex KushleyevA
    @wilkinsaf , IMX327 no, but IMX664 maybe I think IMX664 is close to or better than IMX327 for low light, what do you think? Alex
  • Camera advice

    2
    0 Votes
    2 Posts
    412 Views
    Alex KushleyevA
    @Magnus-Eide-Fredriksen Please take a look at the following spectral sensitivity plots for the cameras we support: IMX412: https://www.framos.com/wp-content/uploads/FSM-IMX412_V1B_Datasheet_v1.1c_Brief.pdf IMX678: https://www.framos.com/wp-content/uploads/FSM-IMX678_V1A_Datasheet_v1.0d_Brief.pdf It seems IMX678 is more sensitive at the 940nm (relative sensitivity at 940nm to normal color range). Also, IMX678 by itself has higher sensitivity / lower noise compared to IMX412. We currently sell the following camera, which integrates the Framos module. It is not recommended for new designs, as quantities may be limited. https://www.modalai.com/collections/image-sensors/products/mdk-m0061-2 We are also working on a new version of IMX678 , similar to this IMX412 module : https://www.modalai.com/collections/image-sensors/products/msu-m0161 , but i don't have the ETA. If you wanted to try something that we have now, the best option may be M0061 camera module, but please review the information I linked above. Additionally, you can review the following page for comparison ; https://www.sony-semicon.com/en/products/is/security/security.html -- check the SNR1s (lx) *2 column for the two cameras, which is the "index used to quantitatively evaluate picture quality at low illumination" - basically the lower the number, the less pixel noise in low light conditions and IMX678 has about 4x lower quanity (which may or may not translate to 4x less noise, but something along those lines). Please note the IMX678 has less pixels than IMX412 (8.3 vs 12.3 Mpix) and aspect ratios are different (16:9 vs 4:3). Both IMX412 and IMX678 are supported by our SDK and we can help with testing if needed. Alex
  • VOXL2 - Legacy TOF MSU-M0040-1-01

    1
    1
    0 Votes
    1 Posts
    261 Views
    No one has replied
  • White Balance

    3
    0 Votes
    3 Posts
    448 Views
    G
    @Alex-Kushleyev Thanks for getting back to me. For what I am working on setting a fixed whitebalance seems like it would work, but I would at least find it useful if the white balance were tune-able. For my application I'm using the Modal drone for supervising Gaussian Splat training with an image stream, and color consistency across frames is important for good reconstruction otherwise I'll have to do color correction in the map which is a pain. Not sure if a lot of other people are using the HiRes for scene reconstructions so maybe its not universally useful though!
  • Not able to connect IMX678 with VOXL2 M0154

    1
    4
    0 Votes
    1 Posts
    297 Views
    No one has replied
  • What is the maximum number of hires cameras can be connect?

    5
    0 Votes
    5 Posts
    697 Views
    Alex KushleyevA
    Hi @Leon-Vaidman , We offer several high resolution cameras: IMX214 (4208x3120) : 13Mpix IMX412 (4056x3040) : 12Mpix IMX678 (3840x2160) : 8Mpix We are looking into supporting a 64Mpix camera, but it is not yet available. There is no problem getting RAW10 frames at 30fps from 2 cameras. I believe the limitation will come from saving the frames to VOXL2 storage (which may not be an issue if your target FPS is very low). Each 4056x3040 frame is 4056 * 3040 * 1.2= 14.8MB, so 30FPS would be around 440MB/s. I have set up a test where i connected two IMX214 cameras and two IMX412 cameras and configured for maximum resolution and the system is able to grab 30fps from each camera using voxl-inspect-cam, however streaming all this data to the inspect tool puts too much stress on the system and is only possible for a short period of time. | Pipe Name | bytes | wide | hgt |exp(ms)| gain | frame id |latency(ms)| fps | mbps | format | hires0_bayer |18534400 | 4056 | 3040 | 14.34 | 1330 | 73 | 70.6 | 30.1 | 4462.2 | RAW10 | hires1_bayer |19722240 | 4208 | 3120 | 33.00 | 800 | 74 | 104.8 | 30.3 | 4781.1 | RAW10 | hires2_bayer |18534400 | 4056 | 3040 | 17.20 | 1442 | 74 | 76.5 | 30.1 | 4466.4 | RAW10 | hires3_bayer |19722240 | 4208 | 3120 | 33.00 | 800 | 73 | 130.5 | 30.3 | 4780.8 | RAW10 Interacting with RAW frames of this resolution at high rate is not practical because even sending them from one process to another takes substantial cpu time. It seems that in your case the FPS will be very low, so that should not be an issue. if you wanted to save a few FPS RAW10 data from 2 cameras. I have described, more or less, the current limit of VOXL2 capabilities in terms of getting RAW images. Please keep in mind if you wanted processed images (YUV or video), you can currently only get that for two cameras. With this in mind, let me know please let me know what else you need to know or if you are ready to start testing, i can help you set this up. For low enough FPS, you may be able to use voxl-logger or voxl-record-raw-image tools or may need to modify them depending on your needs (I can help you with that). Alex
  • Camera not recognised

    2
    1
    0 Votes
    2 Posts
    412 Views
    Alex KushleyevA
    @TomP , if you look at C19 configuration (https://docs.modalai.com/voxl2-camera-configs/#c-17-tof-tracking-stereo0v9782-and-hiresimx412) , the IMX412 camera is connected to the other camera port on the dual camera flex. You have it connected to the connector that goes straight out (7JU), C19 shows IMX412 connected to the port going off to the side (7JL). If you want to keep IMX412 connected as shown in your picture, please copy the following file, which will tell the camera pipeline to try to detect the IMX412 camera on 7JU: cp /usr/share/modalai/chi-cdk/imx412/com.qti.sensormodule.imx412_3.bin /usr/lib/camera/ Please double check this
  • Vision sensors not detected in VOXL2

    17
    1
    0 Votes
    17 Posts
    3k Views
    Alex KushleyevA
    @Jetson-Nano , the ToF V1 calibration file is downloaded from the sensor itself via i2c . No internet connection is required.
  • 0 Votes
    1 Posts
    310 Views
    No one has replied