Crazyflie是一个小型四旋翼无人机平台。开源并且文档丰富,很适合做相关的研究。最新的型号是Crazyflie 2.0。
整体很小,自然续航时间和载重也有限。具体参数可以参见官网。
很多做机器人控制的实验室在用这个平台,于是很容易看到有意思的Demo。比如这个Swarm
还有这个奇怪的控制盒子:
这些精准的控制大多依赖于准确并且贵并且贵的Motion Capture系统。Crazyflie本身Sensor有限,在没有外部反馈的情况下是很难控制的。
不像是大疆那些消费级的无人机,很容易就可以飞的挺好。如果用官方的手机App来飞,想做到悬停就要稳定的给它适合的Thrust,基本上很难。
所以,当官方出了这个Flow Deck的时候,立马买了。据说一发布就卖断货了,除了说明产量小以外,也说明刚需旺盛。
Flow Deck可以为Crazyflie提供简单的位置信息,让它可以在没有外部Motion Capture系统的情况下稳定的悬停。
很明显的可以看见板子上有一个向下的摄像头。Flow也就是指Optical Flow。
这就是小飞机和Flow Deck:
可以用原装的卡电池的架子透出板子的部分,把Flow Deck固定在小飞机下面。仔细看板子上有一个小箭头表明正确的安装方向。
然后需要做的是升级小飞机的固件。
这个demo.py可以让crazyflie悬停在0.4米高的位置半分钟
import logging
import time
import cflib.crtp
from cflib.crazyflie.syncCrazyflie import SyncCrazyflie
URI = 'radio://0/80/250k'
# Only output errors from the logging framework
logging.basicConfig(level=logging.ERROR)
if __name__ == '__main__':
# Initialize the low-level drivers (don't list the debug drivers)
cflib.crtp.init_drivers(enable_debug_driver=False)
with SyncCrazyflie(URI) as scf:
cf = scf.cf
cf.param.set_value('kalman.resetEstimation', '1')
time.sleep(0.1)
cf.param.set_value('kalman.resetEstimation', '0')
time.sleep(2)
for y in range(300):
cf.commander.send_hover_setpoint(0, 0, 0, 0.4)
time.sleep(0.1)
效果还不错。