pf-robotics / kachaka-api

スマートファニチャープラットフォーム「カチャカ」API
https://kachaka.zendesk.com/hc/ja/articles/7660222791183-%E3%82%AB%E3%83%81%E3%83%A3%E3%82%ABAPI
Apache License 2.0
85 stars 24 forks source link

ros2_bridgeについて #100

Closed atinfinity closed 2 months ago

atinfinity commented 2 months ago

ros2_bridgeを使うためにhttps://github.com/pf-robotics/kachaka-api?tab=readme-ov-file#動作確認を読んでいます。READMEにある

cd ~/kachaka-api/tools/ros2_bridge
./start_bridge.sh <カチャカのIPアドレス>

では、Dockerイメージをpullし、Dockerコンテナを起動して、ros2_bridgeを実行しているという理解です。ここでpullされるDockerイメージはx86_64、arm64どちらのアーキテクチャ向けも提供していますか?arm64のホスト環境で実行しようと思っています。

atinfinity commented 2 months ago

arm64マシン上でdocker pullして試したところamd64前提のようでした。

docker pull asia-northeast1-docker.pkg.dev/kachaka-api/docker/kachaka-grpc-ros2-bridge:20240519
docker run -it asia-northeast1-docker.pkg.dev/kachaka-api/docker/kachaka-grpc-ros2-bridge:20240519 bash
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /usr/bin/dumb-init: exec format error

DockerイメージのもとになっているDockerfileはhttps://github.com/pf-robotics/kachaka-api/blob/main/Dockerfile.ros2だと想像しているのですが、本ファイルは1年以上更新がなさそうであるため、最新のものに追従されていない可能性もありそうだと考えています。可能であればコメント頂きたいです。

terakoji-pfr commented 2 months ago

こちら、配布しているdocker imageはx86_64のみです。 Dockerfile自体は最新なのでご指摘のdockerファイルでarm64でbuildしていただければ大丈夫です。

atinfinity commented 2 months ago

@terakoji-pfr 回答ありがとうございました。ROS 2連携でarm64環境(RasPi、Jetsonなど)が使われることも考えられるのでarm64向けのDockerイメージ提供やREADMEでのインストラクション追記などもご検討頂けると助かります。

atinfinity commented 2 months ago

@terakoji-pfr 頂いた情報をもとにROS 2ブリッジを試していますが正常に動作しませんでした。

現象

ROS 2ブリッジが正常に起動しない。

環境

ログ

以下のエラーが出て、ROS 2ブリッジが正常に起動しません。

ros2_bridge-1 | [component_container_mt-1] [INFO] [1720411971.215949281] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-1 | [component_container_mt-1] terminate called after throwing an instance of 'cv::Exception' ros2_bridge-1 | [component_containermt-1] what(): OpenCV(4.5.4) ./modules/imgcodecs/src/loadsave.cpp:814: error: (-215:Assertion failed) !buf.empty() in function 'imdecode'

cd ~/kachaka-api/tools/ros2_bridge
./start_bridge.sh <カチャカのIPアドレス>

