diff --git a/launch/include/camera_nodelets.launch b/launch/include/camera_nodelets.launch new file mode 100644 index 0000000000000000000000000000000000000000..caeff32b57ddf3a8b3d04a74ba51833d7bb345b8 --- /dev/null +++ b/launch/include/camera_nodelets.launch @@ -0,0 +1,159 @@ +<?xml version="1.0"?> + +<launch> + + <arg name="ns" default="ana"/> + + <arg name="obstacle_nodelet_manager" default="obstacle_nodelet_manager" /> + <arg name="hole_nodelet_manager" default="hole_nodelet_manager" /> + <arg name="camera_cloud_in" default="sensors/nav_cam/depth_registered/points"/> + + <arg name="average_node_name" default="average_point_cloud"/> + <arg name="average_config_file" default="$(find iri_average_point_cloud)/config/default_config.yaml"/> + + <arg name="normals_node_name" default="obstacle_detection_normals"/> + <arg name="normals_config_file" default="$(find iri_nav_obstacle_detection_normals)/config/default_config.yaml"/> + + <arg name="near_hole_detection_node_name" default="near_hole_detection"/> + <arg name="near_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/> + <arg name="hole_detection_cloud_in" default="radius_outlier_removal/output"/> + + <arg name="far_hole_detection_node_name" default="far_hole_detection"/> + <arg name="far_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/> + + <arg name="output" default="screen"/> + <arg name="launch_prefix" default=""/> + +<!-- ******************* OBSTACLE DETECTION ********************************** --> + <group ns="$(arg ns)"> + + <!-- Obstacle nodelets manager --> + <node name="$(arg obstacle_nodelet_manager)" + pkg="nodelet" + type="nodelet" + args="manager" + output="$(arg output)"/> + + <node pkg="nodelet" + type="nodelet" + name="pc_throttle" args="load iri_average_point_cloud/NodeletThrottlePC $(arg obstacle_nodelet_manager)" output="$(arg output)"> + <remap from="topic_in" to="$(arg camera_cloud_in)"/> + <remap from="topic_out" to="$(arg camera_cloud_in)_throttle"/> + <param name="update_rate" value="15"/> + </node> + </group> + + <include file="$(find iri_average_point_cloud)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg average_node_name)"/> + <arg name="camera_nodelet_manager" value="$(arg obstacle_nodelet_manager)"/> + <arg name="config_file" value="$(arg average_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="$(arg camera_cloud_in)_throttle"/> + </include> + + <group ns="$(arg ns)"> + <!-- Downsampling points --> + <node name="voxel_grid_obs" + pkg="nodelet" + type="nodelet" + args="load pcl/VoxelGrid $(arg obstacle_nodelet_manager)" + output="$(arg output)"> + <remap from="~input" to="average_point_cloud/output" /> + <rosparam> + input_frame: 'ana/base_footprint' + output_frame: 'ana/base_footprint' + leaf_size: 0.03 + filter_field_name: z + filter_limit_min: -0.5 + filter_limit_max: 5.0 + filter_limit_negative: False + </rosparam> + </node> + + <!-- Run a passthrough filter --> + <node name="passthrough" + pkg="nodelet" + type="nodelet" + args="load pcl/PassThrough $(arg obstacle_nodelet_manager)" + output="$(arg output)"> + <remap from="~input" to="voxel_grid_obs/output" /> + <rosparam> + filter_field_name: x + filter_limit_min: 0.01 + filter_limit_max: 1.5 + filter_limit_negative: False + </rosparam> + </node> + + <!-- Statistical outlier removal --> + <node name="outlier_removal" + pkg="nodelet" + type="nodelet" + args="load pcl/StatisticalOutlierRemoval $(arg obstacle_nodelet_manager)" + output="$(arg output)" > + <remap from="~input" to="passthrough/output" /> + <rosparam> + mean_k: 20 + stddev: 2.0 + negative: False + </rosparam> + </node> + + <!-- Radius outlier removal --> + <node name="radius_outlier_removal" + pkg="nodelet" + type="nodelet" + args="load pcl/RadiusOutlierRemoval $(arg obstacle_nodelet_manager)" + output="$(arg output)" > + <remap from="~input" to="outlier_removal/output" /> + <rosparam> + radius_search: 0.1 + min_neighbors: 15 + </rosparam> + </node> + </group> + + <include file="$(find iri_nav_obstacle_detection_normals)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg normals_node_name)"/> + <arg name="camera_nodelet_manager" value="$(arg obstacle_nodelet_manager)"/> + <arg name="config_file" value="$(arg normals_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="radius_outlier_removal/output"/> + </include> + +<!-- **************************** HOLE DETECTION ******************************* --> + + <group ns="$(arg ns)"> + <node name="$(arg hole_nodelet_manager)" + pkg="nodelet" + type="nodelet" + args="manager" + output="$(arg output)"/> + </group> + + <include file="$(find iri_point_cloud_hole_detection)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg near_hole_detection_node_name)"/> + <arg name="camera_nodelet_manager" value="$(arg hole_nodelet_manager)"/> + <arg name="config_file" value="$(arg near_hole_detection_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/> + </include> + + <include file="$(find iri_point_cloud_hole_detection)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg far_hole_detection_node_name)"/> + <arg name="camera_nodelet_manager" value="$(arg hole_nodelet_manager)"/> + <arg name="config_file" value="$(arg far_hole_detection_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/> + </include> + +</launch> + diff --git a/launch/include/camera_nodes.launch b/launch/include/camera_nodes.launch new file mode 100644 index 0000000000000000000000000000000000000000..339f92fbf97b36036ccc249e30e5aca6b35b855c --- /dev/null +++ b/launch/include/camera_nodes.launch @@ -0,0 +1,146 @@ +<?xml version="1.0"?> + +<launch> + + <arg name="ns" default="ana"/> + + <arg name="obstacle_nodelet_manager" default="obstacle_nodelet_manager" /> + + <arg name="camera_cloud_in" default="sensors/nav_cam/depth_registered/points"/> + + <arg name="average_node_name" default="average_point_cloud"/> + <arg name="average_config_file" default="$(find iri_average_point_cloud)/config/default_config.yaml"/> + <arg name="average_cloud_in" default="sensors/nav_cam/depth_registered/points_throttle"/> + + <arg name="normals_node_name" default="obstacle_detection_normals"/> + <arg name="normals_config_file" default="$(find iri_nav_obstacle_detection_normals)/config/default_config.yaml"/> + <arg name="normals_cloud_in" default="radius_outlier_removal/output"/> + + <arg name="near_hole_detection_node_name" default="near_hole_detection"/> + <arg name="near_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/> + <arg name="hole_detection_cloud_in" default="radius_outlier_removal/output"/> + + <arg name="far_hole_detection_node_name" default="far_hole_detection"/> + <arg name="far_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/> + + <arg name="output" default="screen"/> + <arg name="launch_prefix" default=""/> + +<!-- ******************* OBSTACLE DETECTION ********************************** --> + + <group ns="$(arg ns)"> + <node name="pc_throttler" + type="throttle" + pkg="topic_tools" + args="messages $(arg camera_cloud_in) 15 $(arg camera_cloud_in)_throttle" /> + </group> + + <include file="$(find iri_average_point_cloud)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg average_node_name)"/> + <arg name="config_file" value="$(arg average_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg average_cloud_in)"/> + </include> + + <group ns="$(arg ns)"> + + <node name="$(arg obstacle_nodelet_manager)" + pkg="nodelet" + type="nodelet" + args="manager" + output="screen"/> + + <!-- Downsampling points --> + <node name="voxel_grid_obs" + pkg="nodelet" + type="nodelet" + args="load pcl/VoxelGrid $(arg obstacle_nodelet_manager)" + output="$(arg output)"> + <remap from="~input" to="average_point_cloud/output" /> + <rosparam> + input_frame: 'ana/base_footprint' + output_frame: 'ana/base_footprint' + leaf_size: 0.03 + filter_field_name: z + filter_limit_min: -0.5 + filter_limit_max: 5.0 + filter_limit_negative: False + </rosparam> + </node> + + <!-- Run a passthrough filter --> + <node name="passthrough" + pkg="nodelet" + type="nodelet" + args="load pcl/PassThrough $(arg obstacle_nodelet_manager)" + output="$(arg output)"> + <remap from="~input" to="voxel_grid_obs/output" /> + <rosparam> + filter_field_name: x + filter_limit_min: 0.01 + filter_limit_max: 1.5 + filter_limit_negative: False + </rosparam> + </node> + + <!-- Statistical outlier removal --> + <node name="outlier_removal" + pkg="nodelet" + type="nodelet" + args="load pcl/StatisticalOutlierRemoval $(arg obstacle_nodelet_manager)" + output="$(arg output)" > + <remap from="~input" to="passthrough/output" /> + <rosparam> + mean_k: 20 + stddev: 2.0 + negative: False + </rosparam> + </node> + + <!-- Radius outlier removal --> + <node name="radius_outlier_removal" + pkg="nodelet" + type="nodelet" + args="load pcl/RadiusOutlierRemoval $(arg obstacle_nodelet_manager)" + output="$(arg output)" > + <remap from="~input" to="outlier_removal/output" /> + <rosparam> + radius_search: 0.1 + min_neighbors: 15 + </rosparam> + </node> + </group> + + <include file="$(find iri_nav_obstacle_detection_normals)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg normals_node_name)"/> + <arg name="config_file" value="$(arg normals_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg normals_cloud_in)"/> + </include> + +<!-- **************************** HOLE DETECTION ******************************* --> + + <include file="$(find iri_point_cloud_hole_detection)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg near_hole_detection_node_name)"/> + <arg name="config_file" value="$(arg near_hole_detection_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/> + </include> + + <include file="$(find iri_point_cloud_hole_detection)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg far_hole_detection_node_name)"/> + <arg name="config_file" value="$(arg far_hole_detection_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" default="$(arg launch_prefix)"/> + <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/> + </include> + +</launch> + diff --git a/launch/include/lidar_nodelets.launch b/launch/include/lidar_nodelets.launch new file mode 100644 index 0000000000000000000000000000000000000000..49fa71a59f4ebd8264a38d0030241d1b0e06d87c --- /dev/null +++ b/launch/include/lidar_nodelets.launch @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<!-- --> +<launch> + + <arg name="ns" default="ana" /> + <arg name="output" default="log"/> + <arg name="launch_prefix" default=""/> + + <arg name="lidar_nodelet_manager" default="lidar_nodelet_manager"/> + + <arg name="lidar_filter_node_name" default="lidar_filter"/> + <arg name="lidar_filter_config_file" default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/> + <arg name="lidar_filter_cloud_in" default="/pointcloud_in" /> + + <arg name="lidar_detector_node_name" default="lidar_detector"/> + <arg name="lidar_detector_config_file" default="$(find iri_lidar_obstacle_detector)/config/default_config.yaml"/> + + <!-- Obstacle nodelets manager --> + <group ns="$(arg ns)"> + <node name="$(arg lidar_nodelet_manager)" + pkg="nodelet" + type="nodelet" + args="manager" + output="screen"/> + </group> + + <include file="$(find iri_point_cloud_angle_filter)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg lidar_filter_node_name)"/> + <arg name="lidar_nodelet_manager" value="$(arg lidar_nodelet_manager)"/> + <arg name="config_file" value="$(arg lidar_filter_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="$(arg lidar_filter_cloud_in)" /> + </include> + + <include file="$(find iri_lidar_obstacle_detector)/launch/nodelet.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg lidar_detector_node_name)"/> + <arg name="lidar_nodelet_manager" value="$(arg lidar_nodelet_manager)"/> + <arg name="config_file" value="$(arg lidar_detector_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="/$(arg ns)/$(arg lidar_filter_node_name)/cloud_out"/> + </include> + +</launch> + diff --git a/launch/include/lidar_nodes.launch b/launch/include/lidar_nodes.launch new file mode 100644 index 0000000000000000000000000000000000000000..f1673f4648d53e4a95c097fd54698c921ac1e8b1 --- /dev/null +++ b/launch/include/lidar_nodes.launch @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<!-- --> +<launch> + + <arg name="ns" default="ana" /> + <arg name="output" default="log"/> + <arg name="launch_prefix" default=""/> + + <arg name="lidar_filter_node_name" default="lidar_filter"/> + <arg name="lidar_filter_config_file" default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/> + <arg name="lidar_filter_cloud_in" default="/pointcloud_in" /> + + <arg name="lidar_detector_node_name" default="lidar_detector"/> + <arg name="lidar_detector_config_file" default="$(find iri_lidar_obstacle_detector)/config/default_config.yaml"/> + + <include file="$(find iri_point_cloud_angle_filter)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg lidar_filter_node_name)"/> + <arg name="config_file" value="$(arg lidar_filter_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="$(arg lidar_filter_cloud_in)" /> + </include> + + <include file="$(find iri_lidar_obstacle_detector)/launch/node.launch"> + <arg name="ns" value="$(arg ns)"/> + <arg name="node_name" value="$(arg lidar_detector_node_name)"/> + <arg name="config_file" value="$(arg lidar_detector_config_file)"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + <arg name="cloud_in" value="/$(arg ns)/$(arg lidar_filter_node_name)/cloud_out"/> + </include> + +</launch> +