个人实验记录
/mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch
<launch><!-- Input arguments --><arg name="device" value="1443" doc="TI mmWave sensor device type [1443, 1642]"/><arg name="config" value="3d" doc="TI mmWave sensor device configuration [3d_best_range_res (not supported by 1642 EVM), 2d_best_range_res]"/><arg name="max_allowed_elevation_angle_deg" default="90" doc="Maximum allowed elevation angle in degrees for detected object data [0 > value >= 90]}"/><arg name="max_allowed_azimuth_angle_deg" default="90" doc="Maximum allowed azimuth angle in degrees for detected object data [0 > value >= 90]}"/><!-- mmWave_Manager node --><node pkg="ti_mmwave_rospkg" type="ti_mmwave_rospkg" name="ti_mmwave" ns="radar_0" output="screen"><param name="command_port" value="/dev/ttyACM0" /><param name="command_rate" value="115200" /><param name="data_port" value="/dev/ttyACM1" /><param name="data_rate" value="921600" /><param name="max_allowed_elevation_angle_deg" value="$(arg max_allowed_elevation_angle_deg)" /><param name="max_allowed_azimuth_angle_deg" value="$(arg max_allowed_azimuth_angle_deg)" /><param name="frame_id" value="/ti_mmwave_0"/><param name="mmWaveCLI_name" value="/mmWaveCLI" /><remap from="/ti_mmwave/radar_scan_pcl" to="/ti_mmwave/radar_scan_pcl_0"/></node><!-- mmWaveQuickConfig node (terminates after configuring mmWave sensor) --><node pkg="ti_mmwave_rospkg" type="mmWaveQuickConfig" name="ti_mmwave_config" ns="radar_0" args="$(find ti_mmwave_rospkg)/cfg/1443_3d.cfg" output="screen" ><param name="mmWaveCLI_name" value="/mmWaveCLI" /></node><node pkg="tf" type="static_transform_publisher" name="base_to_radar" args="0 0 0 0 0 0 base_footprint ti_mmwave_0 100"/><!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find ti_mmwave_rospkg)/launch/rviz/ti_mmwave_multi.rviz"/> -->
</launch>
点云输出话题:/ti_mmwave/radar_scan_pcl_0
/mmwave_ti_ros/robotics_ros/src/turtlebot_mmwave_launchers/launch/single_sensor/radar_limit_filters.launch
<!--Filters for the data from the radar-->
<launch><node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen"/><!-- x_filt 节点:这是一个名为 x_filt 的节点,用于加载一个点云滤波器,具体是 pcl/PassThrough。这个滤波器将用于过滤雷达数据中的 x 坐标。通过 <remap> 标签,将输入和输出话题进行重映射,以将数据传递给下一个滤波器。通过 <rosparam> 标签,设置了滤波器的参数,包括 filter_field_name(要过滤的字段名)、filter_limit_min(最小允许值)、filter_limit_max(最大允许值)、filter_limit_negative(是否允许负值)--><node pkg="nodelet" type="nodelet" name="x_filt" args="load pcl/PassThrough pcl_manager" output="screen"><!-- 将毫米波点云输入过滤器 --><remap from="~input" to="ti_mmwave/radar_scan_pcl_0" /><remap from="~output" to="x_filt_out" /><rosparam>filter_field_name: xfilter_limit_min: 0.1filter_limit_max: 4filter_limit_negative: False</rosparam></node><node pkg="nodelet" type="nodelet" name="y_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="x_filt_out" /><remap from="~output" to="xy_filt_out" /><rosparam>filter_field_name: yfilter_limit_min: -3filter_limit_max: 3filter_limit_negative: False</rosparam></node><node pkg="nodelet" type="nodelet" name="z_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="xy_filt_out" /><remap from="~output" to="xyz_filt_out" /><rosparam>filter_field_name: zfilter_limit_min: -0.4filter_limit_max: 0.10filter_limit_negative: False</rosparam></node><!-- 过滤强度 --><node pkg="nodelet" type="nodelet" name="i_filt" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="xyz_filt_out" /><remap from="~output" to="xyzi_filt_out" /><rosparam>filter_field_name: intensityfilter_limit_min: 8filter_limit_max: 100filter_limit_negative: False</rosparam></node></launch>
点云输出话题:/xyzi_filt_out、/xyz_filt_out、/xy_filt_out、/x_filt_out
/mmwave_ti_ros/robotics_ros/src/turtlebot_mmwave_launchers/launch/single_sensor/radar_mapping.launch
<!--Launch file to perform mapping using octomap with the radar--><!--
运行 ROS 中的 octomap_server 软件包。
其中有几个过滤器可供使用: 用于所有点云字段的通过过滤器,以及用于过滤原始地图的统计离群点去除过滤器。
通过式过滤器:去除特定字段(X、Y、Z、强度)中超出一定范围的值
统计离群点去除:根据与其近邻的距离去除数值
这些过滤器的参数/限制可在 turtlebot_mmwave_launchers/launch/radar_limit_filters.launch 文件中找到并修改。
更改 radar_limit_filters.launch 文件后,必须重新启动 radar_mapping.launch 文件,以使新参数生效。
--><launch><!-- Publish static transform from map to odom for mapping using only odometry info --><node pkg="tf" type="static_transform_publisher" name="static_tf_map_to_odom" args="0 0 0 0 0 0 map odom 100"/><!-- Add nodes to filter/limit Radar data before using it for mapping --><!-- nodelet --><include file="$(find turtlebot_mmwave_launchers)/launch/single_sensor/radar_limit_filters.launch"></include><!-- Create "raw" 3D map using first octomap node --><node pkg="octomap_server" type="octomap_server_node" name="octomap_raw" output="screen" ><remap from="octomap_point_cloud_centers" to="raw_point_cloud_centers" /><remap from="projected_map" to="raw_map" /><param name="frame_id" type="string" value="/ti_mmwave_0" /><remap from="cloud_in" to="xyzi_filt_out" /></node><!-- Perform SOR filtering on output from "raw" octomap node --><node pkg="nodelet" type="nodelet" name="mapping_SOR_filt_mapping" args="standalone pcl/StatisticalOutlierRemoval" output="screen" ><remap from="~input" to="raw_point_cloud_centers" /><remap from="~output" to="mapping_SOR_filter_out" /><param name="mean_k" value="20" /><param name="stddev" value="0.04" /></node><!-- Create "filtered" 3D map using second octomap node --><node pkg="octomap_server" type="octomap_server_node" name="octomap_filtered" output="screen" ><remap from="octomap_point_cloud_centers" to="filtered_point_cloud_centers" /><remap from="projected_map" to="filtered_map" /><remap from="cloud_in" to="mapping_SOR_filter_out" /></node></launch>
建图:
roslaunch ti_mmwave_rospkg 1443_multi_3d_0.launch
roslaunch turtelbot_mmwave_launchers radar_mapping.launch
rostopic list
rqt_graph
rosrun rqt_tf_tree rqt_tf_tree