Repository Summary
Description | ROS2 messages and services for Wrapyfi |
Checkout URI | https://github.com/modular-ml/wrapyfi_ros2_interfaces.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-01-30 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
wrapyfi_ros2_interfaces | 0.4.30 |
README
Wrapyfi ROS 2 interfaces
WARNING: These instructions are located in https://github.com/modular-ml/wrapyfi_ros2_interfaces
To run the Wrapyfi ROS 2 services and transmit audio messages, you need to compile the ROS 2 interfaces. ROS 2 must already be installed on your system, with all its build dependencies. You can find the installation instructions here or install using Robostack.
Prerequisites
- ROS 2 Galactic/Humble
- Python 3.6
Installation
We recommend compiling the Wrapyfi ROS 2 interfaces rather than installing them. However, if ROS 2 was installed locally (not within mamba/micromamba),
Then the Wrapyfi interfaces can be installed directly using APT
APT (local Humble only)
source /opt/ros/humble/setup.bash
sudo apt update
sudo apt install ros-humble-wrapyfi-ros2-interfaces
# test package: should return the service message types for ROS 2 Native objects
ros2 interface show wrapyfi_ros2_interfaces/srv/ROS2NativeObjectService
Compiling
- Copy the
wrapyfi_ros2_interfaces
folder to your ROS 2 workspace (assumed to be~/ros2_ws
).
# from the current directory
cd ../
cp -r wrapyfi_ros2_interfaces ~/ros2_ws/src
- Compile the ROS 2 interfaces:
cd ~/ros2_ws
colcon build --packages-select wrapyfi_ros2_interfaces
**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 `~/ros2_ws/src/wrapyfi_ros2_interfaces/CMakeLists.txt` file:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
# ...
Replacing VERSION 3.5 with the correct version of cmake.
- Source the ROS 2 workspace:
source ~/ros2_ws/install/setup.bash
- Verify that the ROS 2 Native object service interface is compiled:
ros2 interface show wrapyfi_ros2_interfaces/srv/ROS2NativeObjectService
Which should output:
string request
---
string response
- Verify that the ROS 2 Image service interface is compiled:
ros2 interface show wrapyfi_ros2_interfaces/srv/ROS2ImageService
Which should output:
string request
---
sensor_msgs/Image response
std_msgs/Header header
builtin_interfaces/Time stamp
int32 sec
uint32 nanosec
string frame_id
# Header frame_id should be optical frame of camera
# origin of frame should be optical center of cameara
# +x should point to the right in the image
# +y should point down in the image
# +z should point into to plane of the image
# If the frame_id here and the frame_id of the CameraInfo
# message associated with the image conflict
# the behavior is undefined
uint32 height
uint32 width
string encoding
# taken from the list of strings in include/sensor_msgs/image_encodings.hpp
uint8 is_bigendian
uint32 step
uint8[] data
- Verify that the ROS 2 Audio service interface is compiled:
ros2 interface show wrapyfi_ros2_interfaces/srv/ROS2AudioService
Which should output:
string request
---
wrapyfi_ros2_interfaces/ROS2AudioMessage response
std_msgs/Header header
builtin_interfaces/Time stamp
int32 sec
uint32 nanosec
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 use the REQ/REP pattern (server/client) in Wrapyfi [\[example\]](https://wrapyfi.readthedocs.io/en/latest/examples/examples.communication_patterns.html#module-examples.communication_patterns.request_reply_example), and transmit ROS 2 audio messages [\[example\]](https://wrapyfi.readthedocs.io/en/latest/examples/examples.sensors.html#module-examples.sensors.cam_mic).
CONTRIBUTING
No CONTRIBUTING.md found.