此页面由 AI 自动翻译。查看英文原版

本页目录

  • 输入和输出
  • 节点输入
  • 节点输出

设备节点

节点是在填充 Pipeline 时使用的构建块。每个节点在 DepthAI 上提供特定的功能,以及一组可配置的属性和输入/输出。在管道上创建节点后,您还可以根据需要对其进行配置并将其链接到其他节点。设备节点是一种特殊类型的节点,它在设备 SoC (RVC) 上运行,利用设备资源。设备节点用于将可以由设备本身完成的处理任务卸载到主机。或者,您也可以使用 主机节点 在主机 (PC) 上执行计算。在目录(页面左侧)中,所有节点都列在 Node 条目下。您可以点击它们以了解更多信息。

输入和输出

每个节点可以有零个、一个或多个输入和输出。例如,SystemLogger 节点没有输入,只有一个输出,而 EdgeDetector 节点有 2 个输入和 1 个输出(如下图所示)。Script 节点可以有任意数量的输入/输出。
每个节点的输出都有自己的池;RAM 中的一个块,用于存储消息。每个节点的输入都有一个用于消息指针的队列(不存储消息本身,只存储指向它的指针)。

节点输入

节点输入队列是用于消息的队列。它可以与其他节点的输出链接(这就是您链接节点的方式)。节点输入是可配置的 - 使用 input.setBlocking(bool)input.setQueueSize(num),例如 edgeDetector.inputImage.setQueueSize(10) 如果输入队列已满,输入行为取决于阻塞属性。假设我们将 ColorCamera 的 preview 输出链接到 NeuralNetwork 的 input 输入。
如果输入设置为阻塞模式,并且输入队列已满,则来自 ColorCamera 的新消息将无法进入输入队列。这意味着 ColorCamera 将阻塞并等待发送其消息,直到它可以将消息推送到 NeuralNetwork 输入的队列中。如果 ColorCamera 的预览连接到多个输入,则会发生相同的情况,消息将按顺序推送到每个输入。如果阻塞被禁用,新消息将覆盖旧消息。这消除了管道冻结的风险,但可能导致消息丢失(例如 ImgFrame)。

节点输出

节点输出消息。一些节点具有可配置的输出消息池。输出消息池是保留的内存区域(以减少内存碎片),用于保存输出消息。节点创建输出消息(例如 ImgFrame)后,它会将其发送到在链接节点的输入/输出时指定的其他节点。 目前,一些节点(VideoEncoder、NeuralNetwork、ImageManip、XLinkIn)可以配置池大小。 池的大小指定了在其他消息已在管道中时可以创建和发送多少条消息。
class

dai::Node

