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