Upgrade to Pro — share decks privately, control downloads, hide ads and more …

家庭用自律移動ロボット「カチャカ」の開発者API公開と ROS 2インターフェイス実装

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Yutaka Kondo Yutaka Kondo
September 26, 2023

家庭用自律移動ロボット「カチャカ」の開発者API公開と ROS 2インターフェイス実装

ROSCon JP 2023での講演資料です。 https://roscon.jp/2023

スマートファニチャープラットフォーム「カチャカ」はPreferred Roboticsが販売中の家庭用自律移動ロボットです。独自の深層学習、ナビゲーション、SLAMなどの技術をコンパクトなボディに内蔵しています。今回、近日提供予定の開発者向けAPIとそのAPIを使ったROS 2インターフェイス実装を紹介します。カチャカは家庭用途だけでなく、教育、産業用途にも適用範囲を拡大していきます。

Avatar for Yutaka Kondo

Yutaka Kondo

September 26, 2023

More Decks by Yutaka Kondo

Other Decks in Programming

Transcript

  1. ۙ౻ ๛ <[email protected]>ɹ໺࡚ ߞฏɹ֎ؙ හ޺ɹଜ੉ ࿨౎ɹ೔୆ ݈Ұɹࣉా ߞࢤ גࣜձࣾPreferred Robotics

    https://www.pfrobotics.jp Ոఉ༻ࣗ཯ҠಈϩϘοτ ʮΧνϟΧʯͷ։ൃऀAPIެ։ͱ ROS 2ΠϯλʔϑΣΠε࣮૷
  2. @youtalk ۙ౻ ๛ • 2021/11~ Preferred Robotics PjM / ΤϯδχΞ

    • 2019/8 #ROS2Ͱ͸͡ΊΑ͏ ग़൛ • 2018/5~ Preferred Networks ΤϯδχΞ • 2018~ ROSCon JP ࣮ߦҕһ • 2013/4~ ΧϫμϩϘςΟΫε ओ೚ • 2013/3 ಸྑઌ୺େ Ph.D 2
  3. ΧνϟΧAPIఏڙػೳ • Ո۩ӡൖɺ໨త஍Ҡಈ • ೚ҙͷҐஔ࢟੎Ҡಈ • ଎౓ࢦྩ • ൃ࿩ •

    Ո۩Ұཡऔಘɺ໨త஍Ұཡऔಘ • ίϚϯυ࣮ߦཤྺҰཡऔಘ • ࣗಈॆిɺखಈૢ࡞ͷઃఆ • ΦυϝτϦʢࣗݾҐஔͱݱࡏ଎౓ʣऔಘ • IMUσʔλऔಘ • LiDAR఺܈σʔλऔಘ • લΧϝϥը૾औಘ • ෺ମೝࣝ݁ՌʢਓɺՈ۩ɺॆిثɺ൶ʣऔಘ • ΧνϟΧϚοϓऔಘ ίϚϯυ࣮ߦ ηϯαग़ྗ 14
  4. ROS 2ϒϦοδఏڙػೳ $ ros2 service list | grep -v parameter

    /kachaka/auto_homing/set_enabled /kachaka/manual_control/set_enabled $ ros2 action list /kachaka/kachaka_command/execute $ ros2 interface list | grep kachaka .../msg/KachakaCommand .../msg/Location .../msg/LocationList .../msg/ObjectDetection .../msg/ObjectDetectionListStamped .../msg/Shelf .../msg/ShelfList .../msg/ShelfSize .../action/ExecKachakaCommand $ ros2 topic list | grep kachaka /kachaka/front_camera/camera_info /kachaka/front_camera/image_raw /kachaka/front_camera/image_raw/compressed /kachaka/imu/imu /kachaka/layout/locations/list /kachaka/layout/shelves/list /kachaka/lidar/scan /kachaka/manual_control/cmd_vel /kachaka/mapping/map /kachaka/object_detection/result /kachaka/odometry/odometry /kachaka/robot_info/version /kachaka_description/joint_states /kachaka_description/robot_description 15
  5. ΧνϟΧ gRPC ίϯςφ gRPC UIαʔό εϚʔτϑΥϯ ΧνϟΧ ΞϓϦ gRPC APIαʔό

    Playground ίϯςφ JupyterLab αʔό ࣗ࡞gRPC ϓϩάϥϜ ୺຤ ϒϥ΢β ֎෦PC ros2_bridge ίϯςφ kachaka_grpc _ros2_bridge ࣗ࡞ROS 2 ϓϩάϥϜ ֎෦PC ࣗ࡞gRPC ϓϩάϥϜ 19
  6. YComponent XComponent RobotInfoComponent ΧνϟΧ gRPC ίϯςφ gRPC APIαʔό Ros2TopicBridge< kachaka_api::GetRobotVersionResponse,

    std_msgs::msg::String> Converter ros2_msg->data = grpc_msg.version() https://github.com/pf-robotics/kachaka-api/blob/main/ros2/ kachaka_grpc_ros2_bridge/src/component/robot_info_component.cpp ΧνϟΧιϑτ΢ΣΞͷόʔδϣϯΛ Pub͢ΔROS 2ίϯϙʔωϯτ ~/version τϐοΫPub GetRobotVersion RPCݺͼग़͠ 22
  7. CompressedImageͷར༻ Tips • ඇѹॖը૾τϐοΫ͸Hz͕௿͍͕ɺ JPEGը૾τϐοΫ͸Hz͕ߴ͍ • remap͢Ε͹RViz2ͳͲͰ΋ඳըՄೳ $ ros2 topic

    hz /kachaka/front_camera/ image_raw average rate: 1.961 $ ros2 topic hz /kachaka/front_camera/ image_raw/compressed average rate: 8.672 $ rviz2 --ros-args --remap /kachaka/front_camera/image_raw/camera_info:= /kachaka/front_camera/camera_info Image CompressedImage 28
  8. cmd_velͷ҆શػೳ Tips • લΧϝϥͷSemantic SegmentationɺLiDARɺToFʹΑΔඇৗఀࢭػೳ͕༗ޮ • ޙୀ͸҆શػೳ͕ͳ͍ʢͿ͔ͭΔʣ • ࣗಈॆిػೳͷແޮԽ͸Մೳ •

    Remap͢Ε͹ROS 2ඪ४ύοέʔδͱ΋૬ੑྑ͠ $ ros2 service call /kachaka/auto_homing/set_enabled std_srvs/srv/SetBool "data: true" $ ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap /cmd_vel:=/kachaka/manual_control/cmd_vel 32
  9. kachaka_grpc_ros2_bridgeͷϩʔΧϧ࣮ߦ Tips • ros2_bridgeίϯςφΛ࢖ΘͣɺϩʔΧϧ࣮ߦ͢Δ͜ͱ΋Մೳ • https://github.com/pf-robotics/kachaka-api/blob/main/Dockerfile.ros2 Λࢀߟʹ $ cd ~/kachaka-api/ros2/kachaka_grpc_ros2_bridge

    $ protoc -I ~/kachaka-api/protos --grpc_out gen-src --plugin=protoc-gen-grpc=/usr/bin/grpc_cpp_plugin --cpp_out=gen-src ~/src/kachaka-api/protos/kachaka-api.proto $ mkdir -p ~/kachaka-api-ros/src $ ln -s ~/kachaka-api/ros2/kachaka_* ~/kachaka-api-ros/src/ $ cd ~/kachaka-api-ros $ rosdep install --from-paths src --ignore-src -r -y $ colcon build $ source ~/kachaka-api-ros/install/setup.zsh $ ros2 launch kachaka_grpc_ros2_bridge grpc_ros2_bridge.launch.xml server_uri:=$KACHAKA_IP:26400 33
  10. https://x.com/hakuturu583/status/ 1681886045212909568?s=20 ΑΓసࡌ https://x.com/ko1_baseba11/status/ 1692509808845549620?s=20 ΑΓసࡌ https://x.com/_ame_a_/status/ 1692888644951163357?s=20 ΑΓసࡌ https://x.com/daijiro/status/

    1699307339839582379?s=20 ΑΓసࡌ https://x.com/hakuturu583/status/ 1702158560803828034?s=20 ΑΓసࡌ https://x.com/_ame_a_/status/ 1703417718018625814?s=20 ΑΓసࡌ 37
  11. Cursor • gRPCʹ͸ͳ͍ಠࣗͷ࢓૊Έ • cursorൺֱʹΑΔσʔλऔಘͷطಡ؅ཧͱ ϩϯάϙʔϦϯάΛಋೖ • cursor = 0ͷͱ͖ɺͦͷ࣌఺ͷ࠷৽஋Λड৴

    • cursor = Xͷͱ͖ɺαʔόଆ͕cursor != Xʹ ͳΔ·Ͱ଴ػ͠ɺσʔλΛड৴ • ॏෳड৴ɺ࠶ૹɺ࠷৽σʔλͷΈड৴ͳͲ ͷ՝୊ʹରԠ message Metadata { sfixed64 cursor = 1; } message GetRequest { Metadata metadata = 1; } message GetRobotSerialNumberResponse { Metadata metadata = 1; string serial_number = 2; } service KachakaApi { rpc GetRobotSerialNumber (GetRequest) returns (GetRobotSerialNumberResponse); } https://github.com/pf-robotics/kachaka-api/ blob/main/protos/kachaka-api.proto ൈਮ 45