Vector3d control = kp * error + ki * errorSum + kd * dError;报错C# 运算符“*"无法应用于“double"和“Vector3d"类型的操作数
时间: 2024-02-09 08:13:31 浏览: 54
这个错误是因为kp、ki和kd是double类型的常数,而error、errorSum和dError是Vector3d类型的向量,C#中的乘法运算符“*”不能直接将double类型的常数与Vector3d类型的向量相乘。
要解决这个问题,你需要将kp、ki和kd这三个常数与error、errorSum和dError这三个向量的每个分量分别相乘,然后将它们的和赋值给control向量的对应分量。你可以使用Vector3d类型的构造函数或属性来创建一个新的Vector3d类型的向量,如下所示:
```csharp
double kp = 1.0, ki = 2.0, kd = 0.5;
Vector3d error = new Vector3d(1, 2, 3);
Vector3d errorSum = new Vector3d(0.5, 1.5, 2.5);
Vector3d dError = new Vector3d(-1, -2, -3);
double x = kp * error.x + ki * errorSum.x + kd * dError.x;
double y = kp * error.y + ki * errorSum.y + kd * dError.y;
double z = kp * error.z + ki * errorSum.z + kd * dError.z;
Vector3d control = new Vector3d(x, y, z);
```
在这个示例中,我们分别将kp、ki和kd这三个常数与error、errorSum和dError这三个向量的每个分量相乘,然后将它们的和赋值给control向量的对应分量,最终得到一个新的Vector3d类型的向量control。
阅读全文