#include Node.hppDerived by dai::NodeGroup, dai::ThreadedNode
variable
Id id
variable
Id inputId
variable
Id outputId
variable
std::string alias
function
Node(const Node &)
function
Node & operator=(const Node &)
function
Node(Node &&)
function
Node & operator=(Node &&)
function
std::string createUniqueInputName()
function
std::string createUniqueOutputName()
function
Pipeline getParentPipeline()
function
const Pipeline getParentPipeline()
inline function
std::string getAlias()
inline function
void setAlias(std::string alias)
function
const char * getName()
inline function
void start()
inline function
void wait()
inline function
void stop()
function
void stopPipeline()
function
void buildStage1()
function
void buildStage2()
function
void buildStage3()
function
void postBuildStage()
function
std::vector< Output > getOutputs()
function
std::vector< Input > getInputs()
function
std::vector< Output * > getOutputRefs()
function
std::vector< const Output * > getOutputRefs()
function
std::vector< Input * > getInputRefs()
function
std::vector< const Input * > getInputRefs()
function
std::vector< OutputMap * > getOutputMapRefs()
function
std::vector< InputMap * > getInputMapRefs()
function
Output * getOutputRef(std::string name)
function
Output * getOutputRef(std::string group, std::string name)
function
Input * getInputRef(std::string name)
function
Input * getInputRef(std::string group, std::string name)
function
OutputMap * getOutputMapRef(std::string group)
function
InputMap * getInputMapRef(std::string group)
function
bool isSourceNode()
function
~Node()
function
const AssetManager & getAssetManager()
function
AssetManager & getAssetManager()
function
std::vector< uint8_t > loadResource(std::filesystem::path uri)
function
std::vector< uint8_t > moveResource(std::filesystem::path uri)
inline function
std::shared_ptr< N > create()
function
void add(std::shared_ptr< Node > node)
function
std::vector< std::shared_ptr< Node > > getAllNodes()
function
std::shared_ptr< const Node > getNode(Node::Id id)
function
std::shared_ptr< Node > getNode(Node::Id id)
function
void remove(std::shared_ptr< Node > node)
function
ConnectionMap getConnectionMap()
function
void link(const Node::Output & out, const Node::Input & in)
function
void unlink(const Node::Output & out, const Node::Input & in)
function
void link(std::shared_ptr< Node > in)
function
Node::Output * requestOutput(const Capability & capability, bool onHost)
function
std::vector< std::pair< Input &, std::shared_ptr< Capability > > > getRequiredInputs()
function
bool runOnHost()
inline function
const NodeMap & getNodeMap()
inline function
void buildInternal()
struct

dai::Node::Connection

#include Node.hpp
variable
Id outputId
variable
std::string outputName
variable
std::string outputGroup
variable
Id inputId
variable
std::string inputName
variable
std::string inputGroup
function
Connection(Output out, Input in)
function
Connection(ConnectionInternal c)
function
bool operator==(const Connection & rhs)
struct

dai::Node::ConnectionInternal

#include Node.hpp
variable
std::weak_ptr< Node > outputNode
variable
std::string outputName
variable
std::string outputGroup
variable
std::weak_ptr< Node > inputNode
variable
std::string inputName
variable
std::string inputGroup
variable
Output * out
variable
Input * in
function
ConnectionInternal(Output & out, Input & in)
function
bool operator==(const ConnectionInternal & rhs)
struct

dai::Node::ConnectionInternal::Hash

function
size_t operator()(const dai::Node::ConnectionInternal & obj)
struct

dai::Node::DatatypeHierarchy

variable
DatatypeEnum datatype
variable
bool descendants
inline function
DatatypeHierarchy(DatatypeEnum d, bool c)
class

dai::Node::Input

variable
std::vector< DatatypeHierarchy > possibleDatatypes
function
~Input()
inline explicit function
Input(Node & par, InputDescription desc, bool ref)
inline function
const Node & getParent()
Get the parent node
inline function
Node & getParent()
Get the parent node
inline function
Type getType()
Get type
function
std::string toString()
Input to string representation
function
void setWaitForMessage(bool waitForMessage)
Overrides default wait for message behavior. Applicable for nodes with multiple inputs. Specifies behavior whether to wait for this input when a Node processes certain data or not.
Parameters
  • waitForMessage: Whether to wait for message to arrive to this input or not
function
bool getWaitForMessage()
Get behavior whether to wait for this input when a Node processes certain data or not
Returns
Whether to wait for message to arrive to this input or not
function
std::vector< DatatypeHierarchy > getPossibleDatatypes()
Get possible datatypes that can be received
function
void setPossibleDatatypes(std::vector< DatatypeHierarchy > types)
Set possible datatypes that can be received
function
void setReusePreviousMessage(bool reusePreviousMessage)
Equivalent to setWaitForMessage but with inverted logic.
function
bool getReusePreviousMessage()
Equivalent to getWaitForMessage but with inverted logic.
function
void setGroup(std::string group)
Set group name for this input
function
std::string getGroup()
Get group name for this input
function
bool isConnected()
Check if this input is connected
function
std::shared_ptr< InputQueue > createInputQueue(unsigned int maxSize, bool blocking)
function
std::shared_ptr< dai::node::internal::XLinkInBridge > getXLinkBridge()
enum

