Its based on both the image_tools cam2image demos for ROS2 as well as the libuvc and usb_cam project for ROS1.
Features
- CameraInfo available
- CompressedImage topic (see compressed images for republishing using image_transport)
- Image topic
- Select camera (running the node for each camera connected)
There might be major changes to the code as it is a WIP.
/camera_info
- topic for camera info/image_raw
- topic for raw image data
Make sure to run setup.bash and local_setup.bash for all dependencies or symlink them into the repo.
Run
colcon build
ros2 run usb_camera_driver usb_camera_driver_node __ns:=/<your namespace> __params:=config.yaml
Available parameters:
- frame_id -> transform frame_id of the camera, defaults to "camera"
- width -> image width (1280 default)
- height -> image height (720 default)
- camera_id -> id of camera to capture (0 - 100, 0 default)
To use the camera info functionality you need to load a file from the camera_calibration (https://github.com/ros-perception/image_pipeline/tree/ros2/camera_calibration) library and put it in/name it file:///Users/<youruser>/.ros/camera_info/camera.yaml
To get compressed images (works seamlessly with web streaming) republish the topic using image_transport which is available for ROS2.
ros2 run image_transport republish raw in:=image_raw compressed out:=image_raw_compressed
Make sure to link/install https://github.com/ros-perception/image_transport_plugins/tree/ros2 before to enable compressed image republishing using image_transport since its not included in the base package. More information here http://wiki.ros.org/image_transport, here http://wiki.ros.org/compressed_image_transport and here https://answers.ros.org/question/35183/compressed-image-to-image/