66"""
77
88import os
9+ import yaml
910import launch
1011
1112import ament_index_python .packages
1920from launch_ros .substitutions import FindPackageShare
2021from ament_index_python .packages import get_package_share_directory
2122
22-
23- import yaml
24-
25-
26- # --------- master_example.launch.py
27-
28-
29- camera_list = {
30- 'cam0' : '23540201' ,
31- }
32-
33- serial = '23540201'
34- camera_type = 'blackfly_s'
35- parameter_file = PJoin (
36- [FindPackageShare ('spinnaker_camera_driver' ), 'config' , camera_type + '.yaml' ]
37- )
38-
39- exposure_controller_parameters = {
40- 'type' : 'master' ,
41- 'brightness_target' : 120 , # from 0..255
42- 'brightness_tolerance' : 20 , # when to update exposure/gain
43- # watch that max_exposure_time is short enough
44- # to support the trigger frame rate!
45- 'max_exposure_time' : 15000 , # usec
46- 'min_exposure_time' : 5000 , # usec
47- 'max_gain' : 29.9 ,
48- 'gain_priority' : False ,
49- }
50-
51- camera_params = {
52- 'debug' : False ,
53- 'quiet' : True ,
54- 'buffer_queue_size' : 1 ,
55- 'compute_brightness' : True ,
56- 'exposure_auto' : 'Continuous' ,
57- 'exposure_time' : 10000 , # not used under auto exposure
58- 'trigger_mode' : 'Off' ,
59- 'frame_rate_auto' : 'Off' ,
60- 'frame_rate_enable' : True ,
61- 'gain_auto' : 'Continuous' ,
62- 'trigger_source' : 'Software' ,
63- 'trigger_selector' : 'FrameStart' ,
64- 'trigger_overlap' : 'ReadOut' ,
65- 'trigger_activation' : 'RisingEdge' ,
66- 'balance_white_auto' : 'Continuous' ,
67- # You must enable chunk mode and chunks: frame_id, exposure_time, and gain
68- 'chunk_mode_active' : True ,
69- 'chunk_selector_frame_id' : 'FrameID' ,
70- 'chunk_enable_frame_id' : True ,
71- 'chunk_selector_exposure_time' : 'ExposureTime' ,
72- 'chunk_enable_exposure_time' : True ,
73- 'chunk_selector_gain' : 'Gain' ,
74- 'chunk_enable_gain' : True ,
75- # The Timestamp is not used at the moment
76- 'chunk_selector_timestamp' : 'Timestamp' ,
77- 'chunk_enable_timestamp' : True ,
78- 'frame_rate' : 5
79- }
80-
81-
82- def make_parameters (context ):
83- """Launch synchronized camera driver node."""
84- pd = LaunchConfig ('camera_parameter_directory' )
85- calib_url = 'file://' + LaunchConfig ('calibration_directory' ).perform (context ) + '/'
86-
87- exp_ctrl_names = [cam + '.exposure_controller' for cam in camera_list .keys ()]
88- driver_parameters = {
89- 'cameras' : list (camera_list .keys ()),
90- 'exposure_controllers' : exp_ctrl_names ,
91- 'ffmpeg_image_transport.encoding' : 'hevc_nvenc' , # only for ffmpeg image transport
92- }
93- # generate identical exposure controller parameters for all cameras
94- for exp in exp_ctrl_names :
95- driver_parameters .update (
96- {exp + '.' + k : v for k , v in exposure_controller_parameters .items ()}
97- )
98-
99- # generate camera parameters
100- cam_parameters ['parameter_file' ] = PJoin ([pd , 'blackfly_s.yaml' ])
101- for cam , serial in camera_list .items ():
102- cam_params = {cam + '.' + k : v for k , v in cam_parameters .items ()}
103- cam_params [cam + '.serial_number' ] = serial
104- cam_params [cam + '.camerainfo_url' ] = calib_url + serial + '.yaml'
105- cam_params [cam + '.frame_id' ] = cam
106- driver_parameters .update (cam_params ) # insert into main parameter list
107- # link the camera to its exposure controller. Each camera has its own controller
108- driver_parameters .update ({cam + '.exposure_controller_name' : cam + '.exposure_controller' })
109- return driver_parameters
110-
111-
112- # ----------------------------------
113-
11423def launch_setup (context , * args , ** kwargs ):
115- """Create composable node."""
116- # For the camera
117- #cam_name = LaunchConfig("camera_name")
118- #cam_str = cam_name.perform(context)
119-
120- # For the GPS
12124 config_directory = os .path .join (
12225 ament_index_python .packages .get_package_share_directory ('ublox_gps' ),
12326 'config' )
12427 param_config = os .path .join (config_directory , 'zed_f9p.yaml' )
12528 with open (param_config , 'r' ) as f :
12629 params = yaml .safe_load (f )['ublox_gps_node' ]['ros__parameters' ]
12730
128- # For EC
129- # bias_config = os.path.join(
130- # ament_index_python.packages.get_package_share_directory('high_altitude_ec'),
131- # 'config/silky_ev_all_zero.bias')
132- bias_config = "/home/dcist/fclad/ROS/high_altitude_env/src/high_altitude_ec/config/silkyHD_all_zero.bias"
133- # Declare launch arguments
134-
13531 # Find package share directory
13632 glider_share = FindPackageShare ('glider' )
13733 glider_share_dir = get_package_share_directory ('glider' )
@@ -146,7 +42,7 @@ def launch_setup(context, *args, **kwargs):
14642 graph_params_file = PJoin ([
14743 glider_share ,
14844 'config' ,
149- 'vectornav-vn100t .yaml'
45+ 'glider-params .yaml'
15046 ])
15147
15248 container = ComposableNodeContainer (
@@ -163,10 +59,8 @@ def launch_setup(context, *args, **kwargs):
16359 name = "recorder" ,
16460 parameters = [{'topics' : [
16561 "/ublox_gps_node/fix" ,
166- "/odom" ,
62+ "/glider/ odom" ,
16763 "/vectornav/imu" ,
168- "/vectornav/magnetic" ,
169- "/cam_driver/image_raw"
17064 ],
17165 'storage_id' : 'mcap' ,
17266 'record_all' : False ,
@@ -190,17 +84,6 @@ def launch_setup(context, *args, **kwargs):
19084 remappings = [],
19185 extra_arguments = [{'use_intra_process_comms' : True }]),
19286
193- # FLIR camera
194- ComposableNode (
195- package = 'spinnaker_camera_driver' ,
196- plugin = 'spinnaker_camera_driver::CameraDriver' ,
197- name = "cam_driver" ,
198- parameters = [camera_params , {'parameter_file' : parameter_file , 'serial_number' : serial }],
199- remappings = [
200- ('~/control' , '/exposure_control/control' ),
201- ],
202- extra_arguments = [{'use_intra_process_comms' : True }],
203- ),
20487 # Ublox GPS
20588 ComposableNode (
20689 package = 'ublox_gps' ,
@@ -276,11 +159,5 @@ def generate_launch_description():
276159 ),
277160 # This is for the composed nodes
278161 OpaqueFunction (function = launch_setup ),
279- #Node(
280- # package="sf000_driver",
281- # executable="reader.py",
282- # name="reader",
283- # remappings=[("/range", "/sf000/range")],
284- #)
285162 ]
286163 )
0 commit comments