grSimを起動してCommunicationパラメータを確認します。
ここでは以下のパラメータで作業を進めます。
* Vision multicast address :224.5.23.2
* Vision multicast port :10006
* Command listen port :20011
次にReferee Boxのパラメータを確認します。
Referee Boxディレクトリ内のreferee.confを確認してください。
デフォルトでパラメータは以下のとおりになっています。
* ADDRESS :224.5.23.1
* PROTOBUF_PORT :10003
これらのパラメータをCON-SAIにセットします。
ai_core/launch/simulator.launch
<!-- 位置座標受信アドレス・ポート設定 -->
<node name="receiver" pkg="grsim_wrapper" type="detection.py">
<param name="multicast_addr" type="string" value="224.5.23.2" />
<param name="multicast_port" value="10006" />
</node><!-- ロボット動作指令送信アドレス・ポート設定 -->
<!-- server_addressにはローカル・ループバック・アドレス(127.0.0.1) を入力してます -->
<node name="sender" pkg="grsim_wrapper" type="command_sender.py">
<param name="server_address" type="string" value="127.0.0.1" />
<param name="server_port" value="20011" />
<!-- <remap from="/robot_0/robot_commands" to="/ssl_joy/ssl_joystick/robot_commands" /> -->
</node>ai_core/launch/ai_core.launch
<!-- Referee Box 信号受信アドレス・ポート設定 -->
<node name="refbox" pkg="ssl_refbox_wrapper" type="ssl_refbox_wrapper_node.py">
<param name="multicast_addr" value="224.5.23.1" />
<param name="multicast_port" value="10003" />
</node># CON-SAIとSAI-Visualizerの起動
$ roslaunch ai_core ai_core.launchCON-SAI起動後、grSimとReferee Boxを起動してください。
SAI-Visualizerにロボットとボールが描画されたら、grSimから位置情報の受信成功です。
Referee BoxでStop Game -> Kick Off -> Normal Start -> Haltとボタンを押してください。
6台のロボットが動き、1台のロボットがボールを蹴ったら成功です。
戦略プログラムの簡単な概要は、decision_making_nodeについて に記載しています。
下記のように、ai_core.launch起動時に引数を指定できます。
# default (左守りのブルーチーム)
$ roslaunch ai_core ai_core.launch
# 左守りのブルーチーム
$ roslaunch ai_core ai_core.launch color:=blue side:=left
# 右守りのイエローチーム
$ roslaunch ai_core ai_core.launch color:=yellow side:=rightそれでは、右守りのイエローチームとしてCON-SAIを起動し、 先ほどと同じようにロボットを動かしてみてください。
味方サイドは右側になったにもかかわらず、 SAI Visualizer上では黄色ロボットが左側に表示され、右側へボールを蹴ることが確認できます。
これは、SSL-Visionから受信した座標をチームサイドに合わせて変換しているためです。
味方サイドが常に左側(x軸座標でマイナス側)となるため、 右側を攻める戦略プログラムを作成すればコートチェンジにも問題なく対応できます。
最後に、CON-SAI同士で対戦をします。
ai_core.launch起動時にai_nameを設定することで、 CON-SAIの全ノードをグルーピングできます。
# ai_name には "/hoge/" のようにスラッシュで囲われた文字列を入力してください
$ roslaunch ai_core ai_core.launch ai_name:=/ai1/
# NG : Visualizerにロボットが描画されません
# roslaunch ai_core ai_core.launch ai_name:=ai1それでは、ターミナルを2つ用意して、 /ai1/ 右守りブルーチーム と /ai2/ 左守りイエローチームを起動しましょう。
# Terminal 1 (左守りブルーチーム)
$ roslaunch ai_core ai_core.launch ai_name:=/ai1/ color:=blue side:=left
# Terminal 2 (右守りイエローチーム)
$ roslaunch ai_core ai_core.launch ai_name:=/ai2/ color:=yellow side:=right注意: CON-SAIを2つ起動すると動作が重たくなります
SAI-Visualizerも2つ起動されますが、ここでは閉じてください。
Referee Boxを操作して2チームのロボットが動くことを確認してください。
動作が重たい場合は、grSim上でロボットを何台かTurn offしてください。 (ロボットを右クリックして操作できます。)
