ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

how to use rosbridge, gscam to load video

asked 2012-04-07 20:33:52 -0600

tairen gravatar image

updated 2012-04-08 10:27:33 -0600

Hi, all,

I want to use rosbridge, gscam to load the video from the Webcam through socket

on the browser, but no matter how I use the example from the brown-ros-pkg, I can't make it run. To make my question more clear, I put similar code from brown-ros-pkg first, and I will show what I have tried after the code:

The code is

          String ip = "ws://Control:9090";

          //Variable to save rgb image
          PImage img;

           int     scrWidth;
           int     scrHeight;
           int     i;
           i=1;
           boolean lock2;
           boolean isRunning;

           void setup()
          {
            img = createImage(640, 480, RGB);
            scrWidth = img.width;
            scrHeight = img.height;

            size(scrWidth, scrHeight);
            background(125);
            fill(255);

            noLoop();
            connect(ip);
            println("Hello after connect!\n");
            isRunning = false;

            lock2 = false;
            }


            void draw()
            {

             if(isRunning)
             {image(img, 0, 0, scrWidth, scrHeight);
               println(" draw inside ");}
              }

             void run()
             {
               //Subscribe GStreamer pipeline
                 println("Hello run!");
                 subscribe('/gscam/image_raw',getCamStream);

                 frameRate(30);
                 loop();
                 isRunning = true;

                  println("Start");
               }

               void stop()
               {
                   println("Hello stop!");
                   isRunning = false;
                   noLoop();
                   println("Stop");
                }

               void getCamStream(msg)
              {

                if(lock2)
                return;

                lock2 = true;
                //msg.uri is a rgb data of streaming message
                img = loadImage(msg.uri);  
                 println("Hello getcamstream!\n");
                 lock2 = false;
               }

To test this code, I use the brown-ros-pkg recommends website: ROSProcessingjs Test suite.

Before I test, I already got the newest rosbridge package, the driver for the GSCam (I can see the image from the camera by running the node:

             $ rosrun image_view image_view image:=/gscam/image_raw)

My lab does not have irobot, I want do test whether the image could transit to browser or not, so I run roscore, rosbridge and gscam.

However, I could not load image to the default area, even the program could be initialized and subscribe the topic, and page ROSProcessingjs Test suite is always killed by itself, I also tried many ways:

(1) I doubt about the "frameRate() and loop()", because in processing.js official site, it tells me that loop() enables the draw() to work, but without any other functions, so even I delete the frameRate() or loop(), I only get lots of print "Hello getcamstream".

(2) I copy the subscribe() to draw(), it doesn't work

(3) by using rxgraph, I can see the "/gscam/image_raw" links "/rosbridge" well, but links "/image_view" with big red circle.

Can anyone give me little hint about where I was wrong? 
Thanks a lot!
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2012-04-14 07:56:59 -0600

jihoonl gravatar image

Hello,

You were not doing anything wrong but it was because the code is just out dated.

Instead of using rosbridge to stream a image topic through video, I would recommend to use mjpeg_server to stream a image topic to the web. It provides more promising way to transport image to web.

Check out http://www.ros.org/wiki/mjpeg_server

If you like to use Procesingjs capability on top of video stream, You can use MJPEG camera example, which requires both mjpeg_server and rosbridge.

Regards, Jihoon

edit flag offensive delete link more

Comments

Thanks a lot, Jihoon. I already figure out just like you said.

tairen gravatar image tairen  ( 2012-04-14 08:24:19 -0600 )edit
0

answered 2012-04-14 08:32:21 -0600

tairen gravatar image

The whole method used by me is the combination: Mjpeg + rosbridge + javascript + html5. And I also recommend the article written by Scott Bell: ARTICLE and the brown-ros-package.Hope these will help who have same problem with me before

edit flag offensive delete link more

Question Tools

Stats

Asked: 2012-04-07 20:33:52 -0600

Seen: 1,943 times

Last updated: Apr 14 '12