Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/introlab/opentera-webrtc-ros
ROS package for OpenTera WebRTC signaling server.
https://github.com/introlab/opentera-webrtc-ros
opentera robotics ros teleoperation webrtc
Last synced: about 2 months ago
JSON representation
ROS package for OpenTera WebRTC signaling server.
- Host: GitHub
- URL: https://github.com/introlab/opentera-webrtc-ros
- Owner: introlab
- License: apache-2.0
- Created: 2021-01-06T18:17:55.000Z (about 4 years ago)
- Default Branch: ros2
- Last Pushed: 2024-07-26T18:03:52.000Z (6 months ago)
- Last Synced: 2024-07-27T00:22:21.215Z (6 months ago)
- Topics: opentera, robotics, ros, teleoperation, webrtc
- Language: C++
- Homepage:
- Size: 6.46 MB
- Stars: 13
- Watchers: 4
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# opentera-webrtc-ros
Welcome to the opentera-webrtc-ros project. The goal of the project is to provide useful ROS nodes to stream audio/video/data through Google's WebRTC library wrapped in [opentera-webrtc](https://github.com/introlab/opentera-webrtc). Wrappers are written in C++ and Python and are compatible with ROS2 (Humble) at the moment. Support for ROS1 (Noetic) is in the [`ros1`](https://github.com/introlab/opentera-webrtc-ros/tree/ros1) branch. We use the [signaling server](https://github.com/introlab/opentera-webrtc/tree/main/signaling-server) implementation provided by opentera-webrtc.
Here are the key features:
* [ROS Messages](opentera_webrtc_ros_msgs) adding compatibility with ROS and [OpenTera protobuf protocol](https://github.com/introlab/opentera_messages) used in [opentera-teleop-service](https://github.com/introlab/opentera-teleop-service).
* [ROS Streaming nodes](opentera_webrtc_ros/README.md) capable of sending / receiving audio, video and data from WebRTC streams.
* Teleoperation with a [opentera-webrtc-teleop-frontend](https://github.com/introlab/opentera-webrtc-teleop-frontend) sending and receiving robot commands from the WebRTC data chanel in JSON format. We hope to be compatible with [rosbridge_suite](https://github.com/RobotWebTools/rosbridge_suite) in the future.
* Map-based 2D/3D teleoperation using [RTAB-Map ROS](https://github.com/introlab/rtabmap_ros). Generated floor maps are streamed like a 2D image for simplicity at the moment by the [map_image_generator](map_image_generator) node.
* Sound Source Localization / Tracking / Separation using [ODAS ROS](https://github.com/introlab/odas_ros).
* [Stand alone demonstrations](opentera_webrtc_demos/README.md) with simulated robot in Gazebo.
* [Robot side front-end (Qt)](opentera_webrtc_robot_gui/README.md) to display call information and remote user interaction.
* [OpenTera client](opentera_client_ros/README.md) basic implementation to act as a connected "device" that can receive calls from the OpenTera microservice cloud. A prototype web service (portal) is available in the [opentera-teleop-service](https://github.com/introlab/opentera-teleop-service) project.
> Note: This project is under developement. Any contribution or suggestion is welcome. Please use GitHub's [Issues](https://github.com/introlab/opentera-webrtc-ros/issues) system for questions or bug reports.
## License
By default, libwebrtc is built with non-free codecs. See [opentera-webrtc](https://github.com/introlab/opentera-webrtc#license) to build without them.
The project is licensed with:
* [Apache License, Version 2.0](LICENSE)
## Authors
* Cédric Godin (@godced)
* Marc-Antoine Maheux (@mamaheux)
* Dominic Létourneau (@doumdi)
* Gabriel Lauzier (@G-Lauz)
* Jérémie Bourque (@JeremieBourque1)
* Philippe Warren (@philippewarren)
* Ian-Mathieu Joly (@joli-1801)## Dependencies / Requirements
The procedure is written for Ubuntu 22.04 using ROS2 Humble. We assume ROS is already installed. If not, follow the [ROS2 Humble Installation Instructions](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) first. A more recent CMake than the default on Ubunuttu 22.04 is required. If the installed CMake version is 3.22, follow the [CMake Installation Instructions](https://apt.kitware.com/). The following packages must also be installed :
```bash
# utilities
sudo apt install unzip rsync ros-dev-tools# opentera-webrtc-ros packages
sudo apt install ros-humble-camera-info-manager ros-humble-rtabmap-ros ros-humble-rqt-tf-tree ros-humble-turtlebot3-gazebo ros-humble-turtlebot3-description ros-humble-turtlebot3-navigation2 ros-humble-joint-state-publisher-gui# protobuf
sudo apt install libprotobuf-dev protobuf-compiler python3-protobuf# python dependencies
sudo apt install python3-pip portaudio19-dev# nodejs dependencies
sudo apt install nodejs npm# audio_utils packages
sudo apt install cmake build-essential gfortran texinfo libasound2-dev libpulse-dev 'libgfortran-*-dev'# odas_ros packages
sudo apt install libfftw3-dev libconfig-dev# gstreamer for hardware acceleration
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools# qt submodules
sudo apt install libqt5charts5-dev
```## Installation
### 1 - Create a colcon workspace (if not already done)
```bash
# Create the workspace
mkdir -p ~/teleop_ws/src
```### 2 - Get all the required ROS packages
```bash
cd ~/teleop_ws/src
# cv_camera
git clone https://github.com/Kapernikov/cv_camera.git
# audio_utils
git clone https://github.com/introlab/audio_utils.git --recurse-submodules
# odas_ros
git clone https://github.com/introlab/odas_ros.git --recurse-submodules
# opentera-webrtc-ros
git clone https://github.com/introlab/opentera-webrtc-ros.git --recurse-submodules
```### 3 - Install the Python requirements
```bash
cd ~/teleop_ws/src/opentera-webrtc-ros/opentera_client_ros
python3 -m pip install -r requirements.txt
cd ~/teleop_ws/src/opentera-webrtc-ros/opentera_webrtc_ros
python3 -m pip install -r requirements.txt
cd ~/teleop_ws/src/opentera-webrtc-ros/opentera_webrtc_ros/opentera-webrtc
python3 -m pip install -r requirements.txt
```### 4 - Build all the ROS packages
```bash
cd ~/teleop_ws
colcon build --symlink-install --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Debug --no-warn-unused-cli
```## Running the demos
Please see the [opentera_webrtc_demos package.](opentera_webrtc_demos/README.md)
## Sponsor
![IntRoLab](https://introlab.3it.usherbrooke.ca/IntRoLab.png)
[IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab](https://introlab.3it.usherbrooke.ca)