KumarRobotics / flea3

ROS driver for flea3/grasshopper3 camera
21 stars 34 forks source link

Unable to find executable #5

Closed kingfolk closed 8 years ago

kingfolk commented 9 years ago

Hi,

I install flea3 via catkin_make with camera_base. I can't run any launch file. It seems the system has trouble to find flea3's executable lib, like flea3_single_node. i try rosrun flea3 flea3_list_cameras got [rosrun] Couldn't find executable named flea3_list_cameras below /home/coman/catkin_ws/src/flea3 i can successfully run the other package under catkin_ws dir. my ros version is indigo and os is ubuntu 14.04.

many thanks.

EDIT: false alert... it found after rebuild. please close it.

kingfolk commented 9 years ago

One question. May I?

I launch stereo_node but both left and right image_raw topics return pitch black image. All 0. I have also try ros point grey driver to use two cameras at the same time. but only the first one streaming correctly. I have setup the usbfs again and again... 1000 or 256... kernel version 3.19... flycapture sdk 2.6 and 2.8, both are not working properly... Do you have a clue what is going wrong?

versatran01 commented 9 years ago

I can recommend a couple of things to try.

  1. Start flycap 2.8.3 and use control + click to select two cameras and then ok and see if you see two images. (Their connections should both be usb3, but this doesn't matter generally). This should usually work.
  2. Start two flycap 2.8.3 in different terminal and each starting a camera. You will probably see 1 camera working the other hanging. This is the same thing that's happening to the driver, the second camera hangs during StartCapture()
  3. Depends on whether you need USB3 bandwidth or not, you can try either 2.7.3 or 2.6.4. 2.7.3 has issue with USB3, but if your application can get away with USB2, then it should work. If you need high res high fps, then ptgrey recommends using 2.6.4. I haven't tested it, but you can give it a try.
kingfolk commented 9 years ago

Great! Thanks!

Step 1 is good.

Step 2. I got (FlyCap2:15664): libglade-WARNING **: unknown attribute swapped' for <signal>. when i start camera in second flycap. But this warning does not terminate the process. The second camera is not started. So i guess this is some sort of analogy to what happen in real situation. Two process start one after another but just the first one get the desired result. When i using the ros pointgrey_camera_driver, if i launch two nodelet manager, each managing one camera node, the second one does not get any image. This is the launch file. https://github.com/ros-drivers/pointgrey_camera_driver/issues/8#issuecomment-70251545 But if i just start one nodelet manager(remove the namespace and reduce on manager), which however cause two camera nodes publish msg to the same topics and thus conflicting, the result /image_color flicker between left and right camera view. which means both cameras are streaming. i am a ros newbie... can i call nodelet manager which is outside my current namespace?

Step 3 all usb ports are usb3 standard. however, i use a usb2 hub and test it with 2.6.4. single node works but stereo still not.

many thanks!

versatran01 commented 9 years ago

I will take a look at this issue this afternoon and let you know. I will not have time to look at the pointgrey_camera_driver though, but I think you do not need two nodelet manager. So you will have 1 nodelet manager and two camera nodelets.

versatran01 commented 9 years ago

Ok, I looked at it.

Turned out the stereo_node doesn't work because the launch file is not up to date with the latest change. It is still using the old enable_trigger parameter instead of the new trigger_source parameter.

Be aware that this stereo node only implement software sync, which means the node fires two software triggers, one to each camera, the delay is very small, but not as good as hardware sync. If that is good enough for you, then I will leave it that way.

If you do require hardware sync, you might need to modify the node a bit yourself.

kingfolk commented 9 years ago

Great work! I can now launch stereo properly! Could you point out where should i modify if i want hardware sync. I know there is 2 to 1 cable that could make one camera host and the other slave.

versatran01 commented 9 years ago

The easiest thing to do is to use a common source to trigger both cameras. In this case, you simply set the trigger_source to the correct gpio pin and trigger_polarity to high for rising edge and low for falling edge. This requires no modification to the driver.

If you want to have a master/slave type of thing, this is a bit tricky. You will have to set one camera's strobe_source to some pin and the other camera's trigger_source to some pin. This cannot easily done through the dynamic reconfigure server as it copies the config and set it to both cameras. My workaround for this (as I did in bluefox2) is just manually set those settings in the Flea3Ros constructor. see: https://github.com/KumarRobotics/bluefox2/blob/master/src/bluefox2_ros.cpp

Obviously this is very ugly and I hope you can find a better way to deal with it. I would admit that some of the design of the base classes are flawed and do not work very well with this kind of situation. But since we are always using a imu as a trigger source for our cameras, this is not a problem for us.

kingfolk commented 9 years ago

Cool. Though I do not understand the details... Thanks for your work! One other thing is how can I get the tf of stereo camera? Because the lib rtabmap i am using require a valid tf for camera.

versatran01 commented 9 years ago

The camera node does not publish a tf, it only has a frame id, the default is stereo, you can change it to anything you want.