cflib 的基本使用方法

Bitcraze官方提供了名为cflib的Python库来对无人机进行操作,下面介绍一些诸如飞行控制、获取log信息等基本操作的实现方法。 连接Crazyflie 我们通过URI*(Uniform Resource Identifier)*来标识Crazyflie无人机,其中URI的格式为:InterfaceType://InterfaceId/InterfaceChannel/InterfaceSpeed 例如:URI为radio://0/3/2M,其中: radio标识通过无线信号的方式(PA)来连接; 0标识是在电脑上标识为0号的无线设备; 3标识该设备在该连接设备下的频道; 2M标识无线信号的频率。 想要连接无人机的话,首先要初始化驱动(USB或者PA) cflib.crtp.init_drivers() 驱动初始化后便可以对每个接口进行扫描 available = cflib.crtp.scan_interfaces() 扫描操作会使用当前存在的连接设备(USB或者PA)来对可以通过该设备访问到的无人机进行扫描并以List的形式返回。 下面的操作用来连接第一个扫描到的无人机: import cflib.crtp from cflib.crazyflie import Crazyflie def connected_callback(link_uri): print("连接到了无人机") if __name__ == '__main__': # 初始化驱动 cflib.crtp.init_drivers() available = cflib.crtp.scan_interfaces() FIRST_LINK_URL = "" if len(available) > 0: FIRST_LINK_URL = available[0][0] else: print("没有扫描到无人机") cf = Crazyflie() cf.open_link(FIRST_LINK_URL) cf....

May 23, 2021 · Huo Haodong

Crazyflie 客户端无法扫描到 USB 接口的解决方法

有时我们想要通过USB连接Crazyflie并通过脚本或客户端控制和查看一些信息,但是会发现无法通过USB接口扫描到已经插上USB线材的Crazyflie设备。 解决方法 首先去官网下载zadig来安装驱动 zadig安装完成后,先用USB连接Crazyflie设备,之后打开zadig如下所示: 如果下拉框内没有Crazyflie设备选项,则需要在Options里找到List All Devices选项并勾选 在下拉框内选择Crazyflie设备 找到后安装对应驱动即可,如果安装驱动后仍然无法通过usb口找到Crazyflie设备,可以尝试更换驱动(比如从winusb换成libusb-win32)。

March 1, 2021 · Huo Haodong

OLSR 协议涉及到的主要概念

OLSR协议涉及到的主要概念 节点(node):实现OLSR协议的无线自组网(MANET,Mobile Ad Hoc Network)路由器。 OLSR接口(OLSR interface):在MANET运行OLSR协议的网络设备。一个节点可以有多个OLSR接口,且每个接口都被赋予了唯一的IP地址。 非OLSR接口(non OLSR interface):在MANET中不参与运行OLSR协议的网络设备。一个节点可能会有一些非OLSR接口(无线或有线)。来自这些接口的路由信息可能会被注入到OLSR路由域中。 单OLSR接口节点(single OLSR interface node):在OLSR路由域中只有一个OLSR接口的节点。 多OLSR接口节点(ultiple OLSR interface node):在OLSR路由域中有多个OLSR接口的节点。 主地址(main address):节点的主地址,在该节点发出的所有消息中作为“发起者地址”(originator address)来控制流量。它是节点众多(如果有多个的话)OLSR接口地址中的一个。单OLSR接口节点必须使用其唯一的OLSR接口地址作为主地址。多OLSR接口节点必须选择一个OLSR接口地址作为主地址,其作用类似于路由器id(router ID)或节点标识符(node identifier)。 邻节点(neighbor node):如果节点X可以监听到节点Y,则节点Y是节点X的邻节点。 二跳邻节点(2-hop neighbor):通过邻节点监听到的节点是其二跳邻节点。(节点自身及其某些一跳邻节点也可能会是其二跳邻节点)。 严格二跳邻节点(strict 2-hop neighbor):邻居的邻居但又不在自身邻居节点集合内的节点。 多点中继(multipoint relay,MPR):MPR通过其一跳邻居节点选出,作为MPR的节点需要转发其邻节点的广播信息。 MPR选择者(ultipoint relay selector ,MPR selector,MS):将其一跳邻居节点选为MPR的节点称为该MPR节点的MPR selector。 链路(link):两个不同的OLSR接口之间互相监听形成链路。 对称链路(symmetric link):两个 OLSR 接口之间已经互相认证的双向链路。 不对称链路(asymmetric link):两个 OLSR 接口之间只有一向已认证的链路。 对称一跳邻居(symmetric 1-hop neighborhood):与其一跳邻居之间至少存在一跳对称链路。 对称二跳邻居(symmetric 2-hop neighborhood):存在对称链路的二跳邻居。 对称严格二跳邻居(symmetric strict 2-hop neighborhood):存在对称链路的严格二跳邻居。

January 9, 2021 · Huo Haodong

Crazyflie M2 灯常亮而其他灯不亮的解决方法

Crazyflie在刷固件的途中会出现一些问题,最常见的情况就是刷固件失败后,Crazyflie的M2一直亮蓝灯而其他的灯都不亮。 解决方法 尝试按电源键关机然后重启,如果一切正常那么重新刷一下固件即可。 如果按电源键没有反应的话,尝试拔掉电池的接线然后再插上。 插拔电池的插线后,如果恢复了正常那么就回到步骤1,重刷固件即可。 如果上述方法还没有起作用,那么就: 拔掉电池排线; 手指顶着Crazyflie的电源键; 保持顶着电源键动作的同时,接上电池排线; 接上排线后,M2的蓝灯会一直亮,保持动作,等待3秒左右后M2会闪烁,这个时候松开电源键即进入了bootloader模式(关机状态下长按电源键直到M2闪烁再放手即进入bootloader模式),接下来重刷固件即可。 如果上面的步骤执行完毕仍不能解决问题,那么就是stm32的bootloader固件出了问题,只能先手动刷stm32的bootloader(这里直接去官方仓库),然后再进入bootloader模式刷固件了。

December 30, 2020 · Huo Haodong

Crazyflie 的 LED 灯闪烁含义

M2和M3只能为蓝灯,M1和M4可以为红灯或绿灯。 含义 M1 M2 M3 M4 自检通过 每秒闪两次红灯 常亮 常亮 / 自检通过但传感器还没有自动校准好 每两秒闪一次红灯 常亮 常亮 / 无线连接(PA)成功 / / / 闪红灯或绿灯 电池电量低 红灯常亮 不亮 不亮 不亮 充电中 每秒闪两次红灯 常亮 闪烁 不亮 引导加载模式(boot load mode) / 每秒闪一次 每秒闪一次 / 自检失败 反复闪五次 不亮 不亮 不亮 刷固件中途失败 不亮 常亮 不亮 / 连接上PA时,M4就会是红/绿(视觉上类似黄色)。 刷固件的时候,如果中途出问题了没刷成功,STM32会处于阻塞状态(blocking),这个时候按电源键也无法关机,拔下电池的插头重新接上即可。

December 25, 2020 · Huo Haodong