A ROS driver for GMSL cameras on Drive PX platform
- JPEG images compression: tested with 7 cameras giving 30FPS with 4MB/s each camera of network bandwith usage. This is ideal for loging JPEGs on a separate computer on same network as Drive PX
- Raw images 1920x1208px: tested with 4 cameras giving ~15FPS on same Tegra as driver
- Raw images 1920x1208px rectified with image_proc_tegra on same Tegra as driver: tested with 2 cameras giving ~15FPS on same Tegra as driver
- Raw images donwsampled at 800x503px: tested with 4 cameras giving ~30FPS on same Tegra as driver
- Raw images donwsampled at 800x503px rectified with image_proc_tegra on same Tegra as driver: tested with 4 cameras giving ~30FPS on same Tegra as driver
- Raw images donwsampled at 800x503px rectified with image_proc_tegra on same Tegra as driver: tested with 4 cameras giving ~20FPS and about 45MB/s per camera on different computer on same network as Drive PX
- Ubuntu 16 LTS
- ROS kinetic
- OpenCV 3.4 for Opencv4CUDA branch
sudo apt install ros-kinetic-camera-info-manager
cd ~catkin_ws/src/
git clone https://github.com/DavidTorresOcana/ros_gmsl_driver/
cd ..
catkin_make
This node gets GMSL cameras frames and publishes them into ROS topics
~image_raw (sensor_msgs/Image)
~image_raw/compressed (sensor_msgs/CompressedImage)
~camera_info (sensor_msgs/CameraInfo)
selector-mask: This allows you to connect any camera at any port. E.g. "0111" to connect cameras 0,1 and 2 of port 0
~img_compressed (bool: default false) select to pusblish JPEG compressed images.
~JPEG_quality (int: default 65) quality of JPEGs being produced.
~img_raw (bool: default false) select to publish raw 1920x1208px RGBA images.
~img_raw_downsample (bool: default false) select to publish raw downsampled images as specified in ~img_downsample_width and ~img_downsample_heigth. It is not recommended to publish raw and raw_donwsample at same time
~img_downsample_width (int: default 1200) width of img_raw_downsample images.
~img_downsample_height (int: default 800) height of img_raw_downsample images.
~FPS (int: default 30) select how many FPS needs to be produced. It may not possible to achieve the required FPS in case of CPU shortage
~do_rectify (bool: default false) publish the flag "do_rectify" on ~camera_info topic.
~camera_type_names (string: default "") list of comma-separated strings, describing the type of cmera conected in eahc port. This parameters tells the driver the kind of camera you have connected in each port. Ports are considered to be connected in order.
* fish_eye: Sekonix NA1962 190x150 deg FOV
* onetwenty: Sekonix NA1262 120x73 deg FOV
* sixty: Sekonix NA6062 60x38 deg FOV
For more explanation, please read the launchfiles
Use launchfiles on ~launch folder to configure the node appropriately
roslaunch gmsl_n_cameras gmsl_n_cameras.launch
To rectify the camera feeds image_proc or image_proc_tegra can be used. image_proc_tegra can be used in Tegra cores and needs OpenCV with CUDA support
roslaunch gmsl_n_cameras cameras_rectifier.launch
Or
roslaunch gmsl_n_cameras cameras_rectifier_tegra.launch