概要
以下の方向けの記事です。
- crazyradioを購入していてLinux環境でセットアップをしたい方
- Crazyflie 2.X(以下crazyflie)の飛行データを取得したい方
- crazyflieとコンピュータを接続した際の通信の可視化を行いたい方
Bitcrazy社が開発したcrazyflieはオープンソース化されており、近年ドローン関連の研究で多く用いられています。また、同社が開発したCrazy Client(以下cfclient)GUIアプリを容易に連帯することも可能です。ファームウェアアップデートに使用する以外にも、飛行に関する様々なデータを取得したり、そのデータをcsvで保存したりなど様々な機能が実装されています。この記事ではcfclientのインストールから、飛行データの可視化とデータのcsvファイルへの保存方法について説明します。(crazyflieの組み立て方法はこちら)
目次
購入
Crazyradio 2.0の購入が必要です。UNIPOSの未掲載品だったため、私はこちらから問い合わせを行って購入しました。公式サイトからも購入できます。
crazyflie(ドローン本体)を未購入の場合はこちらから購入できます。こちらの記事も参考にしてください。
開封
入っているもの
- Crazyradio 2.0 x 1
- アンテナ x 1
開発環境
- Ubuntu 22.04.5 LTS
- ubuntuのインストールはこの記事を参考にしました。
- WindowsやMacの場合は公式サイトを参照してください。
- WSL2などでLinuxの仮想環境上でセットアップする場合は、USBポートへアクセスするための設定が別途必要になります。
- python 3.10.12
crazyradioの初期設定
このセクションではcrazyflieとPCの通信に使用するcrazyradioを使用できるようにするための手順を記載しています。
- cradyradioのコネクタにアンテナを回して接続します。
- ブートローダーモードにするため、組み立てたcrazyradioをボタンを押しながらUSBポートに挿入します。このときLEDが赤く光っていることを確認してください。
-
githubリリースページで"crazyradio2 -CRPA-emulation-[version].uf2"というファイルをクリックしてダウンロードします。私はこちらのversion1.1をダウンロードしました。
- ダウンロードしたファイルをファイルブラウザでcrazyradioドライブに drag & dropします。
ドライブへのインストールが完了すると(1秒足らずで)、ブートローダーモードではなくなり、ドライブは使用できなくなります。このときLEDが白く点灯していたら成功です。
- root権限なしでCrazyradio2.0をUSB経由で使用できるように設定します。コピー&ペーストで大丈夫です。
- plugdevというグループを作成し、ユーザを追加
sudo groupadd plugdev sudo usermod -a -G plugdev $USER
- udevのルール設定
cat <<EOF | sudo tee /etc/udev/rules.d/99-bitcraze.rules > /dev/null # Crazyradio (normal operation) SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="7777", MODE="0664", GROUP="plugdev" # Bootloader SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="0101", MODE="0664", GROUP="plugdev" # Crazyflie (over USB) SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0664", GROUP="plugdev" EOF
- 設定ルールを再読み込みして適応させる
sudo udevadm control --reload-rules sudo udevadm trigger
- plugdevというグループを作成し、ユーザを追加
cfclientインストール
続いてcfclientのインストールを行います。
-
git、pip、Qu GUIのライブラリをインストール
sudo apt install git python3-pip libxcb-xinerama0 libxcb-cursor0 pip3 install --upgrade pip
※Ubuntu20.04の一部のバージョンでは"libxcb-cursor0"などのパッケージをさらにインストールする必要があるのでQT6パッケージ依存関係リストを要確認
-
cfclientをインストール
pip3 install cfclient
※cfclientのソースコードを変更して開発を行いたい場合はこちら
-
crazyradioを挿入し、clientのGUIを立ち上げます。
cfclient
ファームウェアアップデート
crazyflieをPCと接続して、crazyflieのファームウェアアップデートを行います。一連の手順の動画(2倍速)を載せています。
-
crazyflieの電源を入れ、Connectを押して接続します。接続できない場合は、crazyflieやcfclientを再起動したり、scanを押すと正常に動作することが多いです。
-
画面上部のConnectのBootloaderをクリックします。
-
Firmware sourceのPlatform filterでcf2を選択し、Available downloadsで最新のものを選択します。
-
Programボタンを押してしばらく待機します。この間にcrazyflieが何度か自動で再起動します。
-
StatusがIDLEになるとファームウェアアップデート完了です。
飛行データのcsvファイル出力
crazyflieをPCと接続して、ログを取ります。一連の手順の動画を載せています。
-
Connectを押して接続します。接続できない場合は、crazyflieやcfclientを再起動したり、scanを押すと正常に動作することが多いです。
-
画面上部のViewのTabsからLog Blocksにチェックを入れます。
-
Log Blocksタブに移動します。ここで取得可能なログの一覧を見ることができます。追加のデッキなどを購入するとさらに多くの飛行データの取得が可能です。
-
Write to fileのところにチェックを入れるとログの記録が開始され、チェックを外すと記録が終了します。デフォルトでは100ms毎にログが保存されます。
-
ファイルシステムの、"~/.config/cfclient/logdata/" にcsvが保存されます。
今回は以上となります。他にも機能がたくさんあるのでぜひ試してみてください。お読みいただきありがとうございました。