Giter Club home page Giter Club logo

opentera-webrtc-ros's Introduction

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. Wrappers are written in C++ and Python and are compatible with ROS1 (Noetic) at the moment. We use the signaling server implementation provided by opentera-webrtc.

Here are the key features:

Note: This project is under developement. Any contribution or suggestion is welcome. Please use GitHub's Issues system for questions or bug reports.

License

By default, libwebrtc is built with non-free codecs. See opentera-webrtc to build without them.

The project is licensed with:

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 20.04 using ROS noetic. We assume ROS is already installed. If not, follow the ROS Installation Instructions first. The following packages must also be installed :

# opentera-webrtc-ros packages
sudo apt-get install nodejs ros-noetic-turtlebot3 ros-noetic-turtlebot3-gazebo ros-noetic-cv-camera ros-noetic-dwa-local-planner ros-noetic-rtabmap-ros

# protobuf
sudo apt-get install libprotobuf-dev protobuf-compiler python3-protobuf

# python dependencies
sudo apt-get install python3-pip portaudio19-dev

# nodejs dependencies
sudo apt-get install nodejs npm

# audio_utils packages
sudo apt-get install cmake build-essential gfortran texinfo libasound2-dev libpulse-dev libgfortran-*-dev

# odas_ros packages
sudo apt-get install libfftw3-dev libconfig-dev

# qt submodules
sudo apt-get install libqt5charts5-dev

Installation

1 - Create a catkin workspace (if not already done)

# Make sure ROS is installed first.
source /opt/ros/noetic/setup.bash
# Create the workspace and initial build files
mkdir -p ~/teleop_ws/src
cd ~/teleop_ws/
catkin_make

2 - Get all the required ROS packages

cd ~/teleop_ws/src
# 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

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

cd ~/teleop_ws
source devel/setup.bash
catkin_make

Running the demos

Please see the opentera_webrtc_demos package.

Sponsor

IntRoLab

IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab

opentera-webrtc-ros's People

Contributors

doumdi avatar g-lauz avatar jeremiebourque1 avatar joli-1801 avatar mamaheux avatar philippewarren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

opentera-webrtc-ros's Issues

Add labels in the map

Add locations (with labels) on the map to allow quick navigation. Labels need to be stored in RTAB-Map.

Generic robot_status

Change the opentera_webrtc_demos::robot_status.py node to be generic and extensible and work on all robots, then change the robot_status.py in T-Top and Beam repos to use the new facilities.

Possible implementations: subclasses, dependency injection

No map size limit

Right now, when the map grows out of bounds of the generated map image, the map stops being able to be drawn. Ideally, the map image generator should be able to crop the parts of the map hat are outside of the image.
Changes will probably have to be made in OccupancyGridImageDrawer.cpp

Center the map on the robot position

To make the map more intuitive when navigating, the center of the map should coincide with the position of the robot. The map should also rotate with the robot, similar to how a car GPS displays the map.

Cmake Error

Hi,

I am trying to build this package in my catkin workspace and I'm getting the following error:

CMake Error at opentera-webrtc-ros/CMakeLists.txt:9 (add_compile_definitions): Unknown CMake command "add_compile_definitions".

I am using cmake version 3.10.2

A number of build and runtime errors occurred during initial setup

Hi,

I want to play with webrtc demo first. But encountered lots of issues during the setup process. Here's a list of my findings.
catkin_make has failed for me due to a number of missing deps: fftw3-dev / libconfig-dev and gfortran of a specific version.

Had to spent some time on the latter, as the trickiest part here was not the missing gfortran (it was installed in my system), but rather an inconsistency in gcc / g++ deps. These 3 must match. But I had gcc/g++ 8.4.0 and gfortran 9.4.0 installed. And the main problem here is that for my Ubuntu 20.04 distribution there was neither gcc/g++-9.4.0 nor gfortran-8.4.0 available. So I have to install the 10th version of these 3 and run update-alternatives to continue the build process.

Then it failed on the python dependencies installation. It was a weird one as it didn't have permission to install packages linked to python3.7. However, I have a 3.8 version installed and available via python3 -V and update-alternatives. I had python3.7 at some point in the past but couldn't find any direct system reference except the availability of a python3.7 folder in the /usr/local/lib. So I have to remove it first. And then the build failed again due to the missing python interpreter error. The root cause was here: ./opentera-webrtc-ros/opentera_webrtc_ros/opentera-webrtc/CMakeLists.txt. I'm not sure why, but if we try to find python 3 package, it can't see an installed 3.8 version. When I replaced 3 with 3.8 the build finally passed. So it'd probably make sense to make python version configurable via parameter or env variable.

Ok, so setup is done. But when I tried to run the following demo:

roslaunch opentera_webrtc_demos demo.launch

it failed with a bunch of errors related to missing client_config.json:

Traceback (most recent call last):
  File "/home/user/ros1_workspaces/teleop_ws/src/opentera-webrtc-ros/opentera_client_ros/scripts/opentera_client_ros.py", line 256, in <module>
    with config_file_name.open() as json_file:
  File "/usr/lib/python3.8/pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/usr/lib/python3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.ros/opentera/client_config.json'

I don't see any notes about this config in the README. So wondering where I can find it or what should be the content?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.