RM_Vison/rm_vision/rm_vision_bringup/launch/vision_bringup.launch.py

83 lines
2.8 KiB
Python

import os
import sys
from ament_index_python.packages import get_package_share_directory
sys.path.append(os.path.join(get_package_share_directory('rm_vision_bringup'), 'launch'))
def generate_launch_description():
from common import node_params, launch_params, robot_state_publisher, tracker_node
from launch_ros.descriptions import ComposableNode
from launch_ros.actions import ComposableNodeContainer, Node
from launch.actions import TimerAction, Shutdown
from launch import LaunchDescription
def get_camera_node(package, plugin):
return ComposableNode(
package=package,
plugin=plugin,
name='camera_node',
parameters=[node_params],
extra_arguments=[{'use_intra_process_comms': True}]
)
def get_camera_detector_container(camera_node):
return ComposableNodeContainer(
name='camera_detector_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
camera_node,
ComposableNode(
package='armor_detector',
plugin='rm_auto_aim::ArmorDetectorNode',
name='armor_detector',
parameters=[node_params],
extra_arguments=[{'use_intra_process_comms': True}]
)
],
output='screen',
emulate_tty=True,
ros_arguments=['--ros-args', '--log-level',
'armor_detector:='+launch_params['detector_log_level']],
on_exit=Shutdown(),
)
hik_camera_node = get_camera_node('hik_camera', 'hik_camera::HikCameraNode')
mv_camera_node = get_camera_node('mindvision_camera', 'mindvision_camera::MVCameraNode')
if (launch_params['camera'] == 'hik'):
cam_detector = get_camera_detector_container(hik_camera_node)
elif (launch_params['camera'] == 'mv'):
cam_detector = get_camera_detector_container(mv_camera_node)
serial_driver_node = Node(
package='rm_serial_driver',
executable='rm_serial_driver_node',
name='serial_driver',
output='both',
emulate_tty=True,
parameters=[node_params],
on_exit=Shutdown(),
ros_arguments=['--ros-args', '--log-level',
'serial_driver:='+launch_params['serial_log_level']],
)
delay_serial_node = TimerAction(
period=1.5,
actions=[serial_driver_node],
)
delay_tracker_node = TimerAction(
period=2.0,
actions=[tracker_node],
)
return LaunchDescription([
robot_state_publisher,
cam_detector,
delay_serial_node,
delay_tracker_node,
])