🎃

[ロボカップレスキュー実機] vsting環境構築

に公開

概要

ロボカップレスキュー実機リーグに参加している者です。2023年のロボカップ世界大会から、無線ネットワークの劣化をエミュレートする「vSting」が導入されました。このシステムをオペレータとロボット間のネットワークに組み込むことで、実災害現場に近い通信環境を再現できます。競技においてvStingを使用すると得点が数倍になるインセンティブルールも追加されました。GitHubの公式手順に従えば比較的簡単にセットアップできますが、本記事では私の環境(Ubuntu 22.04 & Docker Compose v2系)での構築方法について解説します。
https://rrl.robocup.org/wp-content/uploads/2023/03/2023-03-15_Teams-Announcement-vSting-Module.pdf

vstingとは

vStingはロボカップレスキューリーグで使用される無線ネットワーク劣化エミュレーションモジュールです。遠隔操作型モバイルロボットの評価を目的として、ドルトムント工科大学(TU Dortmund)によって開発され、2023年のロボカップレスキューリーグから正式導入されています。
主な機能としては:

  • レイテンシー(遅延)のシミュレーション
  • パケットロス(通信途絶)のシミュレーション
  • 帯域幅制限のシミュレーション
    これらを組み合わせることで、災害現場での不安定な通信環境を再現します。実際の使用時には、オペレータステーションとロボット間のイーサネット接続に物理的に挿入して使用します。

https://cni.etit.tu-dortmund.de/storages/cni-etit/r/Research/Publications/2023/Patchou_2023_SSRR/Patchou_SSRR2024_AuthorsVersion.pdf

https://github.com/tudo-cni/vsting-sa

使用環境と必要機材

使用環境についてはLinuxがインストールされたパソコンであり、2つのEthernet Portsがあればどの環境でも動くはずです。著者は以下の環境で動かしました。

ソフトウェア環境

  • OS: Ubuntu 22.04 (公式推奨は Ubuntu 20.04)
  • Docker Compose: version v2.34.0 (公式推奨は v1.25.5)

ハードウェア環境

  • ホスト用ルーター: ROG Rapture GT-AX11000
  • ロボット用ルーター:ASUS RT AX3000
  • PC: MouseComputer Co.,Ltd. P650HP6 (ノートパソコン)
  • LAN アダプター: Buffalo 有線LANアダプター

環境構築

環境構築に関しては実際のリポジトリのREADMEを見ながら行います。
https://github.com/tudo-cni/vsting-sa

1. vstingに必要なaptパッケージをインストールする

sudo apt install -y coreutils sed wget git python3 iptables-persistent network-manager

2. Dockerのインストール

下記のサイトを参考にする。
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

ユーザーを docker グループに追加する

sudo usermod -aG docker $USER

3. vstingのリポジトリをクローンする

cd ~/
git clone https://github.com/tudo-cni/vsting-sa.git

4. vstingのダウンロードスクリプトを実行する

(cd vsting-sa/scripts && chmod +x *.sh && ./download-release.sh)

5. ネットワークインターフェイスを設定する

vstingには2つのネットワークインターフェイスが必要である。通常のノートパソコン等には1つしかイーサネットポートがないケースが多いので、LANUSBなどを使って物理的なイーサネットポートを増やす。接続されているネットワークの一覧を表示するためには次のコマンドを入力する。

  ls /sys/class/net

著者の環境では下記のように表示された。

hasegawa@hasegawa:~$  ls /sys/class/net
docker0  enp109s0f1  enxc436c0ea9563  lo wlp110s0

今回イーサネットポートはenp109s0f1enxc436c0ea9563の2つでenp109s0f1がロボット側、enxc436c0ea9563が操縦者側になります。下記をスクリプトを用いてvstingの設定を行います。

(cd vsting-sa/scripts && ./setup-custom-device.sh enxc436c0ea9563 enp109s0f1)

実行後に下記のコマンドでネットワークブリッジがアクティブになっていることを確認します。

nmcli connection


上記のように設定ができたら、接続をアクティブにします。bridge-vsting、vsting-br-operator、vsting-br-robotの3つをそれぞれおnmcli connection upします。

nmcli connection up bridge-vsting
nmcli connection up vsting-br-operator
nmcli connection up vsting-br-robot

6. vstingのsystemdサービス内容の変更

「4. vstingのダウンロードスクリプトを実行する」でホームディレクトリ上にvstingという名前でフォルダがダウンロードされています。これが実際にsystemdのサービスで起動するスクリプトの内容が含まれたフォルダになります。ただしこちらのフォルダの中にはdocker compose v1向けのコマンドが記載されています。現在はv2を使っている方が多く、vstingの為だけにdocker composeをv1にダウングレードするのはやや手間がかかるのでsystemdの中身を変えてv2でも動くようにしましょう。

# drz-vsting-logs.service
- ExecStart=/usr/local/bin/docker-compose up
- ExecStop=/usr/local/bin/docker-compose down
+ ExecStart=/usr/bin/docker compose up
+ ExecStop=/usr/bin/docker compose down
# drz-vsting-ui.service
- ExecStart=/usr/local/bin/docker-compose up
- ExecStop=/usr/local/bin/docker-compose down
+ ExecStart=/usr/bin/docker compose up
+ ExecStop=/usr/bin/docker compose down

上記の2つのファイルの中にあるdocker-composeのコマンドをv2で使える形式に直してください。

7. systemdサービスのインストールと起動

インストールは下記のコマンドで実行します。

(cd ~/vsting && ./install.sh)

起動は下記のコマンドで実行します。

(cd ~/vsting && ./vsting.sh start)

起動後にブラウザ上でhttp://localhostを入力して入ると下記のようなUI画面に入れます。


その後UIに表示された各種シミュレーションのボタンを押すと通信環境の劣化を再現することができます。

以上で終わりです。どなたかのお役に立てれば幸いです。

Nexis-R

Discussion