Estimator, controller, Lighthouse and limits after the build
A Crazyflie's parameters are set from Python over the radio: cflib's cf.param.set_value('group.name', value), or the Parameters tab in cfclient. Either deck forces the Kalman filter and PID is the default controller; the base stations here are Lighthouse V2. The posCtlPid limits cap what the position controller may ask for, 20° of lean and 1 m/s, and those are the numbers the range flies.
# 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