This commit is contained in:
Aditya Pulipaka
2026-02-10 13:18:20 -06:00
commit 5817485882
3 changed files with 125 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
stereoCal
__pycache__
calib

61
blackfly_viewer.py Normal file
View File

@@ -0,0 +1,61 @@
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
class BlackflyViewer(Node):
def __init__(self):
super().__init__('blackfly_viewer')
# Change this topic if your driver publishes elsewhere
image_topic = '/right_camera/image_raw'
self.bridge = CvBridge()
self.subscription = self.create_subscription(
Image,
image_topic,
self.image_callback,
10
)
self.get_logger().info(f'Subscribed to {image_topic}')
def image_callback(self, msg: Image):
try:
# Convert ROS Image -> OpenCV image
frame = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
cv2.imshow('Blackfly Camera', frame)
# Needed for OpenCV window events
if cv2.waitKey(1) & 0xFF == ord('q'):
self.get_logger().info('Shutting down viewer')
rclpy.shutdown()
except Exception as e:
self.get_logger().error(f'Image conversion failed: {e}')
def main():
rclpy.init()
node = BlackflyViewer()
try:
rclpy.spin(node)
except KeyboardInterrupt:
pass
finally:
cv2.destroyAllWindows()
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()

61
start_camera.launch.py Normal file
View File

@@ -0,0 +1,61 @@
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node, ComposableNodeContainer
#from perspective of cameras
LEFT_CAMERA_NAME = 'left'
RIGHT_CAMERA_NAME = 'right'
LEFT_CAMERA_NAMESPACE = 'stereo'
RIGHT_CAMERA_NAMESPACE = 'stereo'
def generate_launch_description():
config_path = os.path.join(
get_package_share_directory('spinnaker_camera_driver'),
'config',
'blackfly_s.yaml'
)
return LaunchDescription([
ComposableNodeContainer(
name='vision_container',
namespace='',
)
Node(
package='spinnaker_camera_driver',
executable='camera_driver_node',
name=LEFT_CAMERA_NAME,
namespace=LEFT_CAMERA_NAMESPACE,
parameters=[{
'parameter_file': config_path,
'serial_number': '25282106',
'camera_info_url': 'file:///home/sentry/camera_ws/stereoCal/left.yaml'
}]
),
Node(
package='spinnaker_camera_driver',
executable='camera_driver_node',
name=RIGHT_CAMERA_NAME,
namespace=RIGHT_CAMERA_NAMESPACE,
parameters=[{
'parameter_file': config_path,
'serial_number': '25235293',
'camera_info_url': 'file:///home/sentry/camera_ws/stereoCal/right.yaml'
}]
),
# Node(
# package='stereo_image_proc',
# executable='point_cloud_node',
# namespace='stereo',
# parameters=[{'approximate_sync': True}],
# remappings=[
# ('left/image_rect_color', 'left/image_rect'),
# ('right/image_rect_color', 'right/image_rect')
# ],
# output='screen'
# )
])