ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Rowan Dempster
    3. Topics
    • Profile
    • Following 0
    • Followers 0
    • Topics 31
    • Posts 85
    • Best 0
    • Controversial 0
    • Groups 0

    Topics created by Rowan Dempster

    • Rowan DempsterR

      Running QVIO on a hires camera

      GPS-denied Navigation (VIO)
      • • • Rowan Dempster
      4
      0
      Votes
      4
      Posts
      57
      Views

      Alex KushleyevA

      @Rowan-Dempster , you should use a monochrome stream (_grey), since QVIO needs a RAW8 image.

      If you are not using MISP on hires cameras, that is fine, you can start off using the output of the ISP.

      You should calibrate the camera using whatever resolution you decide to try. This is to avoid any confusion, since if you using ISP pipeline, the camera pipeline may select a higher resolution and downscale + crop. So whenever you are changing resolutions, it is always good to do a quick camera calibration to confirm the camera parameters.

      When using MISP, we have more control over which camera mode is selected, because MISP gets the RAW data, not processed by the ISP, so we know the exact dimensions of the image sent from camera.

      Alex

    • Rowan DempsterR

      Migrating from QVIO to OpenVINS (SDK1.6)

      GPS-denied Navigation (VIO)
      • • • Rowan Dempster
      2
      0
      Votes
      2
      Posts
      101
      Views

      Rowan DempsterR

      Tagging people who might have the most context here: @Cliff-Wong @Clifford-Wong @zauberflote1, any comments / studies on comparative performance, as well tuning routines to get the best performance out of a running OpenVINS on a new airframe?

      Perusing posts about OpenVINS from the past year: https://forum.modalai.com/search?matchWords=all&in=titles&showAs=posts&replies=&repliesFilter=atleast&timeFilter=newer&timeRange=&sortBy=topic.lastposttime&sortDirection=desc&term=openvins I found some information about drifting and how to address it. But I'm not sure if that's the most up to date advice, it looks like the module is still under active development. Is the module in a place where it is ready for general customer use? The starling2 drones that ship with SDK1.6 use OpenVINs for localization, not QVIO, correct?

      Thank you for any input!

    • Rowan DempsterR

      Minimizing voxl-camera-server CPU usage in SDK1.6

      Video and Image Sensors
      • • • Rowan Dempster
      6
      0
      Votes
      6
      Posts
      107
      Views

      Alex KushleyevA

      Hi @Rowan-Dempster ,

      Please take a look at this example (you can build and run it too) : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-tools/-/blob/add-new-image-tools/tools/voxl-image-repub.cpp

      This app can accept a regular image (RAW8 or YUV) and either re-publish it unchanged or crop and publish the result. Sometimes this is useful for quickly cropping an image that is fed into a different application that expects a smaller image or different aspect ratio.

      The app shows how to subscribe and handle ion buffer streams.

      Usage:

      voxl2:/$ voxl-image-repub ERROR: Pipe name not specified Re-publish cropped camera frames (RAW8 or YUV) Options are: -x, --crop-offset-x crop offset in horizontal dimension -y, --crop-offset-y crop offset in vertical dimension -w, --crop-size-x crop size in horizontal dimension (width) -h, --crop-size-y crop size in vertical dimension (height) -o, --output-name output pipe name -u, --usage print this help message The cropped image will be centered if the crop offsets are not provided. typical usage: /# voxl-image-repub tracking --crop-size-x 256 --crop-size-y 256 /# voxl-image-repub tracking --crop-size-x 256 --crop-size-y 256 --crop-offset-x 128 --crop-offset-y 128

      example re-publishing ion buffer image as regular image (which you can view in voxl-portal ) :

      voxl-image-repub tracking_front_misp_norm_ion -o test

      (you can see which ion pipes are available by running voxl-list-pipes | grep _ion)

      Please note that without the previous fix that i posted above, the client process that receives and uncached ION buffer will incur extra CPU load while accessing this buffer. For example, the same voxl-image-repub client uses 1.7% cpu while republishing the normalized image (cached ion buffer), while using 7.3% cpu republishing an image from an uncached ION buffer. (cpu usage % using one of the smaller cores).

      Please try and let me know if you have any questions.

      I know this cached / uncached buffering may be a bit confusing, but i will document this a bit more to help explain it a little better.

      Alex

    • Rowan DempsterR

      Optimizing DSP Load wr.t. IO

      VOXL 2
      • • • Rowan Dempster
      3
      0
      Votes
      3
      Posts
      229
      Views

      Eric KatzfeyE

      @Alex-Kushleyev The IMU is being configured with an 8K ODR so by increasing IMU_GYRO_RATEMAX you are reading the FIFO more often but reading less samples each time. So you are mainly increasing the overhead of context switching. Can you characterize how much the load increases just by increasing IMU_GYRO_RATEMAX and not doing any of the extra UART IO? Unfortunately we don't have a lot of control over the low level implementation of the IO drivers that are in the Qualcomm code. And there is no DMA that could help lower IO overhead. One idea would be to lower the ODR to 1K so that you are only reading one sample from the FIFO at each interrupt.

    • Rowan DempsterR

      Recording RoyaleRecordingFile format from the ToF

      Image Sensors
      • • • Rowan Dempster
      3
      0
      Votes
      3
      Posts
      284
      Views

      Alex KushleyevA

      @Rowan-Dempster ,

      Here is where the raw data from the TOF sensor comes into voxl-camera-server : https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/dev/src/hal3_camera_mgr.cpp?ref_type=heads#L1242

      The data is in the MIPI12 packed format. The TOF library expects RAW16 format, so the data is converted from MIPI12 to RAW16 and fed into the TOF processing library. It is possible that dumping the RAW data is what RRF recording would be doing, so you could add that functionality to camera server to write the raw data to file. I could also help with publishing the RAW12 data as is to a mpa channel, so you can log it outside of the camera server (for example using voxl-record-raw-image utility. You could clarify with PMD if that would work (in other words, you would need to know the log format of the RRF recording)

      We have not tried enabling the raw data logging. However, if you know what function needs to be called within PMD library (maybe you just enable logging, and it does everything for you), you should be able to add it somewhere in the TOF init code, maybe here : https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/dev/src/tof_interface.cpp?ref_type=heads#L982

      You can find the API header files for Royale / Spectre in /usr/include/royale either on VOXL2 directly on in /opt/sysroots/qrb5165_1/usr/include/royale the voxl-cross:V4.4 docker.

      Hopefully that helps!

      Alex

    • Rowan DempsterR

      APPS IMU stopped producing data mid flight

      VOXL 2
      • • • Rowan Dempster
      1
      0
      Votes
      1
      Posts
      197
      Views

      No one has replied

    • Rowan DempsterR

      Camera server: Preview stream stops when Large video activated

      Video and Image Sensors
      • • • Rowan Dempster
      11
      0
      Votes
      11
      Posts
      1332
      Views

      Rowan DempsterR

      @Alex-Kushleyev Gotcha, thanks for the info Alex and your help resolving this issue!

    • Rowan DempsterR

      Do "tracking" cameras (e.g. ar0144) support the snapshot command?

      Video and Image Sensors
      • • • Rowan Dempster
      1
      0
      Votes
      1
      Posts
      260
      Views

      No one has replied

    • Rowan DempsterR

      PX4 qmi_error abort

      VOXL SDK
      • • • Rowan Dempster
      23
      0
      Votes
      23
      Posts
      2908
      Views

      Eric KatzfeyE

      @Rowan-Dempster No problem! Kind of primitive but effective 🙂

    • Rowan DempsterR

      Difference in A65 ToF output in Royale 4 vs. 5

      VOXL SDK
      • • • Rowan Dempster
      3
      0
      Votes
      3
      Posts
      326
      Views

      Rowan DempsterR

      (top is Royale 4, bottom is 5)

    • Rowan DempsterR

      Refactor voxl-camera-server into multiple processes (per cam)

      VOXL SDK
      • • • Rowan Dempster
      6
      0
      Votes
      6
      Posts
      607
      Views

      Alex KushleyevA

      @Rowan-Dempster ,

      I myself tried to do this some time ago and ran into issues, which i could not resolve. I am sure also someone else at Modal also tried it before me.

      If I remember correctly, my issue was that it could not get camera module in the second instance of the camera server, on this line, and i did not pursue this further (did not spend too much time on it though).

      https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/master/src/hal3_helpers.cpp?ref_type=heads#L79

      So in your case you are able to get the camera module?

      To help debug, you should run logcat while you are trying this and see what messages might show up there.

      And, finally, just wanted to mention that we don't know if what you are doing is possible, but if you want to keep pursuing this direction, I can help if i know the answer to your questions, but may not be able to spend time working on it right now.

      EDIT: in order to see if separate instances of camera server are possible, you could try to see if you can run multiple instances of gstreamer plugin that uses qmmfsrc. I found a doc that should be helpful in testing this, take a look : https://thundercomm.s3-ap-northeast-1.amazonaws.com/shop/doc/1596593567074634/Thundercomm EB5_Multimedia SDK User Guide_V1.1_ie89e.pdf

      Specifically, the following command should work, although i did not test it:

      gst-launch-1.0 -e qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! queue ! omxh264enc control-rate=max-bitrate target-bitrate=6000000 interval-intraframes=29 periodicity-idr=1 ! queue ! filesink location="/data/vid.h264"

      Also, i dont see how you sent the camera id in this example, but it should definitely be possible 🙂

      See if you can run two independent instances of gstreamer using different cameras. I think it should work, but not sure.

      Alex

    • Rowan DempsterR

      ToF Sensor Model (w.r.t. unmeasured points)

      Ask your questions right here!
      • • • Rowan Dempster
      2
      0
      Votes
      2
      Posts
      316
      Views

      ModeratorM

      @Rowan-Dempster I think it is safest to just not use data that reads 0,0,0 as the sensor cannot measure that close anyways

    • Rowan DempsterR

      CPU Temperature Throttling

      VOXL 2
      • • • Rowan Dempster
      11
      0
      Votes
      11
      Posts
      1264
      Views

      Alex KushleyevA

      About 95C is when the temperature control loop will kick in and start reducing the maximum core frequencies (gradually). You can monitor the cpu usage and current core frequencies using voxl-inspect-cpu.

      Here are the maximum core frequencies for all cores:

      cpu0 1804.8 cpu1 1804.8 cpu2 1804.8 cpu3 1804.8 cpu4 2419.2 cpu5 2419.2 cpu6 2419.2 cpu7 2841.6

      If you set the cpu governor mode to perf (voxl-set-cpu-mode perf), it will pin all the cores to max frequency and they will stay there unless they are being throttled due to temperature, which you can check using voxl-inspect-cpu.

    • Rowan DempsterR

      Micro DDS Failure

      Ask your questions right here!
      • • • Rowan Dempster
      1
      0
      Votes
      1
      Posts
      266
      Views

      No one has replied

    • Rowan DempsterR

      Switching between Mag+GPS and VIO indoors

      GPS-denied Navigation (VIO)
      • • • Rowan Dempster
      4
      0
      Votes
      4
      Posts
      646
      Views

      Eric KatzfeyE

      @Rowan-Dempster Mainline PX4 now works on VOXL 2. It hasn't received that much testing yet but you are welcome to try it out.

    • Rowan DempsterR

      PX4 Replay

      VOXL SDK
      • • • Rowan Dempster
      4
      0
      Votes
      4
      Posts
      436
      Views

      Eric KatzfeyE

      @Rowan-Dempster No, it isn't

    • Rowan DempsterR

      voxl-microdds-agent not installed on SDK1.2?

      Ask your questions right here!
      • • • Rowan Dempster
      2
      0
      Votes
      2
      Posts
      239
      Views

      tomT

      @Rowan-Dempster They've been released and are a part of the SDK but we just don't install them by default to save space.

      The .debs are onboard already and should install with an apt install

      In that context "blackisted" just means don't install by default.

    • Rowan DempsterR

      Image stabilization features in SDK

      VOXL SDK
      • • • Rowan Dempster
      1
      0
      Votes
      1
      Posts
      262
      Views

      No one has replied

    • Rowan DempsterR

      Digital zoom on hi-res camera

      VOXL SDK
      • • • Rowan Dempster
      5
      0
      Votes
      5
      Posts
      666
      Views

      Rowan DempsterR

      @thomas I assume we don't want to be dealing with 4k raw arrays on the CPU for performance reasons. So yeah as early as possible in the image proc pipeline, and how early we can push it is what I'm asking for advice on. We'll also reach out to @Alex-Kushleyev thanks!!

    • Rowan DempsterR

      Installing libpcl-dev

      VOXL SDK
      • • • Rowan Dempster
      3
      0
      Votes
      3
      Posts
      505
      Views

      Alex KushleyevA

      @Rowan-Dempster, i looked through the changelog of our project (https://gitlab.com/voxl-public/voxl-sdk/third-party/voxl-eigen3/) and it does not look that there are any changes done to eigen3 itself, i think it is just a package we inherited from VOXL1, which did not use apt.

      If you are willing to try it, remove voxl-eigen3 package (which may temporarily break something - note which packages require it). We could potentially update whatever gets broken to be happy with either voxl-eigen3 or eigen3 installed using apt.