Attaching to ros2_bridge-1
ros2_bridge-1  | [INFO] [launch]: All log files can be found below /tmp/2024-07-08-04-12-50-029482-jetson-orin-nx01-3785
ros2_bridge-1  | [INFO] [launch]: Default logging verbosity is set to INFO
ros2_bridge-1  | [INFO] [component_container_mt-1]: process started with pid [3842]
ros2_bridge-1  | [INFO] [robot_state_publisher-2]: process started with pid [3844]
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.516823425] [kachaka_description.robot_state_publisher]: got segment base_footprint
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517023425] [kachaka_description.robot_state_publisher]: got segment base_l_drive_wheel_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517045345] [kachaka_description.robot_state_publisher]: got segment base_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517055073] [kachaka_description.robot_state_publisher]: got segment base_r_drive_wheel_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517062849] [kachaka_description.robot_state_publisher]: got segment camera_back_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517069985] [kachaka_description.robot_state_publisher]: got segment camera_front_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517077217] [kachaka_description.robot_state_publisher]: got segment docking_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517084129] [kachaka_description.robot_state_publisher]: got segment imu_link
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517091201] [kachaka_description.robot_state_publisher]: got segment laser_frame
ros2_bridge-1  | [robot_state_publisher-2] [INFO] [1720411970.517097889] [kachaka_description.robot_state_publisher]: got segment tof_link
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.647717569] [kachaka.grpc_ros2_bridge_container]: Load Library: /opt/kachaka/lib/libkachaka_grpc_ros2_bridge.so
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.978428737] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.978553057] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.990088705] [grpc_ros2_bridge]: created stub 10.5.244.5:26400
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/auto_homing' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.997218177] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.997312865] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411970.997324065] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.008875777] [kachaka.back_camera]: 'back_camera' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/back_camera' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.009886945] [kachaka.back_camera]: 'back_camera' bridge starting
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015111969] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015214209] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015227521] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015237025] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015244737] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015251521] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015258785] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.015266305] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/kachaka_command' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.036213313] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.036347201] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.036360705] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.036369825] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.036377313] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.043969697] [kachaka.front_camera]: 'front_camera' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/front_camera' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.044516833] [kachaka.front_camera]: 'front_camera' bridge starting
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.048986465] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.049056353] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.049071393] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.049169889] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.049202881] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.049214273] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/goal_pose' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066401313] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066481441] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066495553] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066503681] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066510657] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066517921] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.066524833] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.075299105] [kachaka.imu]: 'imu' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/imu' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.078952353] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079044929] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079061729] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079070593] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079080193] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079087425] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079094465] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079101313] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.079108097] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.088007745] [kachaka.layout]: 'layout' bridge starting
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.089282945] [kachaka.layout]: 'layout' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/layout' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092504033] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092577953] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092590913] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092600001] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092607073] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092692897] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092712353] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092722145] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092729537] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.092737569] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.101665025] [kachaka.lidar]: 'lidar' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/lidar' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106366561] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106459873] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106473889] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106482497] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106489825] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106497377] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106504225] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106511585] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106518369] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106525249] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.106531937] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/manual_control' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120028577] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120102017] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120117505] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120126977] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120134593] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120141345] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120148705] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120156097] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120235297] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120247905] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120255681] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.120262561] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.133144001] [kachaka.mapping]: 'mapping' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/mapping' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138299457] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138368417] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138382017] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138389825] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138398017] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138405153] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138412801] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138420193] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138427649] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138435169] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138442273] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138448993] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ObjectDetectionComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138455841] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::OdometryComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138462081] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::RobotInfoComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.138468705] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::RobotInfoComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.151301025] [kachaka.robot_info]: 'robot_info' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/robot_info' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.151402401] [kachaka.robot_info]: 'robot_info' bridge starting
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.155890881] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.155965217] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.155980001] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.155988385] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156061313] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156075425] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156082849] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156089729] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156097281] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156104513] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156111009] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156117665] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ObjectDetectionComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.156126369] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ObjectDetectionComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.167948449] [kachaka.object_detection]: 'object_detection' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/object_detection' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173440737] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173520225] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173535425] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173546081] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173555297] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173562561] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173574689] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173582497] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173589057] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173596129] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173603073] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173609825] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ObjectDetectionComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173618625] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::OdometryComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.173625345] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::OdometryComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.190830177] [kachaka.odometry]: 'odometry' bridge starting
ros2_bridge-1  | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/odometry' in container '/kachaka/grpc_ros2_bridge_container'
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215556641] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::AutoHomingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215675745] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::BackCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215707297] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::DynamicTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215728705] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::FrontCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215746465] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::GoalPoseComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215762401] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ImuComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215779201] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::KachakaCommandComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215807873] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LayoutComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215827457] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::LidarComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215842977] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ManualControlComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215858657] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::MappingComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215873697] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::ObjectDetectionComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215889057] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::OdometryComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215904097] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::RobotInfoComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215919521] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::StaticTfComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215934145] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::TofCameraComponent>
ros2_bridge-1  | [component_container_mt-1] [INFO] [1720411971.215949281] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<kachaka::grpc_ros2_bridge::TofCameraComponent>
ros2_bridge-1  | [component_container_mt-1] terminate called after throwing an instance of 'cv::Exception'
ros2_bridge-1  | [component_container_mt-1]   what():  OpenCV(4.5.4) ./modules/imgcodecs/src/loadsave.cpp:814: error: (-215:Assertion failed) !buf.empty() in function 'imdecode_'
ros2_bridge-1  | [component_container_mt-1] 
ros2_bridge-1  | [ERROR] [component_container_mt-1]: process has died [pid 3842, exit code -6, cmd '/opt/ros/humble/lib/rclcpp_components/component_container_mt --ros-args -r __node:=grpc_ros2_bridge_container -r __ns:=/kachaka'].
$ ros2 topic list
/kachaka_description/joint_states
/kachaka_description/robot_description
/parameter_events
/rosout
/tf
/tf_static

