# 4 配置参数介绍 ## 4.1 概述 文件 `ag_sdk/src/ag_driver/driver/driver_param.h` 中, 定义了 `ag_driver` 的配置选项。 这些配置选项定义在如下结构中。 + AGDriverParam + AGDecoderParam + AGInputParam ## 4.2 AGDriverParam AGDriverParam 包括 AGDecoderParam、AGInputParam 和其他选项。 ```cpp typedef struct AGDriverParam { LidarType lidar_type = LidarType::A0; ///< Lidar type InputType input_type = InputType::ONLINE_LIDAR; ///< Input type AGInputParam input_param; AGDecoderParam decoder_param; } AGDriverParam; ``` 成员 `lidar_type` - 指定雷达的类型。 ```cpp enum LidarType { A0 = 1, }; ``` 成员 `input_type` - 指定雷达的数据源类型。 + `ONLINE_LIDAR` 是在线雷达; + `PCAP_FILE` 是包含 MSOP/DIFOP Packet 的 PCAP 文件; + `RAW_PACKET` 是使用者调用 `ag_driver` 的函数接口获得 MSOP/DIFOP Packet,自己保存的数据。 ```cpp enum InputType { ONLINE_LIDAR = 1, PCAP_FILE, RAW_PACKET }; ``` ## 4.3 AGInputParam AGInputParam 指定 `ag_driver` 的网络配置选项。 如下参数针对 `ONLINE_LIDAR` 和 `PCAP_FILE`。 + msop_port - 指定主机的本地端口,接收 MSOP Packet。 + difop_port - 指定主机的本地端口,接收 DIFOP Packet。 如下参数仅针对 `ONLINE_LIDAR`。 + host_address - 指定主机网卡的 IP 地址,接收 MSOP/DIFOP Packet。 + group_address - 指定一个组播组的 IP 地址。`ag_driver` 将 `host_address` 指定的网卡加入这个组播组,以便接收 MSOP/DIFOP Packet。 如下参数仅针对 `PCAP_FILE`。 + pcap_path - PCAP 文件的全路径。 + pcap_repeat - 指定是否重复播放 PCAP 文件。 + pcap_rate - `ag_driver` 按理论上的 MSOP Packet 时间间隔,模拟播放 PCAP 文件。`pcap_rate` 可以在这个速度上指定一个比例值,加快或放慢播放速度。 + use_vlan - 如果 PCAP 文件中的 MSOP/DIFOP Packet 包含 VLAN 层,可以指定`use_vlan = true`,跳过这一层。 ```cpp typedef struct AGInputParam { uint16_t msop_port = 6699; uint16_t difop_port = 7788; std::string host_address = "0.0.0.0"; std::string group_address = "0.0.0.0"; // The following parameters are only for PCAP_FILE std::string pcap_path = ""; bool pcap_repeat = true; float pcap_rate = 1.0; bool use_vlan = false; } AGInputParam; ``` ## 4.4 AGDecoderParam AGDecoderParam 指定雷达解码器的配置选项。 ```cpp typedef struct AGDecoderParam { bool use_lidar_clock = false; bool write_pkt_ts = false; bool dense_points = false; bool ts_first_point = false; bool wait_for_difop = true; AGTransformParam transform_param; bool config_from_file = false; std::string angle_path = ""; float min_distance = 0.2f; float max_distance = 200.0f; } AGDecoderParam; ``` 如下参数针对所有雷达。 + use_lidar_clock - 指定点云的时间采用 MSOP Packet 中的时间(雷达根据自身时间设置),还是主机的系统时间。 + 如果 `use_lidar_clock = true`,则采用 MSOP Packet 的,否则采用主机的。 + write_pkt_ts - 是否用主机侧新产生的时间去覆写 pakcets 中的时间戳。 + dense_points - 指定点云是否是 dense 的。 + 如果`dense_points = false`, 则点云中包含 NAN 点,否则去除点云中的 NAN 点。 + ts_first_point - 指定点云的时间戳来自它的第一个点,还是最后第一个点。 + 如果 `ts_first_point = true`, 则第一个点的时间作为点云的时间戳,否则最后一个点的时间作为点云的时间戳。 + wait_for_difop - 解析 MSOP Packet 之前,是否等待 DIFOP Packet。 + DIFOP Packet 中包含垂直角等标定参数。如果没有这些参数,`ag_driver` 输出的点云将是扁平的。 + 在 `ag_driver` 不输出点云时,设置 `wait_for_difop=false`,可以帮助定位问题。 + transform_param - 指定点的坐标转换参数。这个选项只有在 CMake 编译宏 `ENABLE_TRANSFORM=ON` 时才有效。 ```cpp typedef struct AGTransformParam { float x = 0.0f; ///< unit, m float y = 0.0f; ///< unit, m float z = 0.0f; ///< unit, m float roll = 0.0f; ///< unit, radian float elevation = 0.0f; ///< unit, radian float azimuth = 0.0f; ///< unit, radian } AGTransformParam; ``` + config_from_file - 指定雷达本身的配置参数是从文件中读入,还是从 DIFOP Packet 中得到。这个选项仅内部调试使用。 + angle_path - 雷达的角度标定参数文件。仅内部调试使用。 + min_distance、max_distance - 重置测距的最大、最小值。仅内部调试使用。