You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pydrake中追溯输入端口所连接的输出端口?

如何追溯DiagramBuilder中输入端口的连接源

要自动获取控制器期望值输入端口对应的上游输出端口,你可以利用DiagramBuilder框架中端口的内置方法直接追溯连接关系,无需手动记录。以下是具体实现方式(以常用的Drake框架为例,不同框架的方法名可能略有差异,但核心逻辑一致):

  • 获取目标输入端口:先拿到控制器的期望值输入端口实例。假设你的控制器对象是controller,输入端口的名称为desired_value,可以通过框架提供的端口获取方法拿到它:

    // C++ 示例
    const InputPort<double>& desired_input_port = controller->GetInputPort("desired_value");
    
    # Python 示例
    desired_input_port = controller.get_input_port("desired_value")
    
  • 追溯连接的输出端口:通过输入端口的内置方法直接获取与之连接的上游输出端口:

    // C++ 示例
    const OutputPort<double>* connected_output_port = desired_input_port.GetConnectedPort();
    // 可进一步获取输出端口所属的系统
    if (connected_output_port != nullptr) {
      const System<double>& source_system = connected_output_port->get_system();
      // 后续可对source_system或端口进行数据读取、记录等操作
    }
    
    # Python 示例
    connected_output_port = desired_input_port.get_connected_port()
    if connected_output_port is not None:
        source_system = connected_output_port.get_system()
        # 后续处理逻辑
    
  • 异常处理:注意如果输入端口未被连接,上述方法会返回空指针(C++)或None(Python),实际使用时一定要添加判断,避免程序崩溃或报错。

这种方式完全依赖框架的连接管理机制,无需手动维护连接映射,当系统拓扑调整时代码也能自动适配,非常适合你的监控系统中动态获取期望值来源、计算误差并记录数据的需求。

内容的提问来源于stack exchange,提问作者Eric Cousineau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:45:23