ZJU-FAST-Lab / Fast-Drone-250

hardware and software design of the 250mm autonomous drone
1.5k stars 279 forks source link

关于控制器部分的问题 #36

Closed pugummy closed 1 year ago

pugummy commented 1 year ago

您好!首先感谢您的分享! 请问px4ctrl里面控制器设计部分有没有参考文献呢?不是很明白控制器输出的姿态的计算方法。^_^

dongdongbh commented 1 year ago

https://github.com/ZJU-FAST-Lab/Fast-Drone-250/blob/8ff64274b161bb829653faf5946656658e7e2c9f/src/realflight_modules/px4ctrl/src/controller.cpp#L41-L42 我大概理解这两行并不是直接按微分平坦算的,而是在算外环(位置速度反馈和加速度前馈)的给内环串级控制的输入,这里实际上应该是把航向旋转影响消除后应该给内环的输入(实际上是外环输出通过旋转航向投影到pitch和roll轴以便姿态控制)。应该是这个矩阵image乘以[a0, a1, a2]。 这里gamma是航向角,不过我推出来roll = ( des_acc(1) * cos-des_acc(0) * sin ) ,roll和作者的方向相反,可能这里和roll的方向定义有关?

这里除以重力实际上应该是一种简单有点粗暴的归一化(反正有PID)参数,所以都无所谓的。具体还请作者指正。

另外关于Recursive least squares algorithm with vanishing memory https://github.com/ZJU-FAST-Lab/Fast-Drone-250/blob/8ff64274b161bb829653faf5946656658e7e2c9f/src/realflight_modules/px4ctrl/src/controller.cpp#L135

为什么要除 rho2_,原始的Recursive least squares algorithm这里似乎不需要除

image

FaboNo commented 1 year ago

@dongdongbh the equations are coming from which paper? 方程式来自哪篇论文?

dongdongbh commented 1 year ago

@FaboNo Recursive Least Squares Method

Nikanbaturu commented 1 year ago

@dongdongbh 您好!请问可以把controller理解为位置控制器吗?而且没太看懂对debug_msg_赋值的意义,是为了存储计算得到的期望值将其作为内级控制器的输入吗?

dongdongbh commented 1 year ago

debug_msg_只是为了debug方便而发布的topic,最终油门和姿态给了飞控,控制是位置和速度的P控制外加加速度前馈给到姿态控制器做串级

Nikanbaturu commented 1 year ago

@dongdongbh 感谢您的回答,那controller这部分的位置控制算法是否可以替换成其他的呢?

dongdongbh commented 1 year ago

可以

dongdongbh commented 1 year ago

Finally understand it by reading their PPT image 这里实际上用了小角度假设, 所以理论上还是SE3控制好一些,具体可参考

Minimum snap trajectory generation and control for quadrotors

FaboNo commented 1 year ago

@dongdongbh oh very interesting, where did you find the ppt?

dongdongbh commented 1 year ago

Here is a video with this ppt talking about these stuff, but in Chinese.

karjalv commented 1 year ago

另外关于Recursive least squares algorithm with vanishing memory

https://github.com/ZJU-FAST-Lab/Fast-Drone-250/blob/8ff64274b161bb829653faf5946656658e7e2c9f/src/realflight_modules/px4ctrl/src/controller.cpp#L135

为什么要除 rho2_,原始的Recursive least squares algorithm这里似乎不需要除

image

@dongdongbh Have you found any reason for this division with rho2_ ? I've been wondering the same thing.

bulingda commented 1 year ago

另外关于Recursive least squares algorithm with vanishing memory https://github.com/ZJU-FAST-Lab/Fast-Drone-250/blob/8ff64274b161bb829653faf5946656658e7e2c9f/src/realflight_modules/px4ctrl/src/controller.cpp#L135

为什么要除 rho2_,原始的Recursive least squares algorithm这里似乎不需要除 image

@dongdongbh Have you found any reason for this division with rho2_ ? I've been wondering the same thing.

Hello, do you understand the meaning of this formula?