WARNING: These instructions are located in https://github.com/modular-ml/wrapyfi_ros_interfaces
To transmit ROS audio messages with Wrapyfi, you need to compile the ROS interfaces. ROS must already be installed on your system, with all its build dependencies. You can find the installation instructions here or install using Robostack.
- ROS Noetic
- Python 3.6
We recommend compiling the Wrapyfi ROS interfaces rather than installing them. However, if ROS was installed locally (not within mamba/micromamba), Then the Wrapyfi interfaces can be installed directly using APT
APT (local Noetic only)
source /opt/ros/noetic/setup.bash
sudo apt update
sudo apt install ros-noetic-wrapyfi-ros-interfaces
# test package: should return the audio message type for ROS
rosmsg show ROSAudioMessage
-
Copy the
wrapyfi_ros_interfaces
folder to your ROS workspace (assumed to be~/ros_ws
).# from the current directory cd ../ cp -r wrapyfi_ros_interfaces ~/ros_ws/src
-
Compile the ROS interfaces:
cd ~/ros_ws catkin_make
Note: If the wrong version of Python is used, the compilation will fail. Make sure that the correct version of cmake is used by modifying the
cmake_minimum_required
version in the~/ros_ws/src/wrapyfi_ros_interfaces/CMakeLists.txt
file:# CMakeLists.txt cmake_minimum_required(VERSION 3.0.2) # ...
Replacing VERSION 3.0.2 with the correct version of cmake.
-
Source the ROS workspace:
source ~/ros_ws/devel/setup.bash
-
Verify that the ROS Audio message interface is compiled:
rosmsg show ROSAudioMessage
Which should output:
[wrapyfi_ros_interfaces/ROSAudioMessage]: std_msgs/Header header uint32 seq time stamp string frame_id uint32 chunk_size uint8 channels uint32 sample_rate string encoding uint8 is_bigendian uint32 bitrate string coding_format uint32 step uint8[] data
-
Verify that the ROS Audio service interface is compiled:
rossrv show ROSAudioService
Which should output:
[wrapyfi_ros_interfaces/ROSAudioService]: string request --- wrapyfi_ros_interfaces/ROSAudioMessage response std_msgs/Header header uint32 seq time stamp string frame_id uint32 chunk_size uint8 channels uint32 sample_rate string encoding uint8 is_bigendian uint32 bitrate string coding_format uint32 step uint8[] data
Run your Wrapyfi enabled script from the same terminal. Now you can transmit ROS audio messages in PUB/SUB [example] and REQ/REP [example].