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
コメントを残す