Type

enumerator
SReceiver
enumerator
MReceiver
struct

dai::Node::InputDescription

variable
std::string name
variable
std::string group
variable
bool blocking
variable
int queueSize
variable
std::vector< DatatypeHierarchy > types DEFAULT_TYPES
variable
bool waitForMessage
class

dai::Node::InputMap

#include Node.hpp
variable
std::string name
function
InputMap(Node & parent, InputDescription defaultInput)
function
InputMap(Node & parent, std::string name, InputDescription defaultInput)
function
Input & operator[](const std::string & key)
function
Input & operator[](std::pair< std::string, std::string > groupKey)
function
bool has(const std::string & key)
class

dai::Node::Output

function
~Output()
inline function
Output(Node & par, OutputDescription desc, bool ref)
inline function
Node & getParent()
inline function
const Node & getParent()
function
std::string toString()
inline function
std::string getName()
Get name of the output
inline function
std::string getGroup()
Get group of the output
inline function
void setGroup(std::string group)
Set group name for this output
inline function
void setName(std::string name)
Set name for this output
inline function
Type getType()
Get type of the output
function
std::vector< DatatypeHierarchy > getPossibleDatatypes()
Get possible datatypes that can be sent
function
void setPossibleDatatypes(std::vector< DatatypeHierarchy > types)
Set possible datatypes that can be sent
function
bool isSamePipeline(const Input & in)
Check if this output and given input are on the same pipeline.
Parameters
canConnect for checking if connection is possible
Returns
True if output and input are on the same pipeline
function
bool canConnect(const Input & in)
Check if connection is possible
Parameters
Returns
True if connection is possible, false otherwise
function
std::vector< ConnectionInternal > getConnections()
Retrieve all connections from this output
Returns
Vector of connections
inline function
std::vector< QueueConnection > getQueueConnections()
Retrieve all queue connections from this output
Returns
Vector of queue connections
function
std::shared_ptr< dai::MessageQueue > createOutputQueue(unsigned int maxSize, bool blocking)
function
void link(Input & in)
Link current output to input.Throws an error if this output cannot be linked to given input, or if they are already linked
Parameters
function
void link(std::shared_ptr< Node > in)
function
void unlink(Input & in)
Unlink a previously linked connectionThrows an error if not linked.
Parameters
  • in: Input from which to unlink from
function
void send(const std::shared_ptr< ADatatype > & msg)
Sends a Message to all connected inputs
Parameters
  • msg: Message to send to all connected inputs
function
bool trySend(const std::shared_ptr< ADatatype > & msg)
Try sending a message to all connected inputs
Parameters
  • msg: Message to send to all connected inputs
Returns
True if ALL connected inputs got the message, false otherwise
function
std::shared_ptr< dai::node::internal::XLinkOutBridge > getXLinkBridge()
struct

dai::Node::Output::QueueConnection

variable
Output * output
variable
std::shared_ptr< MessageQueue > queue
inline function
bool operator==(const QueueConnection & rhs)
enum

Type

enumerator
MSender
enumerator
SSender
struct

dai::Node::OutputDescription

variable
std::string name
variable
std::string group
variable
std::vector< DatatypeHierarchy > types DEFAULT_TYPES
class

dai::Node::OutputMap

#include Node.hpp
variable
std::string name
function
OutputMap(Node & parent, std::string name, OutputDescription defaultOutput, bool ref)
function
OutputMap(Node & parent, OutputDescription defaultOutput, bool ref)
function
Output & operator[](const std::string & key)
function
Output & operator[](std::pair< std::string, std::string > groupKey)
struct

dai::Node::PairHash

inline function
std::size_t operator()(const std::pair< T1, T2 > & pair)
enum

std::int64_t Id