1

在我的DoCalcTimeDerivative中,我需要将 cos 作为状态向量元素之一。

我使用以下代码执行此操作

Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = std::cos(x[0]);

但是,我收到以下错误

error: no matching function for call to ‘cos(Eigen::DenseCoeffsBase<Eigen::Matrix<Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >, 4, 1, 0, 4, 1>, 1>::Scalar&)’

我也尝试过使用

const systems::VectorBase<T>& x = context.get_continuous_state_vector();
T c0 = std::cos(x[0]);

这同样给出了以下错误

error: no matching function for call to ‘cos(const Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >&)’

正如我在示例中看到std::cosstd::sin使用的那样,这很奇怪,但我似乎无法弄清楚为什么它在示例中有效,但在我的示例中无效。

4

1 回答 1

2

试试这个:

using std::cos;
Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = cos(x[0]);
于 2019-06-10T23:44:33.800 回答