【まとめ】コンパニオンコンピュータ セットアップ 2024/4版

Linux
image_print

コンパニオンコンピューターの設定は目的により異なる。ここでは3つのパターンの設定を書く。

A. GoProとWiFi接続し、フライトコントローラとテレメトリーで接続し、カメラをコントロールする

B.ビデオをオンラインで見るためにLTE接続する

C. フライトコントローラーをLTE経由で通信する

どちらでも共通の設定はイーサーネットでPCと接続可能にすること。
なぜならば、どちらの接続であっても設定後は標準で準備していたWiFiの接続が切れるから。

しかも2024年3月くらいにネットワーク管理がdhcpd+wpa_applicantだったものがnetworkmanagerに変更され、設定の仕方が大きく変わった。

共通作業

raspberry pi os(bookworm)から、ログ管理のデフォルトがjournaldになりました。
/etc/log/syslogにログが出力されないと、運用が面倒なのでrsyslogをインストールします。

sudo apt -y install rsyslog

最後にpythonのパッケージ管理ツールpipを導入しておきます。

sudo apt install python3-pip

別記事でも書きましたが、これはerror: externally-managed-environmentで失敗するはず。
~/.pip/pip.confに

[global]
break-system-packages = true

を定義すること。

イーサネット設定

イーサーネットのIPアドレスを固定します。
イーサーの名前を確認します。

nmcli c

イーサの名前がWired connection 1となっているはずです。なんでこんな名前つけるのかね。
慣れ親しんだeth0に変更します。

sudo nmcli connection modify 'Wired connection 1' connection.id eth0

次に目的のeth0 (‘Wired connection 1’)に固定IPを設定します。

sudo nmcli connection modify eth0 ipv4.addresses 192.168.100.1/24

アドレス設定を確認します。

nmcli -f ipv4 connection show eth0

設定がautoなのが気に入らないので以下のコマンドで設定します。

sudo nmcli connection modify eth0 ipv4.method manual

Windowsのイーサーに192.168.100.xを設定します。
これでイーサ接続が確保されます。なお、対抗接続なのでゲートウェイなどなくてOKです。

Macの場合は接続すると、「システム設定」「ネットワーク」に「Ethernetサービス」とか「AX88179A」と出ますから「詳細」「TCP/IP」「IPv4の設定」と進み、やはりIPアドレスを設定します。

PC側の設定をし接続したら、sshで192.168.100.1に繋ぎにいきましょう。これがあれば安心。
(Windowsっていつから複数NICが使用可能になったんだろ?昔はこんなことしてたら動作しなかったぞ。)

以下、GoProとwifi接続するのでsshなどの接続はすべてイーサーネット経由で行います。

どのRaspiも192.168.100.1にしているので弊害も出ます。Raspiを変えるとシステムのフィンガープリントが合わなくなります。
VSCodeのリモート接続などができない場合、一度、ターミナルからssh ユーザー名@ipアドレスを入力してみてください。フィンガープリントがあわない場合は

ssh-keygen -R ipアドレス

で古いフィンガープリントを消して、再度接続を試みます。

DRONE KIT

git clone https://github.com/dronekit/dronekit-python.git
cd dronekit-python
python setup.py build install --user

ついでにPythonパッケージをいくつか

pip install--user jmespth

A. GoProとWiFi接続する

GoPro APIのインストール

pip install open-gopro

WIFIのAPコントロール

Network ManagerでGoproのapに接続する必要があります。
Goproを起動し、QUIKのプレビューを起動します。(WiFiがアクティベートされます)

nmcli dev wifi

今、Raspberry PIから見えているwifi APがリストされます。

*リストされないこともよくあります。その場合

sudo iwlist wlan0 scan

と入力し、いったんスキャンして、あらためてnmcli dev wifiをみてください。

GoProのワイヤレス接続->カメラ情報でAP名とパスワードを入手します。

Raspberry PIに

sudo nmcli dev wifi con GoproのSSID password Goproのパスワード

少し時間がかかりますが、接続できるはずです。(パスワードは最初のこの一回でよい)

nmcli c

で確認します。

接続のコントロールですが、
1. 繋いでいるSSIDを停止する

sudo nmcli connection down 止めたいSSID

2. 定義したことのあるSSIDへ再接続

sudo nmcli connection up つなぎたいSSID

3. SSIDの定義の削除

