Estimador, controlador, Lighthouse y límites después del montaje
Los parámetros de un Crazyflie se ajustan desde Python por radio: cf.param.set_value('group.name', value) de cflib, o la pestaña Parameters de cfclient. Cualquiera de los dos decks obliga a usar el filtro de Kalman, y PID es el controlador por defecto; aquí las estaciones base son Lighthouse V2. Los límites de posCtlPid acotan lo que puede pedir el controlador de posición, 20° de inclinación y 1 m/s, y esas son las cifras con las que vuela el campo de pruebas.
# 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