zoukankan      html  css  js  c++  java
  • IndemindSDK数据采集程序

    Indemind相机数据采集

    最近做一些实验需要自己采集一些数据玩玩,打算用之前买的indemind双目模组,实际用的时候感觉官方提供的采集程序不太好用,于是打算自己用官方驱动写个简单小程序玩玩.

    1. Why?

    之所以不用官方的驱动程序,官方采集程序好像没有提供帧率等参数的设置选项,官方的ROS驱动不太好用,深度图信息有时候没有,并且完全封闭,所以打算自己直接处理原始数据,顺路复习复习OpenCV和C++.

    2. 要处理的问题

    唯一比较麻烦的问题就是当帧率比较高的时候,数据量会比较大,但是官方驱动的工作模式是,你提供自己实现的回调函数,它直接根据硬件频率进行触发,回调函数必须能够比较快地返回。如果把写入放在回调函数里,那么会造成回调函数延迟,导致一些数据的丢失.

    3. 解决方案

    简单的生产者消费者模型就能完事了,把回调函数获得的结果直接存入队列,再开多个写入线程进行写入磁盘操作,可以保证队列不会爆掉.要注意的一些问题就是多线程读写加锁的问题.

    单线程回调,单线程写入:

    Queue size: 166
    Queue size: 167
    Queue size: 167
    Queue size: 168
    Queue size: 169
    Queue size: 169
    

    结果队列会不断增长,显然不合适

    单线程回调,多线程写入:

    Queue size: 0
    Queue size: 0
    Queue size: 0
    Queue size: 1
    Queue size: 0
    Queue size: 0
    Queue size: 0
    Queue size: 0
    Queue size: 1
    Queue size: 0
    Queue size: 0
    

    四线程写入的时候才能达到预期效果.

    4. 总结

    参数配置的确要找一个好用的库,不然太难受了!

    PS:代码不写不知道,一写吓一跳,真的丑....

    另外,对于这种类型的SDK接口,能不能想办法把代码接口封装地更好,现有的实现是定义全局函数,提供给SDK,直接给类成员函数貌似扑街了...后续有空把深度图生成和ROS相关的接口添加进去.

    5. 完整实验代码

    https://github.com/JiaoYanMoGu/indemind_data_collect

  • 相关阅读:
    SonarQube代码质量管理平台安装与配置
    特殊字符大全
    测试“用户登录”功能
    通用测试用例大全
    k8s dashboard 部署并使用 kubeconfig 登陆
    k8s cert-manager 部署
    nginx ingress部署
    Harbor 安装
    kubernetes 高可用集群1.14 部署
    shell 免密远程执行
  • 原文地址:https://www.cnblogs.com/jymg/p/11608619.html
Copyright © 2011-2022 走看看