Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
stereo_cameras [2019/02/28 17:49]
paul [E-Con Tara]
stereo_cameras [2019/03/31 14:49] (current)
Line 5: Line 5:
 {{::cleaned_up.gif?direct&600|}}  {{::cleaned_up.gif?direct&600|}} 
  
- 
-===== ZED Camera ===== 
- 
-==== Specs ==== 
- 
-**Name:**       ZED 
- 
-**Baseline:**   120mm  
- 
-==== Setup ==== 
- 
-I used the ZED in Primo running Ubuntu 16.04. I used the ROS driver package 
-provided. 
- 
-  * OpenCV was installed already 
-  * Installed cuda using the debian. Ran into an X server issue and ''%%glxgears%%'' didn't work. Restarted and it fixed everything 
-  * Downloaded the ZED sdk run file. Made it executable and ran it.  
-  * It installs in ''%%/usr/local/zed%%'' 
-  * Ran the ZED Explorer in the tools section of the install dir 
-  * Updated the firmware from 922 to 1142. After I updated i did notice some frame glitching every now and then 
-  * Went to the samples and built them using CMake 
- 
-==== ROS Install ==== 
- 
-  * Installed the source from github as a package in the catkin_ws workspace. 
-  * I changed the FPS in the launch file to 15. 
-  * Also can play with the confidence level. 
- 
-==== General Notes ==== 
- 
-Quality of the point cloud doesn't look great, and lots of "fall offs" on edges. 
-With that said I didn't see any speckles and CPU usage is VERY low especially 
-with the lower framerates. It is a very fast little device.  
- 
-==== Software ==== 
-Found the resolution definitions here:  
- 
-<code c++> 
-RESOLUTION_HD2K,   /**< 2208*1242, available framerates: 15 fps.*/ 
-RESOLUTION_HD1080, /**< 1920*1080, available framerates: 15, 30 fps.*/ 
-RESOLUTION_HD720,  /**< 1280*720, available framerates: 15, 30, 60 fps.*/ 
-RESOLUTION_VGA,    /**< 672*376, available framerates: 15, 30, 60, 100 fps.*/ 
-RESOLUTION_LAST 
-</code> 
- 
-So with 15 FPS and VGA resolution, and a level 25 confidence (which is now and 
-low) I'm still getting 120 mb/s throughput on the point cloud, which means i 
-have to fucking voxel grid filter it. I did find a ''%%pcl_cuda%%'' based voxel grid 
-filter though.  
- 
-Ok I think i just spent a half hour trying to get PCL with Cuda to build and I 
-am gonna go right ahead and give the fuck up. This will be a timesink like no 
-other. Gonna figure out what the nodelet manager is and attach a CPU based voxel 
-filter to and end of story. 
  
 ===== E-Con Tara ===== ===== E-Con Tara =====
