Linux (Ubuntu)
ゲームサーバーとコントローラープログラムを同じコンピューターで実行する
Section titled “ゲームサーバーとコントローラープログラムを同じコンピューターで実行する”まず、ゲームサーバーと自分のコントローラープログラムを同じコンピューターで実行してみましょう。競技での構成とは異なりますが、ローカルでデバッグするときに便利です。
リモートモードを切り替える
Section titled “リモートモードを切り替える”ワールドを開き、コントロールウィンドウで「TOGGLE REMOTE」を押します。リモートモードがオンになると、ボタンがオレンジ色に変わります。

コントロールウィンドウが表示されない場合は、Scene Tree で「DEF MAINSUPERVISOR Robot」を右クリックし、「Show Robot Window」を選んでください。
プログラムを実行する
Section titled “プログラムを実行する”ターミナルを開き、次のコマンドを実行します。<Your controller path> は、コントローラープログラムのパスに置き換えてください。
export WEBOTS_HOME=/usr/local/webots"$WEBOTS_HOME/webots-controller" "<Your controller path>"これは、Webots を .deb パッケージで /usr/local/webots にインストールした場合です。別の場所にインストールした場合は、WEBOTS_HOME をそれに合わせて変更してください。
コントローラーは Webots に接続し、ゲームが始まるまで待機します。
ゲームを開始する
Section titled “ゲームを開始する”コントロールウィンドウのスタートボタンを押します。ロボットが現れ、プログラムが動き始めます。
ゲームを終了する
Section titled “ゲームを終了する”ゲームを止めるには、ターミナルで Ctrl+C を押します。
シミュレーションが終了すると、Erebus のゲームマネージャーも停止します。もう一度ゲームを実行するには、ワールドを再読み込みしてください。
ゲームサーバーを別のコンピューターで実行する
Section titled “ゲームサーバーを別のコンピューターで実行する”これは公式の競技で使われる構成です。コントローラーを実行するコンピューター(クライアント)と、ゲームを実行するコンピューター(サーバー)は、同じネットワークに接続されている必要があります。
-
(サーバー)サーバーで Webots を起動し、ワールドを開いて、コントロールウィンドウでリモートモードをオンにします。
-
(サーバー)サーバーの IP アドレスを調べます。たとえば
ip addrコマンドで確認できます。 -
(クライアント)次のコマンドを実行します。
<Your controller path>はコントローラープログラムのパスに、<Server IP address>は前の手順で調べた IP アドレスに置き換えてください。ターミナルウィンドウ export WEBOTS_HOME=/usr/local/webots"$WEBOTS_HOME/webots-controller" --protocol=tcp --ip-address=<Server IP address> "<Your controller path>" -
(サーバー)スタートボタンを押してゲームを開始します。
トラブルシューティング
Section titled “トラブルシューティング”- コントローラーが接続できない: 2 台のコンピューターが互いに通信できること(
pingなどで確認できます)、サーバーのファイアウォールが TCP ポート 1234 を許可していること、Webots の設定(Preferences)の Network タブにある許可 IP のリストが空か、クライアントを含んでいることを確認してください。 No robot name providedと表示される: コントローラーが待機している間は、このメッセージが表示されるのが正常です。表示され続ける場合はリモートモードがオンになっていないので、TOGGLE REMOTE ボタンを確認してください。- コントローラーが Python ライブラリを見つけられない: プログラムはクライアントの Python で実行されるので、ライブラリはクライアントにインストールしてください。
公式ドキュメント
Section titled “公式ドキュメント”この構成について詳しくは、Webots のガイドを参照してください。
