Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
stereo_cameras [2019/02/28 17:44] paul [Stereo Cameras] |
stereo_cameras [2019/03/31 14:49] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Stereo Cameras ====== | ====== Stereo Cameras ====== | ||
- | Here are notes of various Stereo Cameras I've used and built. I used a number | + | Here are notes of various Stereo Cameras I've used and built. I used lots of them on [[primo_robot|Primo]] to recreate the outside world. |
{{:: | {{:: | ||
- | |||
- | ===== ZED Camera ===== | ||
- | |||
- | ==== Specs ==== | ||
- | |||
- | **Name: | ||
- | |||
- | **Baseline: | ||
- | |||
- | ==== 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 '' | ||
- | * Downloaded the ZED sdk run file. Made it executable and ran it. | ||
- | * It installs in '' | ||
- | * 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' | ||
- | 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, | ||
- | RESOLUTION_HD1080, | ||
- | RESOLUTION_HD720, | ||
- | RESOLUTION_VGA, | ||
- | RESOLUTION_LAST | ||
- | </ | ||
- | |||
- | 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 '' | ||
- | 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 ===== | ||
- | [[primo_robot|Primo]] has a Tara - 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:// | [[https:// | ||
- | was a great inexpensive stereo camera with excellent accurate PCL creation | + | has excellent accurate PCL creation |
- | ranges | + | |
+ | {{:: | ||
==== Specs ==== | ==== Specs ==== | ||
Line 217: | Line 164: | ||
deviceID = 1 | deviceID = 1 | ||
</ | </ | ||
+ | |||
+ | ===== 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. | ||
+ | |||
+ | {{:: | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{:: | ||
+ | |||
+ | ===== ZED Camera ===== | ||
+ | |||
+ | ==== Specs ==== | ||
+ | |||
+ | **Name: | ||
+ | |||
+ | **Baseline: | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{:: | ||
+ | ==== 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 '' | ||
+ | * Downloaded the ZED sdk run file. Made it executable and ran it. | ||
+ | * It installs in '' | ||
+ | * 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' | ||
+ | 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, | ||
+ | RESOLUTION_HD1080, | ||
+ | RESOLUTION_HD720, | ||
+ | RESOLUTION_VGA, | ||
+ | RESOLUTION_LAST | ||
+ | </ | ||
+ | |||
+ | 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 '' | ||
+ | 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. | ||
+ | |||
+ | {{:: | ||
+ | |||
+ | |||