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
-
リポジトリを取得
git clone --recursive https://github.com/skyway/skyway_ros_bridge.git
-
Linux SDKをダウンロード
./scripts/download_sdk.sh
-
ビルド
colcon build
-
実行
source install/setup.bash ros2 run skyway_ros_bridge skyway
公式サイトにてチュートリアルを公開しています。
https://skyway.ntt.com/ja/docs/cookbook/linux-sdk/ros-integration/
各リクエストパラメータの詳細やメッセージの定義は src/skyway_ros_bridge_msgs/ をご参照ください。
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'\
}"参加中のRoom情報を取得します。
ros2 service call /get_current_room skyway_ros_bridge_msgs/srv/GetCurrentRoom "{}"現在参加中のRoomから退出します。
ros2 service call /leave_room skyway_ros_bridge_msgs/srv/LeaveRoom "{}"SkyWayのDataStreamをROSのトピック(std_msgs/String)として転送します。
ros2 service call /publish_data_topic_from_skyway skyway_ros_bridge_msgs/srv/PublishDataTopicFromSkyway "{\
publication_id: '<転送したいPublicationのID>'\
}"ROSのトピック(std_msgs/String)をSkyWayのDataStreamとして転送します。
ros2 service call /publish_data_stream_to_skyway skyway_ros_bridge_msgs/srv/PublishDataStreamToSkyway "{\
topic_name: '/robot/move'\
}"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\
}"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\
}"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\
}"SkyWayからROSへの転送を停止します。
ros2 service call /unpublish_topic skyway_ros_bridge_msgs/srv/UnpublishTopic "{\
topic_name: '/skyway/image'\
}"ROSからSkyWayへの転送を停止します。
ros2 service call /unpublish_stream skyway_ros_bridge_msgs/srv/UnpublishStream "{\
publication_id: '<転送を停止したいPublicationのID>'\
}"Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。