refbox_peer (ros2-rcll_refbox_peer) でNavigation Challenge

ROS2にてNavigation Challenge をやろうとすると,/rcll/routes_info が受け取れない問題.

まず,RefBox の方は,rcll-get-started で起動しているけど,起動後にnavigation challenge へ切り替えるのではなく,
起動時にオプション指定でnavigation challenge にした方が良さそう.
今回は,以下の設定で試してみました.

ryukoku@fedora:~$ cat git/rcll-get-started/local_setup.sh |grep -v \#
export RC_MAGENTA=BabyTigers-R
export REFBOX_ARGS=" --cfg-comm comm/default_comm.yaml --cfg-team team/default_team.yaml --cfg-challenge challenges/nav/nav_hard.yaml"

rc_start で,起動すると,WARNING: Found orphan containers (3fcdba86cf0e_compose_files_mongodb-check_1, refbox, f0e8eb41a688_refbox-frontend) for this project. If you removed or renamed this service in your compose file, you can run this command with the –remove-orphans flag to clean it up.みたいなエラーが出る場合は,docker rm でcontainerを削除しましょう.
—-
で,ros2-rcll_refbox_peer の方ですが,refbox のmsgs(llsf_msgs)を使っていますので,
そこを最新にしておきましょう.
以下の通り,Zone.proto に,ロボット投入口の座標も追加されています.

(myenv) wataru@NucBoxG5:~/git/rcll-refbox/src/msgs$ git diff Zone.proto
diff --git a/src/msgs/Zone.proto b/src/msgs/Zone.proto
index 7aeddf28..5995f47d 100644
--- a/src/msgs/Zone.proto
+++ b/src/msgs/Zone.proto
@@ -104,7 +104,9 @@ enum Zone {
   C_Z21 = 21;
   C_Z31 = 31;
   C_Z41 = 41;
-
+  C_Z51 = 51;
+  C_Z61 = 61;
+  C_Z71 = 71;
 
   M_Z18 = 1018;
   M_Z28 = 1028;
@@ -166,4 +168,7 @@ enum Zone {
   M_Z21 = 1021;
   M_Z31 = 1031;
   M_Z41 = 1041;
+  M_Z51 = 1051;
+  M_Z61 = 1061;
+  M_Z71 = 1071;
 }

ちなみに,これらProtoBuf 関係のファイルは,ros2-rcll_refbox_peer の以下の部分で直接指定しています.
ディレクトリ構成が違う場合は,ここを書き換えるか,シンボリックリンクを貼って誤魔化してください.

(myenv) wataru@NucBoxG5:~$ cat git/ros2-rcll_refbox_peer/refbox_peer/CMakeLists.txt |grep ryukoku
list(APPEND Fawkes_INCLUDE_DIRS "/home/ryukoku/git/rcll-refbox/src/libs/")
list(APPEND Fawkes_INCLUDE_DIRS "/home/ryukoku/git/rcll-refbox/src/llsf_msgs/")
list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/libllsf_protobuf_comm.so")
list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/protobuf/libllsf_msgs.so")
list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/protobuf/libllsf_log_msgs.so")
list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/libmps_comm.so")

あと,最新のrefbox だと,llsf_msgs ではなく,rcll_msgsになっているハズ.
—-
ros2でbuildしておきましょう.
私の環境では以下の配置になっています.

(myenv) wataru@NucBoxG5:~$ ls ros2_ws/src/r* -altrh
lrwxrwxrwx 1 wataru wataru 50 Jun 10 17:27 ros2_ws/src/refbox_peer -> /home/wataru/git/ros2-rcll_refbox_peer/refbox_peer
lrwxrwxrwx 1 wataru wataru 50 Jun 10 17:27 ros2_ws/src/refbox_msgs -> /home/wataru/git/ros2-rcll_refbox_peer/refbox_msgs

なお,RefBox の設定は,ソース直書きですので,環境に合わせては修正してください.

(myenv) wataru@NucBoxG5:~/ros2_ws$ grep declare_parameter src/refbox_peer/src/ros2-rcll_refbox_peer.cpp 
	n->declare_parameter("~team_name", "BabyTigers-R");
	n->declare_parameter("~robot_name", "R");
	n->declare_parameter("~robot_number", 1);
	n->declare_parameter("~peer_address", "192.168.13.255");
	n->declare_parameter("~peer_public_recv_port", 4444);
	n->declare_parameter("~peer_public_send_port", 4445);
	n->declare_parameter("~peer_public_port", 0);
	n->declare_parameter("~peer_cyan_recv_port", 4441);
        n->declare_parameter("~peer_cyan_send_port", 4446);
        n->declare_parameter("~peer_cyan_port", 0);
        n->declare_parameter("~peer_magenta_recv_port", 4442);
        n->declare_parameter("~peer_magenta_send_port", 4447);
        n->declare_parameter("~peer_magenta_port", 0);
	n->declare_parameter("~crypto_key", "randomkey");
	n->declare_parameter("~crypto_cipher", "aes-128-cbc");
cd ros2_ws
colcon build

これで,refox_peer を実行できるハズ.
Production Phase に切り替えると動き出すはず.

(myenv) wataru@NucBoxG5:~/ros2_ws$ ros2 run refbox_peer refbox_peer 
[INFO] [1751283412.625596296] [rclcpp]: rcll_refbox_perr starting up
[WARN] [1751283412.632060797] [rclcpp]: Creating public peer: addr: 192.168.13.255  send: 4445  recv: 4444
[INFO] [1751283412.842603251] [rclcpp]: Creating private peer for MAGENTA
[INFO] [1751283413.559174754] [rclcpp]: Referee Box 2019 detected
[INFO] [1751283413.559216360] [rclcpp]: Sender is 192.168.13.5, component_id is 2000, msg_type is 3
[WARN] [1751283432.196523312] [rclcpp]: Receive error from 192.168.13.5:4447: Received plain text message but encryption is enabled
[WARN] [1751283432.196666309] [rclcpp]: Receive error from 192.168.13.5:4447: Deserialization fail: Message type 0:0 not registered

上記の警告が出た場合は,暗号化キーを間違えているかチーム名を間違えているか です.

ryukoku@fedora:~/git/rcll-get-started/config/refbox$ cat team/default_team.yaml 
%YAML 1.2
---
---
# Start a fresh game per default.

llsfrb:
  game:
    teams: [Carologistics, GRIPS, Solidus, Babytigers-R, BabyTigers-W]
    crypto-keys:
      Carologistics: randomkey
      GRIPS: randomkey
      Solidus: randomkey
      Babytigers-R: randomkey
      BabyTigers-W: randomkey

あはは.TigersのTは,小文字でRefBoxに登録されていますね.
(そして,Wの方は大文字にしちゃっている…)
うまくいくと,こんな感じ.

(myenv) wataru@NucBoxG5:~/ros2_ws$ ros2 topic echo /rcll/routes_info
team_color: 0
route:
- id: 1
  zone: 1044
- id: 1
  zone: 1035
- id: 1
  zone: 1055
- id: 1
  zone: 1015
- id: 1
  zone: 1045
- id: 1
  zone: 1053
- id: 1
  zone: 1014
- id: 1
  zone: 1043
- id: 1
  zone: 1052
- id: 1
  zone: 1032
- id: 1
  zone: 1024
- id: 1
  zone: 1033
---
team_color: 0

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*