# [MSBRC] Final Project -- CatchIt!
## Positioning red ball (target): Kinect + OpenCV
### Steps:
1. `sudo apt-get install ros-kinetic-cv-bridge `
2. `sudo apt-get install ros-kinetic-vision-opencv `
3. edit CMakeList:
* Add OpenCV in:
1. include_directories
2. add_executable
3. target_link_libraries
* http://wiki.ros.org/vision_opencv
* http://wiki.ros.org/image_transport
4. `catkin_make -DCMAKE_BUILD_TYPE="Release"`
### Ref:
1. http://ros-users.122217.n3.nabble.com/cv-bridge-tutorial-td2124772.html
2. cv-bridge (rgb) //encoding: `BGR8`
* http://wiki.ros.org/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages
* https://github.com/code-iai/iai_kinect2/issues/388
3. cv-bridge (depth) //encoding: `16UC1`
* https://answers.ros.org/question/160611/how-can-i-get-depth-data-from-kinect/
* https://github.com/code-iai/iai_kinect2/issues/388#issuecomment-293735755
### global variable problem: combine rgbImg & dImg
* https://answers.ros.org/question/11810/how-to-pass-arguments-tofrom-subscriber-callback-functions/
### Subscribe and Publish
* https://answers.ros.org/question/59725/publishing-to-a-topic-via-subscriber-callback-function/
### RGB Image + Z(Depth) --> Find X&Y
* https://github.com/code-iai/iai_kinect2/issues/193
* http://ais.informatik.uni-freiburg.de/teaching/ws09/robotics2/pdfs/rob2-08-camera-calibration.pdf
* [ROS/sensor_msgs/CameraInfo Message](http://docs.ros.org/api/sensor_msgs/html/msg/CameraInfo.html)
### RVIZ
* https://github.com/code-iai/iai_kinect2/issues/153
### tf
* broadcast problem solved: https://answers.ros.org/question/46517/tftransformbroadcaster-in-callback/
*
### Terminal/Node:
1. `roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true`
2. `rosrun ball_pos ball_pos_node`
* `catkin_make -DCMAKE_BUILD_TYPE="Release"`
3. `rosrun kinect2\_viewer kinect2\_viewer sd cloud`