This package provides functionalities for stereo image acquisition, noise image generation, and inverse triangulation using ROS 2. It includes nodes for capturing synchronized stereo images, displaying noise images, and performing inverse triangulation to generate 3D point clouds.
- Stereo Image Acquisition: Captures synchronized stereo images and saves them to a specified directory.
- Noise Image Generation: Generates and displays noise images on a specified monitor, ideal for pattern projection applications.
- Inverse Triangulation: Processes stereo images to generate 3D point clouds using inverse triangulation techniques.
- ROS 2
- OpenCV
- CUDA
- libnoise
- ROS 2: Humble
- OpenCV: 4.5.4
- CUDA: Version 12.6
- JetPack: 6.2 [L4T 36.4.3]
First, navigate to your ROS 2 workspace and clone the package:
cd ~/ros2_ws/src
git clone https://github.com/yourusername/stereo_active.git
cd stereo_activeFollow these commands to install libnoise, which is required for generating noise patterns.
cd
git clone https://github.com/qknight/libnoise.git
cd libnoise
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfigAfter setting up dependencies, build the package using colcon:
cd ~/ros2_ws && colcon build-
Jetson GPIO Control Node: This node controls the motor, trigger signals, and laser projection via GPIO pins on the Jetson Orin Nano.
ros2 launch stereo_active gpiod_control.launch.py
-
Noise Image Generation Node: This node generates random noise patterns to project onto a surface. You can use this for calibration or pattern projection with multimedia projectors.
ros2 launch stereo_active noise_display.launch.py
-
Inverse Triangulation Node: This node acquires and processes stereo images to generate 3D point clouds. It triggers the laser projection and manages image acquisition.
ros2 launch stereo_active inverse_triangulation.launch.py
The NVIDIA Jetson Orin Nano processes the ROS nodes and communicates with external hardware (stepper motor, laser, and cameras) via its 40-pin GPIO header. Below is the electrical diagram for connecting the motor, laser, and camera triggers.
Note: Make sure to check your pin assignments and connections before powering on.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- libnoise: For noise generation functionality. GitHub Repository
