[ros-users] Sync problem with stereo_image_proc

Radu Bogdan Rusu rusu at willowgarage.com
Fri May 21 16:20:42 UTC 2010


Dear Sacha,

Thanks for the uploading the data. I had a look at the bag file that you recorded, and as far as I can tell, it looks 
like the camera_info is screwed up:

header:
   seq: 2145
   stamp: 2144000000000
   frame_id: fixed_frame
height: 240
width: 320
roi:
   x_offset: 100
   y_offset: 0
   height: 240
   width: 320
D: [0.0, 0.0, 0.0, 0.0, 0.0]
K: [inf, 0.0, 159.5, 0.0, inf, 119.5, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [inf, 0.0, 159.5, 0.0, 0.0, inf, 119.5, 0.0, 0.0, 0.0, 1.0, 0.0]

Did you calibrate the cameras using the instructions on the wiki? Having inf values in K and P is bad :)

Cheers,
Radu.

On 05/21/2010 09:15 AM, Sacha Aury wrote:
> Dear Radu
>
> Thanks for your help. Since my connection at work is not really fast, I
> will send the bag on http://fly.yozora-irc.net/shadow tonight. You can
> already see my disparity map and both left / right images at this place.
>
> Cheers,
> Sacha
>
> Le vendredi 21 mai 2010 à 08:55 -0700, Radu Bogdan Rusu a écrit :
>> Dear Sacha,
>>
>> Can you assemble a bag file with the following topics? Please replace "mystereo" with the name of your stereo camera:
>> /mystereo/left/image_raw
>> /mystereo/left/camera_info
>> /mystereo/right/image_raw
>> /mystereo/right/camera_info
>>
>> and upload it somewhere where I can access it?
>>
>> In the meantime, can you make a screenshot of the disparity image? Just visualize it using image_view, and save it to a
>> jpg/png.
>>
>> Thanks,
>> Radu.
>>
>> On 05/21/2010 02:41 AM, Sacha Aury wrote:
>>> Dear Radu,
>>>
>>> Even if I understand that having some not valid disparity values is
>>> possible, I actually do not have any good ones. Moreover, all my points
>>> are quite the same (0.0, 0.0, nan) which is a bit strange I think. What
>>> could I do to fix this ? I already tried to change parameters with
>>> dynamic_reconfigure, but it did not change anything.
>>>
>>> Cheers,
>>> Sacha
>>>
>>> Le jeudi 20 mai 2010 à 10:45 -0700, Radu Bogdan Rusu a écrit :
>>>> Dear Sacha,
>>>>
>>>> What you're seeing makes sense. Though your disparity "looks good", I am sure you don't have valid disparity values at
>>>> each pixel in the disparity image. None of us do :). What you are seeing as the output of rostopic echo is the list of
>>>> 3D points that do not have valid disparity values (we mark those with nan).
>>>>
>>>> Cheers,
>>>> Radu.
>>>>
>>>> On 05/20/2010 09:37 AM, Sacha Aury wrote:
>>>>> I do not really understand why, but I looked to the TF tutorial, added a
>>>>> few things to my program and rviz do not complain anymore. To recap, I
>>>>> now have a disparity map, rviz do not complain about a fixed_frame, but
>>>>> my goal is to get the points cloud. Rviz warns :
>>>>> [ WARN] 1274372115.122808000: TF_OLD_DATA ignoring data from the past
>>>>> for frame /test at time 16566 according to authority /camera_sync
>>>>> Possible reasons are listed at
>>>>>
>>>>>
>>>>>
>>>>> $rostopic echo /stereo/points  | less :
>>>>> header:
>>>>>       seq: 937
>>>>>       stamp: 18596000000000
>>>>>       frame_id: fixed_frame
>>>>> points: [
>>>>>         x: 0.0
>>>>>         y: 0.0
>>>>>         z: nan,
>>>>>         x: 0.0
>>>>>         y: 0.0
>>>>>         z: nan,
>>>>>         x: 0.0
>>>>>         y: 0.0
>>>>>         z: nan,
>>>>>         x: 0.0
>>>>>         y: 0.0
>>>>>         z: nan,
>>>>>         x: 0.0
>>>>>         y: 0.0
>>>>>         z: nan,
>>>>>         x: 0.0
>>>>>
>>>>> I don't get it, since my disparity map looks good. I can send you a
>>>>> screenshot of the map if you need it.
>>>>> So, why is the processing not sending the good coords ? I did not
>>>>> calibrate my cameras since I did not find a way to do it for stereo
>>>>> vision, is there a problem with that ?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> Le mercredi 19 mai 2010 à 10:38 -0700, Josh Faust a écrit :
>>>>>> If you don't have a TF transform tree (http://ros.org/wiki/tf), the
>>>>>> fixed frame needs to match the frame you've set.  You also need to set
>>>>>> the timestamp in the header.
>>>>>>
>>>>>> msg.header.stamp = ros::Time::now();
>>>>>>
>>>>>> Josh
>>>>>>
>>>>>> On Wed, May 19, 2010 at 7:53 AM, Sacha Aury<sacha at shadowrobot.com>
>>>>>> wrote:
>>>>>>            Thanks for your help. I now have a single node synchronizing
>>>>>>            my two
>>>>>>            cameras (image and infos). It works with the stereo_view and I
>>>>>>            get the
>>>>>>            disparity map, which I am configuring. My question is now
>>>>>>            about rviz,
>>>>>>            which I've never used. It seems to need a fixed frame to
>>>>>>            display my 3D
>>>>>>            cloud points. I tried to set a frame_id in my synchronization
>>>>>>            node
>>>>>>            (before broadcasting it to stereo_image_proc), but it does not
>>>>>>            work,
>>>>>>            rviz still can't get any fixed frame.
>>>>>>
>>>>>>            How can I do that ? I think I am close to the result, but I
>>>>>>            can't see
>>>>>>            it !
>>>>>>
>>>>>>            Le mardi 18 mai 2010 à 09:07 -0700, Blaise Gassend a écrit :
>>>>>>
>>>>>>            >    Hi Sacha,
>>>>>>            >
>>>>>>            >    stereo_image_proc doesn't care about when your message was
>>>>>>            published, it
>>>>>>            >    just cares about the timestamp in the message. So your
>>>>>>            republishing node
>>>>>>            >    needs to set the timestamp, both in the image topic and in
>>>>>>            the
>>>>>>            >    camera_info topic.
>>>>>>            >
>>>>>>            >    Blaise
>>>>>>            >
>>>>>>            >    On Tue, 2010-05-18 at 16:29 +0100, Sacha Aury wrote:
>>>>>>            >    >    I think that having a hardware solution is a bit overkill
>>>>>>            for my
>>>>>>            >    >    problem. So I tried to write a node which collected image
>>>>>>            messages from
>>>>>>            >    >    my two cameras and which published both message every x
>>>>>>            seconds,
>>>>>>            >    >    typically 1/2. And when I am using
>>>>>>            image_pipeline/stereo_image_proc, I
>>>>>>            >    >    got messages of that kind :
>>>>>>            >    >
>>>>>>            >    >    [ WARN] 1274196325.866264000: [stereo_image_proc] Low
>>>>>>            number of
>>>>>>            >    >    synchronized left/right image pairs received.
>>>>>>            >    >    Left images received: 831
>>>>>>            >    >    Right images received: 831
>>>>>>            >    >    Synchronized pairs: 0
>>>>>>            >    >    Possible issues:
>>>>>>            >    >        * The cameras are not synchronized.
>>>>>>            >    >        * The network is too slow. For each synchronized image
>>>>>>            pair, at most 1
>>>>>>            >    >    is getting through.
>>>>>>            >    >
>>>>>>            >    >    I don't know what I could do more, since the
>>>>>>            synchronisation should be
>>>>>>            >    >    done by a TimeSynchronizer in the stereo_image_proc class.
>>>>>>            Could it be
>>>>>>            >    >    posible to cheat on the timestamps in any way ?
>>>>>>            >    >
>>>>>>            >    >    Thanks, and sorry for the double post, I made a mistake at
>>>>>>            first.
>>>>>>            >    >
>>>>>>            >    >    Le lundi 17 mai 2010 à 07:53 -0700, Gary Bradski a écrit :
>>>>>>            >    >    >    What level do you want synchronization on?  Within
>>>>>>            framerate (both
>>>>>>            >    >    >    frames happen randomly but within 1/30 of a second of
>>>>>>            each other) or
>>>>>>            >    >    >    exact frame synchronization? The first is achievable,
>>>>>>            the second needs
>>>>>>            >    >    >    extra hardware.
>>>>>>            >    >    >
>>>>>>            >    >    >    At most, ROS can get you timestamps to align to, but to
>>>>>>            get actual
>>>>>>            >    >    >    simultaneous frames, you'll need a triggering signal in
>>>>>>            hardware such
>>>>>>            >    >    >    as a wire between 2 cameras (that allow for this). Some
>>>>>>            1394 cameras
>>>>>>            >    >    >    may allow triggering over the 1394 bus and then you'll
>>>>>>            only have the
>>>>>>            >    >    >    problem of getting both buses to trigger at the same
>>>>>>            time ... which
>>>>>>            >    >    >    may be approximately possible, most of the time ... on
>>>>>>            average.
>>>>>>            >    >    >    Depends on the driver and the 1394 port.
>>>>>>            >    >    >
>>>>>>            >    >    >    I've seen an automotive 1394 article (not ROS related)
>>>>>>            where they have
>>>>>>            >    >    >    about 10 cameras. The cameras run the cameras at very
>>>>>>            high framerates
>>>>>>            >    >    >    and then they do timestamp synchronization which allows
>>>>>>            fairly
>>>>>>            >    >    >    synchronous alignment of multiple with no extra
>>>>>>            hardware.
>>>>>>            >    >    >
>>>>>>            >    >    >    Gary
>>>>>>            >    >    >
>>>>>>            >    >    >    On Mon, May 17, 2010 at 5:23 AM, Sacha Aury
>>>>>>            <sacha at shadowrobot.com>
>>>>>>            >    >    >    wrote:
>>>>>>            >    >    >            Hi,
>>>>>>            >    >    >
>>>>>>            >    >    >            I am trying to make a stereo camera acquisition
>>>>>>            using ROS with
>>>>>>            >    >    >            the
>>>>>>            >    >    >            cameradc1394 driver and the stereo_proc package.
>>>>>>            I've got a
>>>>>>            >    >    >            separate
>>>>>>            >    >    >            computer to stream the image_raw from my two
>>>>>>            cameras. The
>>>>>>            >    >    >            stream works,
>>>>>>            >    >    >            but when I launch stereo_image_proc, it seems
>>>>>>            that my two
>>>>>>            >    >    >            cameras are
>>>>>>            >    >    >            not synchronized :
>>>>>>            >    >    >
>>>>>>            >    >    >            [ WARN] 1274098675.074074000:
>>>>>>            [stereo_image_proc] Low number
>>>>>>            >    >    >            of
>>>>>>            >    >    >            synchronized left/right image pairs received.
>>>>>>            >    >    >            Left images received: 3079
>>>>>>            >    >    >            Right images received: 3076
>>>>>>            >    >    >            Synchronized pairs: 0
>>>>>>            >    >    >            Possible issues:
>>>>>>            >    >    >                   * The cameras are not synchronized.
>>>>>>            >    >    >                   * The network is too slow. For each
>>>>>>            synchronized image
>>>>>>            >    >    >            pair, at most 1
>>>>>>            >    >    >            is getting through.
>>>>>>            >    >    >
>>>>>>            >    >    >            Here is my launch file :
>>>>>>            >    >    >
>>>>>>            >    >    >            <!-- startstream.launch  -->
>>>>>>            >    >    >            <launch>
>>>>>>            >    >    >                   <param name="display" type="int"
>>>>>>            value="0"/>
>>>>>>            >    >    >                   <param name="framerate" type="double"
>>>>>>            value="15"/>
>>>>>>            >    >    >                   <param name="mode"
>>>>>>            value="MODE_320x240_YUV422"/>
>>>>>>            >    >    >
>>>>>>            >    >    >             <node name="camera_left" pkg="cameradc1394"
>>>>>>            >    >    >            type="cameradc1394"
>>>>>>            >    >    >            respawn="true">
>>>>>>            >    >    >                   <param name="prefix" type="string"
>>>>>>            >    >    >            value="/stereo/left/"/>
>>>>>>            >    >    >                   <param name="cameraindex" type="int"
>>>>>>            value="0"/>
>>>>>>            >    >    >             </node>
>>>>>>            >    >    >
>>>>>>            >    >    >
>>>>>>            >    >    >             <node name="camera_right" pkg="cameradc1394"
>>>>>>            >    >    >            type="cameradc1394"
>>>>>>            >    >    >            respawn="true">
>>>>>>            >    >    >                   <param name="prefix" type="string"
>>>>>>            >    >    >            value="/stereo/right/"/>
>>>>>>            >    >    >                   <param name="cameraindex" type="int"
>>>>>>            value="1"/>
>>>>>>            >    >    >             </node>
>>>>>>            >    >    >
>>>>>>            >    >    >            </launch>
>>>>>>            >    >    >
>>>>>>            >    >    >            Is there any specific way to make the two
>>>>>>            cameras
>>>>>>            >    >    >            synchronize ?
>>>>>>            >    >    >
>>>>>>            >    >    >            I am following that tutorial :
>>>>>>            >    >    >
>>>>>>            >    >    >            http://www.ros.org/wiki/stereo_image_proc
>>>>>>            >    >    >
>>>>>>            >    >    >            Thank you for any help.
>>>>>>            >    >    >
>>>>>>            >    >    >            Sacha
>>>>>>            >    >    >
>>>>>>            >    >    >
>>>>>>            >    >    >            _______________________________________________
>>>>>>            >    >    >            ros-users mailing list
>>>>>>            >    >    >            ros-users at code.ros.org
>>>>>>            >    >    >            https://code.ros.org/mailman/listinfo/ros-users
>>>>>>            >    >    >
>>>>>>            >    >    >    _______________________________________________
>>>>>>            >    >    >    ros-users mailing list
>>>>>>            >    >    >    ros-users at code.ros.org
>>>>>>            >    >    >    https://code.ros.org/mailman/listinfo/ros-users
>>>>>>            >    >
>>>>>>            >    >
>>>>>>            >    >    _______________________________________________
>>>>>>            >    >    ros-users mailing list
>>>>>>            >    >    ros-users at code.ros.org
>>>>>>            >    >    https://code.ros.org/mailman/listinfo/ros-users
>>>>>>            >
>>>>>>            >
>>>>>>            >    _______________________________________________
>>>>>>            >    ros-users mailing list
>>>>>>            >    ros-users at code.ros.org
>>>>>>            >    https://code.ros.org/mailman/listinfo/ros-users
>>>>>>
>>>>>>
>>>>>>            _______________________________________________
>>>>>>            ros-users mailing list
>>>>>>            ros-users at code.ros.org
>>>>>>            https://code.ros.org/mailman/listinfo/ros-users
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ros-users mailing list
>>>>>> ros-users at code.ros.org
>>>>>> https://code.ros.org/mailman/listinfo/ros-users
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> ros-users mailing list
>>>>> ros-users at code.ros.org
>>>>> https://code.ros.org/mailman/listinfo/ros-users
>>>>
>>>
>>>
>>
>
>

-- 
| Radu Bogdan Rusu | http://rbrusu.com/



More information about the ros-users mailing list