DeepStream for Robotics

作者: YottaYuan | 来源:发表于2020-03-18 03:36 被阅读0次

    DeepStream for Robotics

    技术

    NVIDIA DeepStream SDK提供用于基于AI的视频和图像的感知,以及多传感器处理的完整流式分析工具包。DeepStream是NVIDIA Metropolis不可或缺的一部分,该平台用于构建端到端服务和解决方案,以将像素和传感器数据转换为可行的见解。

    Isaac SDK附带了针对机器人用例量身定制的各种媒体获取,发布,编码,解码,推断和处理功能。但是,多媒体支持不是机器人技术框架的主要职责。机器人集成的多种多媒体需求使得直接支持变得困难,因此将DeepStream作为Isaac组件进行集成提供了解决方案。

    注意
    NVIDIA DeepStream SDK基于开放源代码的GStreamer库:这是一个基于管道的多媒体框架,将各种媒体处理系统链接在一起。GStreamer本身基于GLib:一组低级库,用于为C,可移植性包装,执行循环和接口提供数据结构处理。访问 GStreamer开源多媒体框架网站, 以获取详细信息和对该框架的贡献。

    零件

    开源GStreamer框架和NVIDIA DeepStream SDK作为Isaac组件的内部集成, 使您可以重用其多媒体处理功能的集合。Isaac和DeepStream产品自然可以在机器人技术和媒体使用案例中相互补充。

    GPU加速的DeepStream元素可以用作GStreamer管道定义的一部分。DeepStream可以与Jetson JetPack安装程序一起安装,用于Jetson Nano和Xavier平台。请按照DeepStream安装说明进行操作,以使其元素在主机系统上可用。

    注意

    Isaac不分发DeepStream或GStreamer。您必须选择要安装的模块并遵守其许可证。

    媒体管道分别通过named appsinkappsrc元素连接到Isaac引擎,分别用于接收和发送。组件 pipeline配置参数允许您使用任何配置和元素启动任何GStreamer管道字符串。

    应用程序元素支持功能,格式和内存模型,并在下表中详细说明了等效的Isaac Protobuffer消息。使用适当的 videoconvertnvvideoconvert元素以及上限过滤器以实现兼容性。功能必须明确定义。

    <colgroup style="box-sizing: border-box;"><col width="16%" style="box-sizing: border-box;"><col width="9%" style="box-sizing: border-box;"><col width="76%" style="box-sizing: border-box;"></colgroup>

    能力 格式 留言内容
    视频/ x-原​​始 RGB ColorCameraProto

    从DeepStream组件传输到其他Isaac组件的消息的获取时间戳为发布时的节点时间。

    工具类

    使用 gst-inspect-1.0 命令行工具,您可以查看主机上可用的元素:

    $ gst-inspect-1.0
    video4linux2:  v4l2src: Video (video4linux2) Source
    video4linux2:  v4l2sink: Video (video4linux2) Sink
    video4linux2:  v4l2radio: Radio (video4linux2) Tuner
    video4linux2:  v4l2deviceprovider (GstDeviceProviderFactory)
    dtls:  dtlsenc: DTLS Encoder
    [...]
    Total count: 265 plugins, 1420 features
    

    使用 gst-launch-1.0 命令行工具可以构建和运行GStreamer管道。通过将GST_DEBUG环境变量设置0为无调试输出和8完整内存转储之间的类别级别, 为GStreamer启用调试输出。的信息级别 4通常是最实际的。

    $ export GST_DEBUG=4
    # Your application will now output debug information when you run it.
    

    通过将GST_DEBUG_DUMP_DOT_DIR环境变量设置为现有的可写目录路径来获取管道图。使用该dot工具生成可见图像。

    $ sudo apt install graphviz
    $ export GST_DEBUG_DUMP_DOT_DIR=/tmp
    # Running your application will generate a FILENAME.dot file in the /tmp folder which can be
    # converted by the following command:
    $ dot -Tpng /tmp/FILENAME.dot > pipeline.png
    

    例子

    以下示例显示了GStreamer常见问题解答中的测试视频,其中 启用了调试信息,图形绘制和详细程度:

    $ GST_DEBUG=4 GST_DEBUG_DUMP_DOT_DIR=. gst-launch-1.0 -v \
      videotestsrc ! videoconvert ! autovideosink
    

    原始的GStreamer示例已进行了更改,以演示如何在Isaac应用程序中集成G​​Streamer管道。Isaac示例显示了如何将管道媒体导入或导出到应用程序配置中可用的Isaac通信通道。

    管道有两个容器:将测试视频源通过应用程序接收器引入Isaac,而应用程序源将视频流公开给显示视频接收器。 功能 的应用元件的方面受到限制。这样的videoconvert元素可确保对源元素和宿元素都支持RGB原始格式。因此,管道更改为以下内容:

    videotestsrc ! video/x-raw,format=RGB ! videoconvert ! appsink name=to_isaac
    
    appsrc name=from_isaac ! video/x-raw,format=RGB ! videoconvert ! autovideosink
    

    具有输入和输出到Isaac的多媒体管道

    艾萨克应用实例

    以下是一个最小的Isaac应用程序,该应用程序通过Isaac将视频从接收器传递到源:

    {
      "name": "example_pipeline_app",
      "modules": [
        "deepstream",
      ],
      "graph": {
        "nodes": [
          {
            "name": "deepstream",
            "components": [
              {
                "name": "message_ledger",
                "type": "isaac::alice::MessageLedger"
              },
              {
                "name": "pipeline",
                "type": "isaac::deepstream::Pipeline"
              }
            ]
          }
        ],
        "edges": [
          {
            "source": "deepstream/pipeline/to_isaac",
            "target": "deepstream/pipeline/from_isaac"
          }
        ]
      },
      "config": {
        "deepstream": {
          "pipeline": {
            "pipeline": "videotestsrc ! video/x-raw,format=RGB ! videoconvert ! appsink name=to_isaac  appsrc name=from_isaac ! video/x-raw,format=RGB ! videoconvert ! autovideosink"
          }
        }
      }
    }
    

    在Isaac WebSight中,使用视频测试源可视化应用程序接收器的外观如下所示:


    image.png

    可以在packages/deepstream/apps文件夹中找到其他演示应用程序:

    应用名称 示范
    gstreamer_pipeline_distributed_a 通过UDP传输获取并发布MPEG-4压缩视频
    gstreamer_pipeline_distributed_b 通过UDP传输接收MPEG-4压缩视频
    gstreamer_pipeline_multi 单个组件中有多个视频管道
    gstreamer_pipeline 简单的GStreamer视频测试源管道
    logitech_c920pro_cpu USB连接,V4L2接口,H.264压缩,CPU解码的摄像头
    philips_spc1330nc 普通USB连接,V4L2接口未压缩的原始摄像头
    sony_snchmx70 以太网IP / RTSP传输,H.264压缩摄像机

    相关文章

      网友评论

        本文标题:DeepStream for Robotics

        本文链接:https://www.haomeiwen.com/subject/jsbtyhtx.html