Skip to content

SkyWayとROSの間で映像・データを相互に転送するためのROSノードのリファレンス実装

License

Notifications You must be signed in to change notification settings

skyway/skyway_ros_bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skyway_ros_bridge

概要

skyway_ros_bridge はSkyWayとROSの間で映像・データを相互に転送するためのROSノードのリファレンス実装です。

主な機能

  • SkyWay上のVideoStreamをROSのTopic(sensor_msgs/Image / sensor_msgs/CompressedImage)として転送
  • SkyWay上のDataStreamをROSのTopic(std_msgs/String)として転送
  • ROSのTopic(sensor_msgs/Image / sensor_msgs/CompressedImage)をSkyWayのVideoStreamとして転送
  • ROSのTopic(std_msgs/String)をSkyWayのDataStreamとして転送
  • RTP映像入力をSkyWayのVideoStreamとして転送

動作要件

skyway_ros_bridge は SkyWay Linux®︎ SDK (以下、Linux SDK ) を利用しており、基本的な対応環境は公式サイトをご参照ください。

また、それに加えて、以下の要件があります。

  • ROS 2 Jazzy

セットアップ

  1. リポジトリを取得

    git clone --recursive https://github.com/skyway/skyway_ros_bridge.git
  2. Linux SDKをダウンロード

    ./scripts/download_sdk.sh
  3. ビルド

    colcon build
  4. 実行

    source install/setup.bash
    ros2 run skyway_ros_bridge skyway

チュートリアル

公式サイトにてチュートリアルを公開しています。

https://skyway.ntt.com/ja/docs/cookbook/linux-sdk/ros-integration/

ROSサービス

各リクエストパラメータの詳細やメッセージの定義は src/skyway_ros_bridge_msgs/ をご参照ください。

join_room

SkyWayのRoomを作成または参加し、入室します。

# 例) SkyWayAuthTokenを利用して入室する
ros2 service call /join_room skyway_ros_bridge_msgs/srv/JoinRoom "{\
  skyway_auth_token: '<SkyWayAuthToken>',\
  room_name: 'example',\
  member_name: 'ros'\
}"

# 例) SkyWayAPIKeyとSkyWayAPISecretを利用して入室する
ros2 service call /join_room skyway_ros_bridge_msgs/srv/JoinRoom "{\
  skyway_app_id: '<SkyWayAppID>',\
  skyway_secret_key: '<SkyWaySecretKey>',\
  room_name: 'example',\
  member_name: 'ros'\
}"

# 例) メタデータの指定やRTP映像入力の有効化
ros2 service call /join_room skyway_ros_bridge_msgs/srv/JoinRoom "{\
  skyway_auth_token: '<SkyWayAuthToken>',\
  rtp_input_video_enabled: true,\
  rtp_input_video_codec: 'H264',\
  room_name: 'example',\
  room_metadata: 'room-metadata',\
  member_name: 'ros',\
  member_metadata: 'member-metadata'\
}"

get_current_room

参加中のRoom情報を取得します。

ros2 service call /get_current_room skyway_ros_bridge_msgs/srv/GetCurrentRoom "{}"

leave_room

現在参加中のRoomから退出します。

ros2 service call /leave_room skyway_ros_bridge_msgs/srv/LeaveRoom "{}"

publish_data_topic_from_skyway

SkyWayのDataStreamをROSのトピック(std_msgs/String)として転送します。

ros2 service call /publish_data_topic_from_skyway skyway_ros_bridge_msgs/srv/PublishDataTopicFromSkyway "{\
  publication_id: '<転送したいPublicationのID>'\
}"

publish_data_stream_to_skyway

ROSのトピック(std_msgs/String)をSkyWayのDataStreamとして転送します。

ros2 service call /publish_data_stream_to_skyway skyway_ros_bridge_msgs/srv/PublishDataStreamToSkyway "{\
  topic_name: '/robot/move'\
}"

publish_image_topic_from_skyway

SkyWayのVideoStreamをROSのトピック(sensor_msgs/Image / sensor_msgs/CompressedImage)として転送します。

ros2 service call /publish_image_topic_from_skyway skyway_ros_bridge_msgs/srv/PublishImageTopicFromSkyway "{\
  publication_id: '<転送したいPublicationID>',\
  topic_name: '/skyway/image',\
  is_compressed: false\
}"

publish_video_stream_to_skyway_by_image

ROSのトピック(sensor_msgs/Image / sensor_msgs/CompressedImage)をSkyWayのVideoStreamとして転送します。

ros2 service call /publish_video_stream_to_skyway_by_image skyway_ros_bridge_msgs/srv/PublishVideoStreamToSkywayByImage "{\
  topic_name: '/camera/image',\
  is_compressed: false\
}"

publish_video_stream_to_skyway_by_rtp

RTP入力をSkyWayのVideoStreamとして転送します。

ros2 service call /publish_video_stream_to_skyway_by_rtp skyway_ros_bridge_msgs/srv/PublishVideoStreamToSkywayByRtp "{\
  recv_rtp_ipv4: '127.0.0.1',\
  recv_rtp_port: 50000,\
  send_rtcp_ipv4: '127.0.0.1',\
  send_rtcp_port: 50001\
}"

unpublish_topic

SkyWayからROSへの転送を停止します。

ros2 service call /unpublish_topic skyway_ros_bridge_msgs/srv/UnpublishTopic "{\
  topic_name: '/skyway/image'\
}"

unpublish_stream

ROSからSkyWayへの転送を停止します。

ros2 service call /unpublish_stream skyway_ros_bridge_msgs/srv/UnpublishStream "{\
  publication_id: '<転送を停止したいPublicationのID>'\
}"

LICENSE

商標

Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。

About

SkyWayとROSの間で映像・データを相互に転送するためのROSノードのリファレンス実装

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •