Repository Summary
Description | ODAS ROS package |
Checkout URI | https://github.com/introlab/odas_ros.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-12-05 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
odas_ros | 0.0.0 |
odas_ros_msgs | 0.0.0 |
README
odas_ros
This package is a ROS2 package for ODAS.
For ROS1, please see the ros1
branch.
IntRoLab - Université de Sherbrooke
Authors
- Marc-Antoine Maheux
- Cédric Godin
- Simon Michaud
- Samuel Faucher
- Olivier Roy
- Vincent Pelletier
- Philippe Warren
- François Grondin
License
Prerequisites
You will need CMake, GCC and the following external libraries:
sudo apt-get install cmake gcc build-essential libfftw3-dev libconfig-dev libasound2-dev libpulse-dev libgfortran-*-dev perl
ODAS ROS uses the audio utilities from AudioUtils so it should be installed in your catkin workspace. If it is not already, here is how to do so:
Clone AudioUtils in your catkin workspace:
git clone https://github.com/introlab/audio_utils.git
Install dependencies:
sudo apt-get install gfortran texinfo
sudo pip install libconf
In the cloned directory of audio_utils
, run this line to install all submodules:
git submodule update --init --recursive
If you get errors when building with catkin_make
, you can modify the cmake file of audio_utils to add C++ 14 compiler option.
add_compile_options(-std=c++14)
Installation
First, you need to clone the repository in your catkin workspace.
git clone https://github.com/introlab/odas_ros.git
In the cloned directory of odas_ros
, run this line to install all submodules:
git submodule update --init --recursive
Hardware configuration
For ODAS to locate and track sound sources, it needs to be configured. There is a file (configuration.cfg
) that is used to provide ODAS with all the information it needs. You will need the position and direction of each microphones. See ODAS Configuration for details.
Here are the important steps:
Input configuration
Source configuration using pulseaudio
At this part of the configuration file, you need to set the correct pulseaudio device and channel mapping.
# Input with raw signal from microphones
interface: {
type = "pulseaudio";
#"pacmd list-sources | grep 'name:' && pacmd list-sources | grep 'channel map:'" to see the sources and their channel mapping, in the same order
source = "alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input";
channelmap = ("front-left", "front-right", "rear-left", "rear-right", "front-center", "lfe");
To know your source name and channel mapping, the easiest way it to use pacmd list-sources | grep 'name:' && pacmd list-sources | grep 'channel map:'
in a terminal. The output should look something like this:
name: <alsa_output.pci-0000_00_1f.3.analog-stereo.monitor>
name: <alsa_input.pci-0000_00_1f.3.analog-stereo>
name: <alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input>
channel map: front-left,front-right
channel map: front-left,front-right
channel map: front-left,front-right,rear-left,rear-right,front-center,lfe
Note that the names and channel maps are in the same order.
In this case, the source name is alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input
and the mapping is front-left,front-right,rear-left,rear-right,front-center,lfe
.
The mapping will need to be formated in a list: front-left,front-right,rear-left,rear-right,front-center,lfe
will become channelmap = ("front-left", "front-right", "rear-left", "rear-right", "front-center", "lfe");
Alternative: sound card configuration using ALSA
At this part of the configuration file, you need to set the correct card and device number.
# Input with raw signal from microphones
interface: { #"arecord -l" OR "aplay --list-devices" to see the devices
type = "soundcard_name";
devicename = "hw:CARD=1,DEV=0";
To know what is your card number, plug it in your computer and run arecord -l
in a terminal. The output should look something like this:
```
File truncated at 100 lines see the full file