DeepStream for Robotics
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 appsink
和 appsrc
元素连接到Isaac引擎,分别用于接收和发送。组件 pipeline
配置参数允许您使用任何配置和元素启动任何GStreamer管道字符串。
应用程序元素支持功能,格式和内存模型,并在下表中详细说明了等效的Isaac Protobuffer消息。使用适当的 videoconvert
和nvvideoconvert
元素以及上限过滤器以实现兼容性。功能必须明确定义。
<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应用程序中集成GStreamer管道。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压缩摄像机 |