調査

https://github.com/pf-robotics/kachaka-api?tab=readme-ov-file#サンプルコードをjupyterlabで実行するにあるNotebookファイルでカメラ画像、LiDARがキャプチャできていること確認済。

疑問点

terakoji-pfr commented 2 months ago
  1. arm64でのbridgeは動作確認しておりませんので、検証後お伝えします。
  2. アップデートは無関係です。

arm系の検証も行っていくので少々お待ちいただければと思います。

atinfinity commented 2 months ago

@terakoji-pfr

ros2_bridge-1 | [component_containermt-1] what(): OpenCV(4.5.4) ./modules/imgcodecs/src/loadsave.cpp:814: error: (-215:Assertion failed) !buf.empty() in function 'imdecode'

のメッセージを手掛かりにコードを確認しました。 https://github.com/pf-robotics/kachaka-api/blob/main/ros2/kachaka_grpc_ros2_bridge/src/component/mapping_component.cpp

おそらく、現状のブリッジ実装ではカチャカ内に地図データが既にあることが暗黙的な前提になっているのではないでしょうか?ROS 2連携で使う場合、おおまかに以下の2系統があると考えています。

ROS 2で利用する際、必ずしもカチャカ内蔵のmapping、localizationを使うとは限らないと考えていますが、現状のブリッジ実装では後者の系統について考慮されていないのが根本的な問題のように思います。

atinfinity commented 2 months ago

@terakoji-pfr カチャカが一定時間静止していると、scanトピックの配信がされなくなる挙動があります。ROS 2で使う場合、望ましくない挙動なのですが抑制する方法はありますか?

terakoji-pfr commented 2 months ago

scanトピックを抑制しない方法ですが、 https://github.com/pf-robotics/kachaka-api/blob/main/python/demos/get_laser_scan.ipynb に記載されているactivatorを使うとトピックが止まらないようになります。

ros2側にinterfaceを現状では出していないので、kachaka-apiと併用してお使いください。

terakoji-pfr commented 2 months ago

@atinfinity ご指摘の通りmapがない場合には、arm64, aarch64問わずに

ros2_bridge_1            | [component_container_mt-1] terminate called after throwing an instance of 'cv::Exception'
ros2_bridge_1            | [component_container_mt-1]   what():  OpenCV(4.5.4) ./modules/imgcodecs/src/loadsave.cpp:814: error: (-215:Assertion failed) !buf.empty() in function 'imdecode_'

のエラーが出ることを確認しました。 このエラーは今後のリリースで修正します。

またこのエラーがでなければarm64での動作を確認しました。

ワークアラウンドとして当面は最低一つmapを作りremapする等でその他のアルゴリズムを試していただけないでしょうか? こちらは別の方が試していて確認取れております。ros2_bridge_ros2_bridge_1

atinfinity commented 2 months ago

@terakoji-pfr ご回答ありがとうございました。現状について理解できました。次バージョンまではご提案頂いたワークアラウンドを行うことにします。

terakoji-pfr commented 2 months ago

関連したチケットを切り、このIssueはcloseします。