Skip to content

ROS Camera driver for GStreamer-based video streams.

Notifications You must be signed in to change notification settings

katafoxi/gscam_noetic

 
 

Repository files navigation

GSCam Build Status

This is a ROS package originally developed by the Brown Robotics Lab for broadcasting any GStreamer-based video stream via the standard ROS Camera API. This fork has several fixes incorporated into it to make it broadcast correct sensor_msgs/Image messages with proper frames and timestamps. It also allows for more ROS-like configuration and more control over the GStreamer interface.

Note that this pacakge now only supports building in catkin workspaces.

GStreamer Library Support

gscam supports the following versions of GStreamer

0.1.x: Default

Install dependencies via rosdep.

1.0.x: Experimental

Dependencies:

  • gstreamer1.0-tools
  • libgstreamer1.0-dev
  • libgstreamer-plugins-base1.0-dev
  • libgstreamer-plugins-good1.0-dev

Ubuntu Install:

12.04
sudo add-apt-repository ppa:gstreamer-developers/ppa
sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev
14.04 + 16.04 + 18.04 + 20.04
sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev

Usage:

  • Use the CMake flag -DGSTREAMER_VERSION_1_x=On when building
  • See the Video4Linux2 launchfile example for an example of the differences in the GStreamer config lines

Notes:

  • This has been tested with v4l2src

ROS API (stable)

gscam

This can be run as both a node and a nodelet.

Nodes

  • gscam

Topics

  • camera/image_raw
  • camera/camera_info

Services

  • camera/set_camera_info

Parameters

  • ~camera_name: The name of the camera (corresponding to the camera info - camera_name/ replaces camera/ in the topic list)
  • ~camera_info_url: A url (file://path/to/file, package://pkg_name/path/to/file) to the camera calibration file.
  • ~gscam_config: The GStreamer configuration string.
  • ~frame_id: The TF frame ID.
  • ~reopen_on_eof: Re-open the stream if it ends (EOF).
  • ~sync_sink: Synchronize the app sink (sometimes setting this to false can resolve problems with sub-par framerates).

C++ API (unstable)

The gscam c++ library can be used, but it is not guaranteed to be stable.

Examples

See example launchfiles and configs in the examples directory. Currently there are examples for:

  • Video4Linux2: Standard video4linux-based cameras like USB webcams.
    • GST-1.0: Use the roslaunch argument GST10:=True for GStreamer 1.0 variant
  • Nodelet: Run a V4L-based camera in a nodelet
  • Video File: Any videofile readable by GStreamer
  • DeckLink: BlackMagic DeckLink SDI capture cards (note: this requires the gst-plugins-bad plugins) [tdgigevsrc] (launch/tdgigev.launch launch/tdgigev_bayer.launch) requires the Teledyne DALSA GigE-V Source plugin

About

ROS Camera driver for GStreamer-based video streams.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 86.8%
  • CMake 12.1%
  • Shell 1.1%