Software
Software On this page I provide some of my software libraries I developed for the GStreamer 0.10 framework. Usable for intelligent cameras, robot vision and surveillance.Highlights:
- OpenCL enabled rectification & filters
- SIFT based object detection
- Face detection
- interface to ROS (www.ros.org) tested on Fuerte and Groovy (for Groovy you need to modify gstros/Makefile.am and due to a bug in ROS)
- Shared memory interface for minimal overhead local inter-process communication
sudo apt-get install libtool automake cvs gettext bison flex libglib2.0-dev libxml2-dev liboil0.3-dev intltool libgtk2.0-dev libglade2-dev libgoocanvas-dev libx11-dev libxv-dev gtk-doc-tools libgstreamer0.10-dev libcv-dev libhighgui-dev libcvaux-dev libgsl0-dev libgstreamer-plugins-base0.10-dev yasm libgtk-3-dev liborc-0.4-dev gstreamer-tools mplayer gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly libopencv-dev
In order to exclude Plugins, edit the configure.ac and Makefile.am
(If you just want to exclude the OpenCL based plugins, "cp Makefile.am.nocl Makefile.am")
./autogen.sh
./configure --libdir=/usr/lib/x86_64-linux-gnu
(if you are on 32-bit: ./configure --libdir=/usr/lib/i386-linux-gnu)
sudo make install
Now "gst-inspect" should list all the additional plugins. For example "gst-inspect rossink" should print out details about the plugin to publish image data in the ROS universe.
Troubleshooting: If you forget to source the ROS setup files, some plugins may get blacklisted. In this case, simple "rm -r $HOME/.gstreamer", it will be recreated.
Running on Groovy:
LD_PRELOAD=/opt/ros/groovy/lib/libimage_transport.so gst-launch ….
ROS-Example, Publish a Video 4 linux stream in ROS:
LD_PRELOAD=/opt/ros/groovy/lib/libimage_transport.so gst-launch v4l2src ! queue leaky=2 max-size-buffers=1 ! ffmpegcolorspace ! "video/x-raw-rgb , bpp=24" ! timestamper t1=-1 t2=1 ! rossink topic=mycamera frame_id=mycamera_link camerafile=/path/to/camerafiles.yaml sync=0 peeralloc=0
The file /path/to/camerafile.yaml is used to store the camera calibration data. If you calibrate the camera using the ROS-methods, the file is replaced (if you have write access to it). Replace mycamera/mycamera_link with something that is suitable for you. Always set peeralloc to 0 if you are using v4l2src (Memleak bug in Gstreamer)!!
Object detection in ROS:
LD_PRELOAD=/opt/ros/groovy/lib/libimage_transport.so gst-launch -v rossrc topic=/mycamera/image_raw ! queue leaky=2 max-size-buffers=1 ! ffmpegcolorspace ! siftextractor double=1 ! rossiftfolder frame-id=myframeid directory=/path_to/directory/containing/image_files caminfotopic=/mycamera/camera_info ! fakesink
The directory with image files should contain jpeg files. Numbers (e.g. object100.jpg) in the filename will be interpreted the way that the real-world width of the object in the image is 100 mm. There should not be a border in your model-image, otherwise you have to increase the number. The command line from above will publish Markers on /siftobjects and transformation on \tf
NOTE for members of the TAMS-workgroup: You dont need to install the software on your local machine, just
export GST_PLUGIN_PATH=/informatik/isr/tams/software/hannes64
Download/Updates:
10-2013: Fixed an API-break of OpenCV, Optimized ROS object detection and calibration, lots of bug fixes
5-2014: Lots of bug fixes Download of file: gst-plugins-robotix5-2014.tar.bz2