状态估计器、控制器、Lighthouse 和限制 组装之后
Crazyflie 的参数通过无线电从 Python 设置:用 cflib 的 cf.param.set_value('group.name', value),或者 cfclient 里的 Parameters 标签页。装任意一块扩展板都会强制使用卡尔曼滤波器,PID 是默认控制器;这里的基站是 Lighthouse V2。posCtlPid 的限制约束了位置控制器能要求的值:20° 倾斜和 1 m/s,模拟场里飞的就是这些数值。
# cflib 0.1.34 in Python, connected with SyncCrazyflie: cf = scf.cf
cf.param.set_value('stabilizer.estimator', 2) # extended Kalman: either deck forces it anyway
cf.param.set_value('stabilizer.controller', 1) # PID (0, auto select, picks PID too)
cf.param.set_value('lighthouse.systemType', 2) # Lighthouse V2 base stations
cf.param.set_value('lighthouse.method', 1) # sweep angles straight into the Kalman filter (default)
cf.param.set_value('posCtlPid.rLimit', 20) # most roll the position controller asks for, degrees
cf.param.set_value('posCtlPid.pLimit', 20) # and pitch
cf.param.set_value('posCtlPid.xVelMax', 1) # m/s it may ask for along x
cf.param.set_value('posCtlPid.yVelMax', 1) # along y
cf.param.set_value('posCtlPid.zVelMax', 1) # up and down
cf.param.set_value('supervisor.tmblChckEn', 1) # motors off if it tumbles
cf.param.set_value('pm.lowVoltage', 3.2) # V: LED1 goes solid red
cf.param.set_value('pm.criticalLowVoltage', 3.0) # V