Thanks Ash! For anyone following along, using Ash's fix no longer requires the ffmpegcolorspace plugin for gstreamer, nor the need to set GSCAM_CONFIG.
Oh and it appears you also need gscam installed on the host machine (from source if you're on Indigo, or with sudo apt-get install ros-hydro-gscam on Hydro. To get a simple video stream: On the Overo: $ roslaunch gscam v4l.launch On the host machine: $ rosrun image_view image_view image:=/v4l/camera/image_raw compressed On Tuesday, June 2, 2015 at 5:00:56 PM UTC-7, Ash Charles wrote: > > HI William, > > I played around with a JPEG-webcam using GSCAM. I needed to make two > tweaks. > 1. Install the gstreamer appsink package i.e. "smart install > gst-plugins-base-app". It looks like [1] gscam is tacking this plugin > onto the end of the gstreamer pipeline. > 2. Specify the (undocumented) 'image_encoding' parameter as 'jpeg'. > For this, I grabbed the example launch [2] file and added a "<param > name="image_encoding" value="jpeg"/>" line. Perhaps unnecessarily, I > also tweaked the gstreamer pipeline and disabled sync_sink so my > launch file looked like this: > <launch> > <!-- This launchfile should bring up a node that broadcasts a ros image > transport on /webcam/image_raw --> > > <arg name="DEVICE" default="/dev/video0"/> > <!-- The GStreamer framerate needs to be an integral fraction --> > <arg name="FPS" default="5/1"/> > <arg name="PUBLISH_FRAME" default="false"/> > > <node ns="v4l" name="gscam_driver_v4l" pkg="gscam" type="gscam" > output="screen"> > <param name="camera_name" value="default"/> > <param name="gscam_config" value="v4l2src device=$(arg DEVICE) ! > image/jpeg,framerate=$(arg FPS) "/> > <param name="frame_id" value="/v4l_frame"/> > <param name="sync_sink" value="false"/> > <param name="image_encoding" value="jpeg"/> > </node> > > <node if="$(arg PUBLISH_FRAME)" name="v4l_transform" pkg="tf" > type="static_transform_publisher" args="1 2 3 0 -3.141 0 /world > /v4l_frame 10"/> > </launch> > > > [1] https://github.com/ros-drivers/gscam/blob/master/src/gscam.cpp > [2] > https://raw.githubusercontent.com/ros-drivers/gscam/master/examples/v4l.launch > > HTH, > > Ash > > On Friday, May 29, 2015 at 3:10:24 PM UTC-7, William Phan wrote: >> >> Hi, >> >> Has anyone been able to get the gscam package working with the meta-ros >> layer? I'm trying to send a live video feed from a webcam attached to a >> Gumstix Overo COM on a Tobi expansion board to a host machine(where roscore >> is running) with Ubuntu 14.04+ROS Indigo. My gumstix-console-image.bb >> includes the following: >> >> >> 89 GSCAM_INSTALL = " \ >> 90 gscam \ >> 91 nodelet \ >> 92 cv-bridge \ >> 93 roscpp \ >> 94 theora-image-transport \ >> 95 sensor-msgs \ >> 96 camera-calibration-parsers \ >> 97 camera-info-manager \ >> 98 " >> 99 >> 100 IMAGE_INSTALL += " \ >> 101 ${FIRMWARE_INSTALL} \ >> 102 ${SYSTEM_TOOLS_INSTALL} \ >> 103 ${DEV_TOOLS_INSTALL} \ >> 104 ${NETWORK_TOOLS_INSTALL} \ >> 105 ${MEDIA_TOOLS_INSTALL} \ >> 106 ${GRAPHICS_LIBS} \ >> 107 ${UTILITIES_INSTALL} \ >> 108 ${GSCAM_INSTALL} \ >> 109 " >> >> >> The COM recognizes the webcam (Microsoft LifeCam VX3000) and assigns it >> to /dev/video0. >> >> I then install some missing plugins: >> >> $ smart update >> $ smart install gst-plugins-good-video4linux2 >> >> and source the environmental variable: >> >> $ export GSCAM_CONFIG="v4l2src device=/dev/video0 ! video/x-raw-rgb ! >> ffmpegcolorspace" >> >> but upon launching the gscam node, I am stuck at the following error >> message: >> >> root@overo:~# rosrun gscam gscam >> [ INFO] [1432936018.001607854]: Using gstreamer config from env: "v4l2src >> device=/dev/video0 ! video/x-raw-rgb ! ffmpegcolorspace" >> [ INFO] [1432936018.140851232]: using default calibration URL >> [ INFO] [1432936018.144604670]: camera calibration URL: file: >> ///home/root/.ros/camera_info/camera.yaml >> [ INFO] [1432936018.147747792]: Unable to open camera calibration file [ >> /home/root/.ros/camera_info/camera.yaml] >> [ WARN] [1432936018.151226588]: Camera calibration file /home/root/.ros/ >> camera_info/camera.yaml not found. >> [ INFO] [1432936018.153820427]: Loaded camera calibration from >> >> ** (gscam:1952): CRITICAL **: gst_app_sink_set_caps: assertion >> 'GST_IS_APP_SINK >> (appsink)' failed >> >> ** (gscam:1952): CRITICAL **: gst_base_sink_set_sync: assertion >> 'GST_IS_BASE_SINK >> (sink)' failed >> >> (gscam:1952): GStreamer-CRITICAL **: gst_element_link_pads_full: >> assertion 'GST_IS_ELEMENT (dest)' failed >> [FATAL] [1432936020.927885414]: GStreamer: cannot link launchpipe -> sink >> [FATAL] [1432936020.931242147]: Failed to initialize gscam stream! >> >> Based on the error I suspected that GStreamer was the problem, so I ran >> and installed: >> root@overo:~# gst-launch v4l2src device=/dev/video0 ! video/x-raw-rgb ! >> ffmpegco >> WARNING: erroneous pipeline: no element "ffmpegcolorspace" >> root@overo:~# smart install gst-plugins-base-ffmpegcolorspace >> >> Now launching gscam again gives the following: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> *root@overo:~# rosrun gscam gscam[ INFO] [1432936847.626166516]: Using >> gstreamer config from env: "v4l2src device=/dev/video0 ! video/x-raw-rgb ! >> ffmpegcolorspace"[ INFO] [1432936847.802852723]: using default calibration >> URL[ INFO] [1432936847.806423066]: camera calibration URL: >> file:///home/root/.ros/camera_info/camera.yaml[ INFO] >> [1432936847.811702291]: Unable to open camera calibration file >> [/home/root/.ros/camera_info/camera.yaml][ WARN] [1432936847.815394697]: >> Camera calibration file /home/root/.ros/camera_info/camera.yaml not found.[ >> INFO] [1432936847.819422776]: Loaded camera calibration from** >> (gscam:2019): CRITICAL **: gst_app_sink_set_caps: assertion >> 'GST_IS_APP_SINK (appsink)' failed** (gscam:2019): CRITICAL **: >> gst_base_sink_set_sync: assertion 'GST_IS_BASE_SINK (sink)' >> failed(gscam:2019): GStreamer-CRITICAL **: gst_bin_add: assertion >> 'GST_IS_ELEMENT (element)' failed[FATAL] [1432936851.527239271]: >> gst_bin_add() failed[FATAL] [1432936851.531999729]: Failed to initialize >> gscam stream!* >> >> It looks like it is probably a GStreamer problem, any pointers or >> suggestions will be much appreciated! >> William >> >
