Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Compute & Autopilot
  3. VOXL 2
  4. EIS merge

EIS merge

Scheduled Pinned Locked Moved VOXL 2
32 Posts 7 Posters 8.0k Views 2 Watching
  • 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.
  • h3roboticsH h3robotics

    @Alex-Kushleyev thank you so much. I can wait till the changes are merged and available to update directly on the voxl2.

    Yes, I am using the IMX412 camera.

    I can start off with whatever you have got for now and hope for a good video feed on my drone without any gimbal. As new changes come along, I will update.

    I have never setup a build environment for voxl repos. I am used to building PX4 etc. with some of my custom changes. I would love to learn how to setup the build environment for the voxl repos. So if you can point me in the right direction, that would be great! I see in the docs, under "voxl SDK > custom voxl applications", there are some instructions.

    Thank you!

    h3roboticsH Offline
    h3roboticsH Offline
    h3robotics
    wrote on last edited by
    #18

    Hi @Alex-Kushleyev ,

    Any update on the EIS feature merge?

    Thanks.

    Alex KushleyevA 1 Reply Last reply
    0
    • h3roboticsH h3robotics

      Hi @Alex-Kushleyev ,

      Any update on the EIS feature merge?

      Thanks.

      Alex KushleyevA Offline
      Alex KushleyevA Offline
      Alex Kushleyev
      ModalAI Team
      wrote on last edited by
      #19

      Hi @h3robotics, Thanks for your patience.

      Actually as of right now, the EIS branch has been updated to have all the latest features from dev.

      One big improvement from prior EIS version is that now for each camera we support up to 4 MISP outputs of different resolution, fps, encoder params and each stream can have EIS on or off.

      Please hang tight, i just need to tie up some loose ends and add documentation. I will post an update most likely tomorrow. I will also share a voxl-camera-server.conf with the usage examples.

      Meanwhile please make sure you can build the eis branch from here, https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/tree/eis , using voxl-cross:4.0 docker image, which is required.

      Alex

      Alex KushleyevA 1 Reply Last reply
      0
      • Alex KushleyevA Alex Kushleyev

        Hi @h3robotics, Thanks for your patience.

        Actually as of right now, the EIS branch has been updated to have all the latest features from dev.

        One big improvement from prior EIS version is that now for each camera we support up to 4 MISP outputs of different resolution, fps, encoder params and each stream can have EIS on or off.

        Please hang tight, i just need to tie up some loose ends and add documentation. I will post an update most likely tomorrow. I will also share a voxl-camera-server.conf with the usage examples.

        Meanwhile please make sure you can build the eis branch from here, https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/tree/eis , using voxl-cross:4.0 docker image, which is required.

        Alex

        Alex KushleyevA Offline
        Alex KushleyevA Offline
        Alex Kushleyev
        ModalAI Team
        wrote on last edited by
        #20

        Hi All,

        Sorry for the delay again. We were chasing down a vibration issue which was apparently causing significant rolling shutter artifacts on the front camera in my tests. Apparently some of the lenses for IMX412 cameras have loose internal components, causing the vibration which is impossible to correct. On my test platform (Starling 2 Max), I had this issue and no frame modifications improved anything. The last thing to try was to switch out the lens and the issue was completely gone.

        We will investigate the reason for the loose lenses and the solution. In my case, shaking the lens would result in audible rattle inside the lens. If anyone has "shaky" lens, we will send a replacement.

        I will post some sample videos of what a bad lens might look like.

        The good news is that there is actually no major vibration issue on the Starling 2 Max and I can move forward with the EIS sw release.. stay tuned for another day or so! 🙂

        Alex

        JP DroneJ 1 Reply Last reply
        0
        • Alex KushleyevA Alex Kushleyev

          Hi All,

          Sorry for the delay again. We were chasing down a vibration issue which was apparently causing significant rolling shutter artifacts on the front camera in my tests. Apparently some of the lenses for IMX412 cameras have loose internal components, causing the vibration which is impossible to correct. On my test platform (Starling 2 Max), I had this issue and no frame modifications improved anything. The last thing to try was to switch out the lens and the issue was completely gone.

          We will investigate the reason for the loose lenses and the solution. In my case, shaking the lens would result in audible rattle inside the lens. If anyone has "shaky" lens, we will send a replacement.

          I will post some sample videos of what a bad lens might look like.

          The good news is that there is actually no major vibration issue on the Starling 2 Max and I can move forward with the EIS sw release.. stay tuned for another day or so! 🙂

          Alex

          JP DroneJ Offline
          JP DroneJ Offline
          JP Drone
          Contributor
          wrote on last edited by
          #21

          Hi @Alex-Kushleyev
          Some of the videos and photos taken with the IMX412 I have on hand were blurry due to vibration.
          I tried various things but couldn’t resolve the issue—however, it was resolved after I replaced the lens with a different one.
          Would it be possible to include a replacement lens with my current order?
          Also, I have a few units in stock, and I’m concerned there might be similar issues with them.

          Alex KushleyevA 1 Reply Last reply
          0
          • JP DroneJ JP Drone

            Hi @Alex-Kushleyev
            Some of the videos and photos taken with the IMX412 I have on hand were blurry due to vibration.
            I tried various things but couldn’t resolve the issue—however, it was resolved after I replaced the lens with a different one.
            Would it be possible to include a replacement lens with my current order?
            Also, I have a few units in stock, and I’m concerned there might be similar issues with them.

            Alex KushleyevA Offline
            Alex KushleyevA Offline
            Alex Kushleyev
            ModalAI Team
            wrote on last edited by
            #22

            @JP-Drone , I will double check, but we should be able to send replacements. However, we first need to figure out what's going on with these lenses and make sure the replacements are good.

            Here is an example of EIS running with bad and good lenses (just a short test):

            bad : https://drive.google.com/file/d/1g3dCVs64bBuDhSWJ-ZiKMbyHUBmR7AgB/view?usp=drive_link
            good: https://drive.google.com/file/d/1R6GCH3l2d6CbwRPCrMRbvD21e2yg3vfq/view?usp=drive_link

            Please note that when tested indoor (low light conditions), the rolling shutter "jello" may not be as obvious, since it will get smoothed out by the long exposure times.

            Alex

            Alex KushleyevA 1 Reply Last reply
            0
            • Alex KushleyevA Alex Kushleyev

              @JP-Drone , I will double check, but we should be able to send replacements. However, we first need to figure out what's going on with these lenses and make sure the replacements are good.

              Here is an example of EIS running with bad and good lenses (just a short test):

              bad : https://drive.google.com/file/d/1g3dCVs64bBuDhSWJ-ZiKMbyHUBmR7AgB/view?usp=drive_link
              good: https://drive.google.com/file/d/1R6GCH3l2d6CbwRPCrMRbvD21e2yg3vfq/view?usp=drive_link

              Please note that when tested indoor (low light conditions), the rolling shutter "jello" may not be as obvious, since it will get smoothed out by the long exposure times.

              Alex

              Alex KushleyevA Offline
              Alex KushleyevA Offline
              Alex Kushleyev
              ModalAI Team
              wrote on last edited by Alex Kushleyev
              #23

              The EIS branch is ready for initial tested. Please see the doc file:

              Link Preview Image
              voxl2-eis.md · eis · voxl / VOXL SDK / Services / voxl-camera-server · GitLab

              GitLab.com

              favicon

              GitLab (gitlab.com)

              You will need to build the camera server from this branch (and it's best to be able to do that anyway, if experimenting with eis..). Please note that you will need the latest voxl-cross:V4.0 docker image to build the camera server.

              The eis branch is sync'ed to latest dev as of today. Added basic params for specifying EIS behavior, as documented (eis_mode, eis_view, eis_follow_rate). Parameter usage is documented as well as basic voxl-camera-server.conf example is provided. Parameter names may change in the future, but the changes will be documented.

              Please use the latest IMX412 driver as instructed. For best results, use input resolution of 4040x3040 and output resolution can be anything. including 3840x2160. 4K60 output is supported (h265 strongly recommended), but you will not be able to view that via the voxl-portal.

              This release also supports eis on 3 additional MISP channels (can be different resolutions).

              We will be focusing next on improving stabilized ROI behavior for smoother output and experimenting more with rolling shutter compensation.

              Please try it out, i would be excited to get initial feedback.

              Alex

              JP DroneJ 1 Reply Last reply
              1
              • Alex KushleyevA Alex Kushleyev

                The EIS branch is ready for initial tested. Please see the doc file:

                Link Preview Image
                voxl2-eis.md · eis · voxl / VOXL SDK / Services / voxl-camera-server · GitLab

                GitLab.com

                favicon

                GitLab (gitlab.com)

                You will need to build the camera server from this branch (and it's best to be able to do that anyway, if experimenting with eis..). Please note that you will need the latest voxl-cross:V4.0 docker image to build the camera server.

                The eis branch is sync'ed to latest dev as of today. Added basic params for specifying EIS behavior, as documented (eis_mode, eis_view, eis_follow_rate). Parameter usage is documented as well as basic voxl-camera-server.conf example is provided. Parameter names may change in the future, but the changes will be documented.

                Please use the latest IMX412 driver as instructed. For best results, use input resolution of 4040x3040 and output resolution can be anything. including 3840x2160. 4K60 output is supported (h265 strongly recommended), but you will not be able to view that via the voxl-portal.

                This release also supports eis on 3 additional MISP channels (can be different resolutions).

                We will be focusing next on improving stabilized ROI behavior for smoother output and experimenting more with rolling shutter compensation.

                Please try it out, i would be excited to get initial feedback.

                Alex

                JP DroneJ Offline
                JP DroneJ Offline
                JP Drone
                Contributor
                wrote on last edited by
                #24

                Hi @Alex-Kushleyev
                Happy to test it.
                My IMX412 is mounted upside-down on J7-Lower (cam ID 2).
                Could you provide a flip version of the EIS driver, e.g. com.qti.sensormodule.imx412_fpv_flip_eis_2.bin?

                Thanks a lot for all the support!

                Alex KushleyevA 1 Reply Last reply
                0
                • JP DroneJ JP Drone

                  Hi @Alex-Kushleyev
                  Happy to test it.
                  My IMX412 is mounted upside-down on J7-Lower (cam ID 2).
                  Could you provide a flip version of the EIS driver, e.g. com.qti.sensormodule.imx412_fpv_flip_eis_2.bin?

                  Thanks a lot for all the support!

                  Alex KushleyevA Offline
                  Alex KushleyevA Offline
                  Alex Kushleyev
                  ModalAI Team
                  wrote on last edited by Alex Kushleyev
                  #25

                  @JP-Drone , If your camera is flipped (rotated 180), you just need to update your extrinsics to tell EIS the orientation of camera w.r.t IMU:

                  Link Preview Image
                  voxl2-eis.md · dev · voxl / VOXL SDK / Services / voxl-camera-server · GitLab

                  GitLab.com

                  favicon

                  GitLab (gitlab.com)

                  Instead of right side up

                  "RPY_parent_to_child":    [0, 90, 90]
                  

                  your extrinsic file should be

                  "RPY_parent_to_child":    [0, 90, -90]
                  

                  In other words, your /etc/modalai/extrinsics.conf should contain the following entry:

                  {
                      "parent": "imu_apps",
                      "child":  "<camera_name>",
                      "T_child_wrt_parent": [0.0, 0.0, 0.0],
                      "RPY_parent_to_child":    [0, 90, -90]
                  }
                  

                  (I am assuming VOXL2 is mounted in normal orientation, right side up)

                  Please try.

                  Also, we recently merged the EIS feature to dev branch of camera server, still working on better documentation.

                  Alex

                  Alex KushleyevA 1 Reply Last reply
                  0
                  • Alex KushleyevA Alex Kushleyev

                    @JP-Drone , If your camera is flipped (rotated 180), you just need to update your extrinsics to tell EIS the orientation of camera w.r.t IMU:

                    Link Preview Image
                    voxl2-eis.md · dev · voxl / VOXL SDK / Services / voxl-camera-server · GitLab

                    GitLab.com

                    favicon

                    GitLab (gitlab.com)

                    Instead of right side up

                    "RPY_parent_to_child":    [0, 90, 90]
                    

                    your extrinsic file should be

                    "RPY_parent_to_child":    [0, 90, -90]
                    

                    In other words, your /etc/modalai/extrinsics.conf should contain the following entry:

                    {
                        "parent": "imu_apps",
                        "child":  "<camera_name>",
                        "T_child_wrt_parent": [0.0, 0.0, 0.0],
                        "RPY_parent_to_child":    [0, 90, -90]
                    }
                    

                    (I am assuming VOXL2 is mounted in normal orientation, right side up)

                    Please try.

                    Also, we recently merged the EIS feature to dev branch of camera server, still working on better documentation.

                    Alex

                    Alex KushleyevA Offline
                    Alex KushleyevA Offline
                    Alex Kushleyev
                    ModalAI Team
                    wrote on last edited by
                    #26

                    Initial docs are up : https://docs.modalai.com/camera-video/electronic-image-stabilization/

                    S 1 Reply Last reply
                    0
                    • Alex KushleyevA Alex Kushleyev

                      Initial docs are up : https://docs.modalai.com/camera-video/electronic-image-stabilization/

                      S Offline
                      S Offline
                      SKA
                      Contributor
                      wrote on last edited by
                      #27

                      Hi @Alex-Kushleyev! Where can I find the IMX214 drivers for EIS? Thanks!

                      Alex KushleyevA 1 Reply Last reply
                      0
                      • S SKA

                        Hi @Alex-Kushleyev! Where can I find the IMX214 drivers for EIS? Thanks!

                        Alex KushleyevA Offline
                        Alex KushleyevA Offline
                        Alex Kushleyev
                        ModalAI Team
                        wrote on last edited by
                        #28

                        Hello @SKA,

                        I just posted the IMX214 sensormodules here : https://storage.googleapis.com/modalai_public/temp/imx214_test_bins/imx214_eis_drivers_20250815.zip

                        These support the new resolutions 4196x3120 and 2096x1560 needed for MISP / EIS.

                        IMX214 (M0025-2)
                        
                        4196x3120 - calibration file resolution 4196x3120 or 2098x1560
                        2096x1560 - calibration file resolution 2096x1560 or 2098x1560
                        

                        (calibration file is optional, EIS will run without one)

                        I also just updated the voxl camera server (dev branch) to enable MISP support for these resolutions and also a new feature to allow specifying the bayer pattern (in case you use the flipped sensormodule).

                        Here is an example snipped of voxl-camera-server.conf. The parameter bayer_type is optional and hidden by default. you can use rggb or bggr for IMX214. You can change this parameter if you see that your colors are flipped (red and blue).

                                                "type": "imx214",
                                                "name": "hires0",
                                                "bayer_type": "rggb"
                        

                        The performance of EIS with IMX214 has not been tuned - specifically the behavior of the ROI controller. We can come back to that if there is interest.. Mostly focusing on IMX412 with the fisheye lens for now.

                        Please try and make sure you can at least make it work and we can discuss performance tuning.

                        Alex

                        S 1 Reply Last reply
                        0
                        • Alex KushleyevA Alex Kushleyev

                          Hello @SKA,

                          I just posted the IMX214 sensormodules here : https://storage.googleapis.com/modalai_public/temp/imx214_test_bins/imx214_eis_drivers_20250815.zip

                          These support the new resolutions 4196x3120 and 2096x1560 needed for MISP / EIS.

                          IMX214 (M0025-2)
                          
                          4196x3120 - calibration file resolution 4196x3120 or 2098x1560
                          2096x1560 - calibration file resolution 2096x1560 or 2098x1560
                          

                          (calibration file is optional, EIS will run without one)

                          I also just updated the voxl camera server (dev branch) to enable MISP support for these resolutions and also a new feature to allow specifying the bayer pattern (in case you use the flipped sensormodule).

                          Here is an example snipped of voxl-camera-server.conf. The parameter bayer_type is optional and hidden by default. you can use rggb or bggr for IMX214. You can change this parameter if you see that your colors are flipped (red and blue).

                                                  "type": "imx214",
                                                  "name": "hires0",
                                                  "bayer_type": "rggb"
                          

                          The performance of EIS with IMX214 has not been tuned - specifically the behavior of the ROI controller. We can come back to that if there is interest.. Mostly focusing on IMX412 with the fisheye lens for now.

                          Please try and make sure you can at least make it work and we can discuss performance tuning.

                          Alex

                          S Offline
                          S Offline
                          SKA
                          Contributor
                          wrote on last edited by
                          #29

                          @Alex-Kushleyev The drivers worked, and the EIS as expected isn't tuned well. The MISP brightness looks alright outdoors, but indoors its very low. Increasing exposure_max_us helps but adds blur. Not sure if that's to be expected with this sensor, since it isn't as good in low-light conditions as the IMX412. Let me know if there's anything I can tune in the conf file to help with the brightness, and EIS output. Thanks!

                          Alex KushleyevA 1 Reply Last reply
                          0
                          • S SKA

                            @Alex-Kushleyev The drivers worked, and the EIS as expected isn't tuned well. The MISP brightness looks alright outdoors, but indoors its very low. Increasing exposure_max_us helps but adds blur. Not sure if that's to be expected with this sensor, since it isn't as good in low-light conditions as the IMX412. Let me know if there's anything I can tune in the conf file to help with the brightness, and EIS output. Thanks!

                            Alex KushleyevA Offline
                            Alex KushleyevA Offline
                            Alex Kushleyev
                            ModalAI Team
                            wrote on last edited by
                            #30

                            Hi @SKA,

                            The down side of using IMX214 vs IMX412 is that IMX214 is a much older sensor and it has several attributes that make it less desirable for using with EIS:

                            • lower pixel sensitivity and lower maximum gain range, requiring increasing exposure to achieve desired brightness, but this creates motion blur. The image brightness can be increased via digital gain, but will add some pixel noise
                            • smaller package / lens -- smaller lens does not allow as much light to enter the sensor
                            • smaller FOV (larger FOV with fisheye lens allows for more compensation margin)
                            • lower readout speed (about 2x slower). This increases the readout time, which is related to rolling shutter effect.

                            If the image brightness is the most concern to you right now, I can add a digital gain feature to boost the image brightness, but we are going to see some more pixel noise. I wanted to do that anyway, so may be a good chance to try it. After boosting the digital gain, ideally you would want to run some de-noising algorithm, but we don't have that yet in the MISP pipeline.

                            Are you working with an existing system that has IMX214 already integrated and want to see if you can enable EIS on that set up?

                            Alex

                            1 Reply Last reply
                            0
                            • Federico WyrwalF Offline
                              Federico WyrwalF Offline
                              Federico Wyrwal
                              wrote on last edited by
                              #31

                              I have the starling 2 drone with voxl2 and sdk 1.5. I have the imx412 sensor mounted. The EIS requires a config file that unfortunately does not match the available resolutions for my hires sensor: 4056x3040. Is there a way around this?
                              Another valid configuration exists for 1024x768

                              Alex KushleyevA 1 Reply Last reply
                              0
                              • Federico WyrwalF Federico Wyrwal

                                I have the starling 2 drone with voxl2 and sdk 1.5. I have the imx412 sensor mounted. The EIS requires a config file that unfortunately does not match the available resolutions for my hires sensor: 4056x3040. Is there a way around this?
                                Another valid configuration exists for 1024x768

                                Alex KushleyevA Offline
                                Alex KushleyevA Offline
                                Alex Kushleyev
                                ModalAI Team
                                wrote on last edited by
                                #32

                                @Federico-Wyrwal , please check the instructions for setting up EIS, specifically

                                Link Preview Image
                                Electronic Image Stabilization

                                ModalAI technical documentation for VOXL and VOXL 2 Companion Computers for PX4 and ArduPilot Obstacle Avoidance and GPS-denied navigation, assembled in the USA

                                favicon

                                ModalAI Technical Docs (docs.modalai.com)

                                The latest drivers can be downloaded from here

                                Please let me know if you have any other questions.

                                Alex

                                1 Reply Last reply
                                1

                                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                With your input, this post could be even better 💗

                                Register Login
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                ModalAI
                                Categories Recent Tags ModalAI.com Docs
                                © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups