init
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
stereoCal
|
||||
__pycache__
|
||||
calib
|
||||
61
blackfly_viewer.py
Normal file
61
blackfly_viewer.py
Normal 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
61
start_camera.launch.py
Normal 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'
|
||||
# )
|
||||
|
||||
])
|
||||
Reference in New Issue
Block a user