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

如何在Drake中利用初始猜测便捷评估符号表达式?

解决Drake中用初始猜测值评估符号表达式的类型错误问题

错误原因

Expression.Evaluate() 要求传入**Dict[pydrake.symbolic.Variable, float]类型的环境字典**,但prog.GetInitialGuess(self.F)返回的是numpy数组,类型不匹配导致报错。

简便解决方案

不需要逐个变量调用prog.InitialGuess,以下两种方法可以快速完成评估:

方法1:生成变量-值字典

将变量数组与初始猜测值数组配对,生成符合要求的环境字典:

# 将二维变量数组转为一维列表
f_vars = self.F.flatten()
# 获取初始猜测值数组
f_guess = prog.GetInitialGuess(self.F)
# 生成环境字典
eval_env = {var: val for var, val in zip(f_vars, f_guess)}
# 评估表达式
result = sum_torques[0][0].Evaluate(eval_env)

方法2:使用pydrake.symbolic.Bind(推荐)

Drake的Bind函数支持直接将变量向量与数值向量绑定,批量处理更高效:

from pydrake.symbolic import Bind

# 绑定单个表达式
bound_expr = Bind(sum_torques[0][0], self.F, prog.GetInitialGuess(self.F))
result = float(bound_expr)

# 批量绑定整个矩阵(如果sum_torques是矩阵形式)
bound_sum_torques = Bind(sum_torques, self.F, prog.GetInitialGuess(self.F))
result_array = np.array(bound_sum_torques, dtype=float)

说明

两种方法都能一次性完成所有变量的初始猜测值绑定,避免了逐个变量处理的繁琐操作,完全适配Drake的符号表达式评估要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:27:20