Seems things have changed with voxl-camera stuff...



  • Prior to updating to the latest system image (4.0.0), I had written up some procedures for our team to use regarding configuring cameras and adjusting their settings (exposure/gain etc..).
    Now on 4.0.0, things appear to be quite different (or am I just hallucinating?)...

    • The /etc/modalai/vox-camera-server.conf file is quite different. There's no longer an "auto_exposure_mode" entry apparently. When I added it, then voxl-streamer wouldn't even start.
    • There's no longer a -c option to voxl-streamer, so how to I specify the camera I want to stream from?
    • Etc..

    The main issue for me at this point is that I can no longer adjust gain/exposure on hires camera.

    If there is documentation that shows these changes, please point me to it.
    Thanks



  • @Alex-Gardener can you comment on this?
    As far as I can tell (referring to latest voxl-camera-server source code) the hires camera (IMX214) defaults to AE mode of AE_ISP.
    In that mode, I have not been able to change exposure/gain; however, I modified the code to allow me to change AE mode. With that, I set it up for AE_LME_MSV and then I can make the adjustments.
    If you think this is a valid change, I can give you the code; otherwise, if these adjustments should work with hires in AE_ISP mode, please let me know how that is done.
    Thanks,



  • I've made the modifcations in a fork of the voxl-camera-server, so please take a look here.



  • Sorry, just more questions...
    I see the /etc/modalai/voxl-streamer.conf file has also changed dramatically... How do I stream from a USB camera with the current configuration file?


  • Dev Team

    Hi!

    Sorry for the delay, Yes, the camera server config file has changed drastically with the goal of having it be both more simple and more dynamic. In doing so we standardized the AE algorithm for each sensor, and it seems that the ability to change away from the default missed our regression testing. If you've already reimplemented this I'd be happy to take a look and merge it back in, otherwise I'll do it myself and be sure to have it in the next release.

    As for streamer; we also drastically simplified this to move away from the monstrous old config file to one that more closely follows the format of the rest of our services. The USB functionality has been moved to voxl-uvc-server to allow not just streaming usb cameras but also using them in MPA like our MIPI cameras. If you set up UVC server to grab the usb camera frames then you can stream them through streamer as you would the hires or tracking camera.



  • @Alex-Gardner Great! Can you tell me if the exp/gain adjust has been tested when using AE_ISP with hires? I wasn't able to get that to work; hence, my need to change the ae_mode. If manual exposure/gain adjust does work in AE_ISP mode I assume that is the better way to go (true?); meanwhile, yes, I did a fork and branch with the changes needed for the server to support the ability to change ae_mode in the .conf.
    I also made a minor addition to voxl-streamer so the port could be pulled from the .conf file if interested.

    How do I get that to you? Could I have just cloned your code and then pushed a branch back to you? If that's the proper way to do it I'll do that next...
    I'll look into the USB stuff next and get back to you.

    One last question...
    When I tried to build voxl-streamer I had to do a lot of hacking to allow the docker environment to "see" the libraries and header files from the required modules (libmodal_json/journal/pipe). Is something missing from the instructions for this or am I just confused? I'm using emulator:V1.7.
    Thanks



  • @Alex-Gardner Ok, regarding USB camera...
    I run voxl-uvc-server -v VID -p PID -o mycam
    Then in another window I run voxl-streamer -i mycam.
    That works!

    (so I think the only open issue is the build procedure for voxl-streamer)

    Ed



  • @Alex-Gardner Not sure if this is what you want, but I posted an issue to voxl-camera-server and voxl-streamer and added a comment that points to the branches in my forks that have the changes I made.
    If there is a more convenient way to do this, let me know.



  • @Alex-Gardner Just reviewing the open issues in this thread, looks like 2 things:

    1. Do I need to switch out of AE_ISP mode to be able to control the hires camera's gain and exposure settings? As far as I can tell, the answer is yes. If that's not the case, please let me know (I'm guessing that it is more efficient to run in AE_ISP mode).

    2. As far as I can tell, the build procedure for voxl-streamer is missing something (if not, I need to understand why I have to move a lot of files around to get the build to complete). Please let me know what the status of this is.
      Thanks,
      Ed


  • Dev Team

    Hi,

    I'll take a look at those issues you posted.

    As for those last questions:

    1. At this point it's a known bug that the set exp/gain commands won't take the camera off of the ISP AE mode. This, along with the missing mode parameter in the config file, will be fixed in the next release. In the meantime you can do what I think you've already done and change the default, which should break out of the auto exposure when you give it a manual value.

    2. What branch/platform are you trying to build streamer for? I just validated that the master branch is building correctly for both apq and qrb in their respective emulators.



  • @Alex-Gardner This is the output I get from build.sh apq8096:

    voxl-emulator:~$ ./build.sh apq8096
    -- The C compiler identification is GNU 4.9.3
    -- The CXX compiler identification is GNU 4.9.3
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    BUILDSIZE does not match 64
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    MODAL_JOURNAL
        linked by target "voxl-streamer" in directory /home/root
    MODAL_JSON
        linked by target "voxl-configure-streamer" in directory /home/root
        linked by target "voxl-streamer" in directory /home/root
    MODAL_PIPE
        linked by target "voxl-streamer" in directory /home/root
    
    -- Configuring incomplete, errors occurred!
    See also "/home/root/build32/CMakeFiles/CMakeOutput.log".
    make: *** No targets specified and no makefile found.  Stop.
    

    As best I can tell this is because it can't find the libmodal_json/journal and pipe libraries, so I fixed that by modifying the CMakeLists.txt file and copying those libraries to a directory that would exist under /home/root when docker starts up.
    After a few hacks like that I was able to build it, but clearly I'm doing something wrong. Any idea what I might be doing wrong?
    I'm using voxl-emulator:V1.7
    Ed


  • Dev Team

    Did you run the install_build_deps.sh script? that should set up all of the build dependencies correctly



  • @Alex-Gardner Huh? There's nothing in the README.md "Build Instructions" that says to do that; but yes, I see if I do that, things build clean!
    Ed


  • Dev Team

    For reference, here is the CI status for all of the packages. You can see how they are built by looking at the ci scripts. Almost all are built the same way



  • @Chad-Sweet I'm not familiar with a "ci script", I've just been referring to the README.md file at the top of each of the project repositories. Most of the projects do include a install_build_deps.sh step, but that wasn't in voxl-streamer's README.md, so I didn't realize I had to run it. No worries; although, it's probably a good idea that the README.md be updated to include that.


Log in to reply