nmcli connection delete id 削除したいSSID

4. WIFIのオンオフ

sudo nmcli radio wifi on
sudo nmcli radio wifi off

この後の作業はGoProをpythonで動かすに続きます。

Raspberry PIとフライトコントローラーをテレメトリー接続する

Raspi上のDrone KitからフライトコントローラーのGPSデータを受け取る時はテレメトリー接続が必要です。
かつてやったMAVProxyによるRPIとPixhawkの接続を参考につなぎます

B. ビデオをオンラインで見るためLTE接続する

RaspiにLTE USB UX302NCを接続するためには、こちらの記事を参照する。

Motionのインストール

カメラ動画を見られるウェブサーバーとして使っていたLibJpegが簡単にインストールできなくなったので、Motionを使います。

導入の仕方はこちらを見ること。Motionは最低限の使い方です。いろいろできるらしい。

接続は

http://ip address:8081

これでコンパニオンコンピューターとして接続する。

C. フライトコントローラーをLTE経由で通信する

Raspberry PIをコンパニオンコンピュータと呼びます。
LTE USBドングルを接続し、Raspiとフライトコントローラーをテレメトリーとしてシリアルで接続します。
シリアルで接続し、MAVProxyを使ってTCP通信をシリアルに変換します。

  1. sudo raspi-configのinterfaceオプションでSeialをオン、shellはノー
    (i2cもオンにしておく)
  2. Bluetoothオフ /boot/config.txt
    enable_uart=1 #デフォルトでオン?
    dtoverlay=disable-bt
    arm_boost=1 #デフォルトでオン

    Bluetoothモデムの初期化を停止

    sudo systemctl disable hciuart
  3. Reboot
  4. /dev/AMA0があるはず
  5. MAVproxyインストール
    pip install PyYAML mavproxy --user
  6. パスを作る .bashrcの最後に以下を追加
    export PATH="$PATH:$HOME/.local/bin"
  7. mavproxyを最新にする
    pip install mavproxy pymavlink --user --upgrade

IP DISP使う時

どこかのAPにdhcpで繋いでディスプレイもキーボードもないオペレーションの場合に必要。

  1. raspi-configでi2cを有効にする
  2. i2cdetectをインストール
    sudo apt install i2c-tools
  3. pythonのsmpus2をインストール(sudo いります)
    sudo pip install smbus2

ユーティリティの確認

  1. 次のPythonスクリプトを個人フォルダーへコピー
    (dialup.sh ipdisp.py mavlink.sh)
  2. サービスを /etc/systemd/systemへコピー
    (ipdisp.service mavlink.service dialup.service)
  3. サービスをスタートしておく
    sudo systemctl start | enable ipdisp
    sudo systemctl start | enable mavlink

番外:WIFIをRaspiをAPモードで接続

以下は試してみたが、フライトコントローラーを作っている会社が提供している専用のテレメトリーで接続しても、距離はたいして変わりません。
構築手順は複雑なので、残しておく。

WN-G3000UAなどUSBドングルを差し込んでみる.
wlan1ができるはずです。APモード用dhcpサーバーをインストール

アクセスポイントにした時のDHCPサーバーをインストールします。

/etc/dhcpcd.confの末尾に以下を追加。

interface wlan1
static ip_address=192.168.10.1/24
nohook wpa_supplicant

interface eth0
static ip_address=192.168.100.1/24

dnsmasqのインストール

sudo apt install dnsmasq

設定ファイルは/etc/dnsmasq.conf

interface=wlan1
dhcp-range=192.168.10.10,192.168.10.20,255.255.255.0,24h

hostapdのインストール

sudo apt install hostapd

スタートするためにはunmaskが必要。

sudo systemctl unmask hostapd
sudo systemctl enable hostapd

設定ファイルは/etc/hostapd/hostapd.conf

interface=wlan1
country_code=JP
ssid=ARDUWIFI
hw_mode=g
macaddr_acl=0
wmm_enabled=1
auth_algs=1
ieee80211n=1
require_ht=1
channel=6
ignore_broadcast_ssid=0
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa=2
rsn_pairwise=CCMP
driver=nl80211

キーワードのつづりを間違えていると、エラーメッセージなしで立ち上がらない。

APモードテスト

sudo hostapd  /etc/hostapd/hostapd.conf

うまくいっていたらReboot

 

タイトルとURLをコピーしました