The following ROS packages are required:
- roscpp
- cv_bridge
- std_msgs
- sensor_msgs
- audio_utils
Implement a ROS node that publish received images and audio as a WebRTC stream. It also forwards images and audio received on the WebRTC stream to ROS.
- ros_image :
sensor_msgs/Image
- audio_in :
audio_utils_msgs/AudioFrame
- webrtc_image :
opentera_webrtc_ros_msgs/PeerImage
- webrtc_audio :
opentera_webrtc_ros_msgs/PeerAudio
- audio_mixed :
audio_utils_msgs/AudioFrame
<param name="is_stand_alone" value="true"/>
<param name="stream">
<param name="can_send_audio_stream" value="true"/> <!-- Send audio stream to the signaling server -->
<param name="can_receive_audio_stream" value="true"/> <!-- Receive audio stream from the signaling server -->
<param name="can_send_video_stream" value="true"/> <!-- Send video stream to the signaling server -->
<param name="can_receive_video_stream" value="true"/> <!-- Receive video stream from the signaling server -->
<param name="is_screen_cast" value="false"/> <!-- Is the image source a screen capture? -->
<param name="needs_denoising" value="false"/> <!-- Does the image source needs denoising? -->
</param>
<param name="signaling">
<param name="server_url" value="http://localhost:8080"/> <!-- Signaling server URL used in stand_alone mode -->
<param name="client_name" value="streamer"/> <!-- Peer name as which to join the room -->
<param name="room_name" value="chat"/> <!-- Room name to join -->
<param name="room_password" value="abc"/> <!-- Room password used in stand alone mode -->
</param>
For usage exemple look at ros_stream_client.launch.xml.
Implement a ROS node that publish received messages on the WebRTC data channel. It also forwards messages received on the WebRTC data channel to ROS.
- ros_data :
std_msgs/String
- webrtc_data :
opentera_webrtc_ros_msgs/PeerData
<param name="is_stand_alone" value="true"/>
<param name="signaling">
<param name="server_url" value="http://localhost:8080"/> <!-- Signaling server URL used in stand_alone mode -->
<param name="client_name" value="data_bridge"/> <!-- Peer name as which to join the room -->
<param name="room_name" value="chat"/> <!-- Room name to join -->
<param name="room_password" value="abc"/> <!-- Room password used in stand alone mode -->
</param>
For usage exemple look at ros_data_channel_client.launch.xml.
Implement a ROS node that dispatch received JSON messages and forward them on the rights topics.
- webrtc_data :
opentera_webrtc_ros_msgs/PeerData
- cmd_vel :
geometry_msgs/Twist
For usage exemple look at ros_json_data_handler.launch.xml.
Shared library for goal_manager
and labels_manager
to send navigation commands to the nav2
stack as well as navigation waypoints to map_image_generator
.
The library is embedded in both nodes, a single instance is not shared.
- stop (
std_msgs/Bool
): Signal to cancel all move_base goals.
- waypoint_reached (
std_msgs/String
): String of a JSON message containing the ID of the waypoint that has been reached. Used by the frontend to determine when the trajectory has been completed. - map_image_drawer/remove_goal: (
geometry_msgs/PoseStamped
): Removes a waypoint from the map image - map_image_drawer/add_goal: (
geometry_msgs/PoseStamped
): Adds a waypoint to the map image
Manages multiple waypoints received by the frontend and sends them to move_base one at a time. This node relies a service provided by the map_image_generator
package to convert the waypoints from image coordinates to map coordinates.
- waypoints (
opentera_webrtc_ros_msgs/Waypoints
): Array of image coordinate waypoints received from the frontend. - start (
std_msgs/Bool
): Signal to start navigating sequentially to the previously received waypoints. - All subscribed topics of
libnavigation
- All published topics of
libnavigation
Manages labels.
The stored labels are dependent on the map
transform and the database needs to be cleaned if the map changes.
A label represents a name grouped with an associated pose and a description.
This node relies on a service provided by the map_image_generator
package to convert the labels from image coordinates to map coordinates.
This node can also send a label as a goal to nav2
by its name.
- add_label_simple (
opentera_webrtc_ros_msgs/LabelSimple
): Label received from the frontend. - remove_label_by_name (
std_msgs/String
): Remove a label by its name - edit_label_simple (
opentera_webrtc_ros_msgs/LabelSimpleEdit
): Rename or move a label using frontend map coordinates - navigate_to_label (
std_msgs/String
): Navigate to a label by its name - All subscribed topics of
libnavigation
- stored_labels (
opentera_webrtc_ros_msgs/LabelArray
): Array of labels currently stored - stored_labels_text (
std_msgs/String
): JSON message with an array of maps{name: string, description: string}
labels names and descriptions. Used by the frontend to display a list of labels. - All published topics of
libnavigation