# 2 参数介绍 aglidar_sdk 读取配置文件 `config.yaml`,得到所有的参数。`config.yaml` 在 `aglidar_sdk/config` 文件夹中。 **config.yaml 遵循 YAML 格式。该格式对缩进有严格要求。修改 config.yaml 之后,请确保每行开头的缩进仍保持一致!** config.yaml 包括两部分:common 部分和 lidar 部分。 aglidar_sdk 支持多个雷达。common 部分为所有雷达共享。lidar 部分,每一个子节点对应一个雷达,针对这个雷达的实际情况分别设置。 ## 2.1 common 部分 common 部分设置雷达消息的源(Packet 或点云从哪来)和目标(Packet 或点云发布到哪去)。 ```yaml common: msg_source: 1 send_packet_ros: false send_point_cloud_ros: false ``` - msg_source - 1 -- 连接在线雷达。更多使用细节,请参考《[连接在线雷达并发送点云到ROS](../howto/06_how_to_decode_online_lidar_CN.md)》。 - 2 -- 离线解析 ROS/ROS2 的 Packet 包。更多使用细节,请参考《[录制ROS数据包然后播放它](../howto/11_how_to_record_replay_packet_rosbag_CN.md)。 - 3 -- 离线解析 PCAP 包。更多使用细节,请参考《[离线解析PCAP包并发送点云到ROS](../howto/08_how_to_decode_pcap_file_CN.md)》。 - send_packet_ros - true -- 雷达 Packet 消息将通过 ROS/ROS2 发出 *雷达 ROS packet 消息为自定义 ROS 消息,用户使用 ROS/ROS2 echo 命令不能查看消息的具体内容。这个功能用于录制 ROS/ROS2 的 Packet 包,更多使用细节,请参考 msg_source=2 的情况。* - send_point_cloud_ros - true -- 雷达点云消息将通过 ROS/ROS2 发出 *点云消息的类型为 ROS 官方定义的点云类型 sensor_msgs/PointCloud2, 用户可以使用 Rviz 直接查看点云。用户可以录制 ROS/ROS2 的点云包,但点云包的体积非常大,所以不建议这么做。更好的方式是录制 Packet 包,请参考 send_packet_ros=true 的情况。* ## 2.2 lidar 部分 lidar 部分根据每个雷达的实际情况进行设置。 ```yaml lidar: - driver: lidar_type: A0 msop_port: 51180 difop_port: 7788 min_distance: 0.2 max_distance: 200 use_lidar_clock: false write_pkt_ts: false dense_points: false pcap_path: /home/asensing/lidar.pcap ros: ros_send_by_rows: false ros_frame_id: aglidar ros_recv_packet_topic: /aglidar_packets ros_send_packet_topic: /aglidar_packets ros_send_point_cloud_topic: /aglidar_points ``` - **lidar_type** 支持的雷达型号在 aglidar_sdk 的 README 文件中列出。 - **msop_port**, **difop_port** 接收 MSOP/DIFOP Packet 的 msop 端口号和 difop 端口号。*若收不到消息,请优先确认这两个参数是否配置正确。* - **min_distance**, **max_distance** 点云的最小距离和最大距离。这个设置是软件屏蔽,会将区域外的点设置为 NAN 点,不会减小每帧点云的体积。 - **use_lidar_clock** - true -- 使用雷达时间作为消息时间戳。 - false -- 使用电脑主机时间作为消息时间戳。 - **write_pkt_ts** - true -- 将电脑主机时间写入 pakcets(前提:use_lidar_clock 为 false)。 - false -- 不将电脑主机时间写入 pakcets。 - **dense_points** 输出的点云中是否剔除 NAN points。默认值为 false。 - true 为剔除, - false 为不剔除。 - **pcap_path** pcap 包的路径。当 msg_source=3 时有效。 - **ros_send_by_rows** 只有当 dense_points = false 时才有效。 - true -- 发送点云时,按照一行一行的顺序排列点。 - false -- 发送点云时,按照一列一列的顺序排列点。 ## 2.3 示例 ### 2.3.1 单台雷达 在线连接 1 台 A0 雷达,并发送点云到 ROS。 ```yaml common: msg_source: 1 send_packet_ros: false send_point_cloud_ros: true lidar: - driver: lidar_type: A0 msop_port: 51180 difop_port: 7788 min_distance: 0.2 max_distance: 200 use_lidar_clock: false write_pkt_ts: false ros: ros_frame_id: aglidar ros_recv_packet_topic: /aglidar_packets ros_send_packet_topic: /aglidar_packets ros_send_point_cloud_topic: /aglidar_points ``` ### 2.3.2 多台雷达 在线连接 1 台 A0 雷达和 2 台 A1 雷达,发送点云到 ROS。 *注意 lidar 部分参数的缩进* ```yaml common: msg_source: 1 send_packet_ros: false send_point_cloud_ros: true lidar: - driver: lidar_type: A0 msop_port: 51180 difop_port: 7788 min_distance: 0.2 max_distance: 200 use_lidar_clock: false write_pkt_ts: false ros: ros_frame_id: aglidar ros_recv_packet_topic: /middle/aglidar_packets ros_send_packet_topic: /middle/aglidar_packets ros_send_point_cloud_topic: /middle/aglidar_points - driver: lidar_type: A1 msop_port: 1990 difop_port: 1991 min_distance: 0.2 max_distance: 200 use_lidar_clock: false write_pkt_ts: false ros: ros_frame_id: aglidar ros_recv_packet_topic: /left/aglidar_packets ros_send_packet_topic: /left/aglidar_packets ros_send_point_cloud_topic: /left/aglidar_points - driver: lidar_type: A1 msop_port: 2010 difop_port: 2011 min_distance: 0.2 max_distance: 200 use_lidar_clock: false write_pkt_ts: false ros: ros_frame_id: aglidar ros_recv_packet_topic: /right/aglidar_packets ros_send_packet_topic: /right/aglidar_packets ros_send_point_cloud_topic: /right/aglidar_points ```