Line 64: Line 10:
 An machine vision hardware company called E-Conn Systems makes an inexpensive and really great stereo camera called Tara. It is a USB 3.0 Stereo Vision Camera  An machine vision hardware company called E-Conn Systems makes an inexpensive and really great stereo camera called Tara. It is a USB 3.0 Stereo Vision Camera 
 [[https://www.e-consystems.com/3D-USB-stereo-camera.asp#key-features|link]]. It [[https://www.e-consystems.com/3D-USB-stereo-camera.asp#key-features|link]]. It
-has excellent accurate PCL creation fromranges of 0.meters to 3 meters. Below are outputs from two Tara cameras used on [[primo_robot|Primo]].+has excellent accurate PCL creation fromranges of 0.meters to 3 meters. Below are outputs from two Tara cameras used on [[primo_robot|Primo]]. An custom self-filter and a voxel-grid-filter were used with the raw PCL output from the cameras.
  
 {{::stereo_rig.png?direct&600|}} {{::stereo_rig.png?direct&600|}}
Line 218: Line 164:
 deviceID = 1 deviceID = 1
 </code> </code>
 +
 +===== Custom Stereo Camera =====
 +
 +I built a stereo camera from scratch using USB3 monocular cameras, and by
 +building a variable hardware triggering circuit to sequence frame grabs. This
 +allowed me to get a camera with a C-Mount lens holder, giving me access to
 +quality and inexpensive optics, and also allowed me to vary the baseline to
 +focus accuracy on where I needed it. I created my own driver from a See3Cam fork 
 +that allowed me to sync the two cameras and also dynamically reconfigure exposure
 +and sensor brightness levels.
 +
 +{{::img_6559.jpg?direct&600|}}
 +
 +In the above image, the two mono cameras separated on a rail, along with a triggering circuit in the middle comprise the custom stereo camera. Two Taras are housed above looking down on the left and right corners.
 +
 +{{::fwd_cam_expo.gif?direct&800|}}
 +
 +===== ZED Camera =====
 +
 +==== Specs ====
 +
 +**Name:**       ZED
 +
 +**Baseline:**   120mm 
 +
 +The following is a sample output dump from the ZED camera. It had RGB coloring which was nice, and was accurate to near ranges, but for points further than 3 meters wavy inaccuracies formed.
 +
 +{{::zed_1.png?600|}}
 +==== Setup ====
 +
 +I used the ZED in Primo running Ubuntu 16.04. I used the ROS driver package
 +provided.
 +
 +  * OpenCV was installed already
 +  * Installed cuda using the debian. Ran into an X server issue and ''%%glxgears%%'' didn't work. Restarted and it fixed everything
 +  * Downloaded the ZED sdk run file. Made it executable and ran it. 
 +  * It installs in ''%%/usr/local/zed%%''
 +  * Ran the ZED Explorer in the tools section of the install dir
 +  * Updated the firmware from 922 to 1142. After I updated i did notice some frame glitching every now and then
 +  * Went to the samples and built them using CMake
 +
 +==== ROS Install ====
 +
 +  * Installed the source from github as a package in the catkin_ws workspace.
 +  * I changed the FPS in the launch file to 15.
 +  * Also can play with the confidence level.
 +
 +==== General Notes ====
 +
 +Quality of the point cloud doesn't look great, and lots of "fall offs" on edges.
 +With that said I didn't see any speckles and CPU usage is VERY low especially
 +with the lower framerates. It is a very fast little device. 
 +
 +==== Software ====
 +Found the resolution definitions here: 
 +
 +<code c++>
 +RESOLUTION_HD2K,   /**< 2208*1242, available framerates: 15 fps.*/
 +RESOLUTION_HD1080, /**< 1920*1080, available framerates: 15, 30 fps.*/
 +RESOLUTION_HD720,  /**< 1280*720, available framerates: 15, 30, 60 fps.*/
 +RESOLUTION_VGA,    /**< 672*376, available framerates: 15, 30, 60, 100 fps.*/
 +RESOLUTION_LAST
 +</code>
 +
 +So with 15 FPS and VGA resolution, and a level 25 confidence (which is now and
 +low) I'm still getting 120 mb/s throughput on the point cloud, which means i
 +have to fucking voxel grid filter it. I did find a ''%%pcl_cuda%%'' based voxel grid
 +filter though. 
 +
 +Ok I think i just spent a half hour trying to get PCL with Cuda to build and I
 +am gonna go right ahead and give the fuck up. This will be a timesink like no
 +other. Gonna figure out what the nodelet manager is and attach a CPU based voxel
 +filter to and end of story.
 +
 +===== Filtering =====
 +
 +Voxel grid filtering from the PCL library was used to significantly lower the data throughput on the PCLs generated by the stereo cameras. On the left image below is a raw PCL dump and on the right is a voxel grid filtered one.
 +
 +{{::voxel_filter.png?600|}}
 +
 +
  
  • stereo_cameras.1551376194.txt.gz
  • Last modified: 2019/02/28 17:49
  • by paul