コンテンツにスキップ
日本語

macOS

ゲームサーバーとコントローラープログラムを同じコンピューターで実行する

Section titled “ゲームサーバーとコントローラープログラムを同じコンピューターで実行する”

まず、ゲームサーバーと自分のコントローラープログラムを同じコンピューターで実行してみましょう。競技での構成とは異なりますが、ローカルでデバッグするときに便利です。

ワールドを開き、コントロールウィンドウで「TOGGLE REMOTE」を押します。リモートモードがオンになると、ボタンがオレンジ色に変わります。

オンになった TOGGLE REMOTE ボタン

コントロールウィンドウが表示されない場合は、Scene Tree で「DEF MAINSUPERVISOR Robot」を右クリックし、「Show Robot Window」を選んでください。

ターミナルを開き、次のコマンドを実行します。<Your controller path> は、コントローラープログラムのパスに置き換えてください。

ターミナルウィンドウ
export WEBOTS_HOME=/Applications/Webots.app
"$WEBOTS_HOME/Contents/MacOS/webots-controller" "<Your controller path>"

Webots を別の場所や別の名前でインストールした場合は、WEBOTS_HOME をそれに合わせて変更してください。たとえば "/Applications/Webots R2023b.app" です。

コントローラーは Webots に接続し、ゲームが始まるまで待機します。

コントロールウィンドウのスタートボタンを押します。ロボットが現れ、プログラムが動き始めます。

ゲームを止めるには、ターミナルで Ctrl+C を押します。

シミュレーションが終了すると、Erebus のゲームマネージャーも停止します。もう一度ゲームを実行するには、ワールドを再読み込みしてください。

ゲームサーバーを別のコンピューターで実行する

Section titled “ゲームサーバーを別のコンピューターで実行する”

これは公式の競技で使われる構成です。コントローラーを実行するコンピューター(クライアント)と、ゲームを実行するコンピューター(サーバー)は、同じネットワークに接続されている必要があります。

  1. (サーバー)サーバーで Webots を起動し、ワールドを開いて、コントロールウィンドウでリモートモードをオンにします。

  2. (サーバー)サーバーの IP アドレスを調べます。システム設定 > ネットワーク(System Settings > Network)で確認できます。

  3. (クライアント)次のコマンドを実行します。<Your controller path> はコントローラープログラムのパスに、<Server IP address> は前の手順で調べた IP アドレスに置き換えてください。

    ターミナルウィンドウ
    export WEBOTS_HOME=/Applications/Webots.app
    "$WEBOTS_HOME/Contents/MacOS/webots-controller" --protocol=tcp --ip-address=<Server IP address> "<Your controller path>"
  4. (サーバー)スタートボタンを押してゲームを開始します。

  • コントローラーが接続できない: 2 台のコンピューターが互いに通信できること(ping などで確認できます)、サーバーのファイアウォールが TCP ポート 1234 を許可していること、Webots の設定(Preferences)の Network タブにある許可 IP のリストが空か、クライアントを含んでいることを確認してください。
  • No robot name provided と表示される: コントローラーが待機している間は、このメッセージが表示されるのが正常です。表示され続ける場合はリモートモードがオンになっていないので、TOGGLE REMOTE ボタンを確認してください。
  • コントローラーが Python ライブラリを見つけられない: プログラムはクライアントの Python で実行されるので、ライブラリはクライアントにインストールしてください。

この構成について詳しくは、Webots のガイドを参照してください。