Update Lidar_CN.MD

This commit is contained in:
jj
2025-07-10 14:03:16 +08:00
parent e03d1b3083
commit 9e2c5f1f43
2 changed files with 8 additions and 3 deletions
+1
View File
@@ -115,6 +115,7 @@ ros2 run orbbec_camera list_camera_profile_mode_node
- **tf_publish_rate**:TF 发布频率。 - **tf_publish_rate**:TF 发布频率。
- **lidar_format**:雷达的数据格式。可选值:`LIDAR_POINT`、`LIDAR_SPHERE_POINT` 、`LIDAR_SCAN` - **lidar_format**:雷达的数据格式。可选值:`LIDAR_POINT`、`LIDAR_SPHERE_POINT` 、`LIDAR_SCAN`
- **lidar_rate**:雷达的扫描速率。 - **lidar_rate**:雷达的扫描速率。
- **enable_scan_to_point**:启动scan数据转pointcloud数据,发布pointcloud2数据类型的话题。
- **repetitive_scan_mode**:重复扫描模式参数。 - **repetitive_scan_mode**:重复扫描模式参数。
- **filter_level**:添加过滤等级参数。 - **filter_level**:添加过滤等级参数。
- **vertical_fov**:垂直角度参数。 - **vertical_fov**:垂直角度参数。
+7 -3
View File
@@ -53,9 +53,10 @@ OBLidarNode::OBLidarNode(rclcpp::Node *node, std::shared_ptr<ob::Device> device,
jpeg_decoder_ = std::make_unique<JetsonNvJPEGDecoder>(width_[COLOR], height_[COLOR]); jpeg_decoder_ = std::make_unique<JetsonNvJPEGDecoder>(width_[COLOR], height_[COLOR]);
#endif #endif
is_camera_node_initialized_ = true; is_camera_node_initialized_ = true;
if (enable_cloud_accumulated_&&cloud_accumulation_count_>=1) { if (enable_cloud_accumulated_ && cloud_accumulation_count_ >= 1) {
auto point_cloud_qos_profile = getRMWQosProfileFromString(point_cloud_qos_); auto point_cloud_qos_profile = getRMWQosProfileFromString(point_cloud_qos_);
cloud_accumulated_=std::make_unique<CloudAccumulated>(node_, point_cloud_qos_profile, cloud_accumulation_count_); cloud_accumulated_ = std::make_unique<CloudAccumulated>(node_, point_cloud_qos_profile,
cloud_accumulation_count_);
} }
} }
@@ -486,6 +487,9 @@ void OBLidarNode::publishScanToPoint(std::shared_ptr<ob::FrameSet> frame_set) {
if (frame_set == nullptr) { if (frame_set == nullptr) {
return; return;
} }
if (angle_increment_ == 0.0) {
angle_increment_ = getScanAngleIncrement(rate_[LIDAR]);
}
auto lidar_frame = frame_set->getFrame(OB_FRAME_LIDAR_POINTS); auto lidar_frame = frame_set->getFrame(OB_FRAME_LIDAR_POINTS);
auto *scans_data = reinterpret_cast<OBLiDARScanPoint *>(lidar_frame->getData()); auto *scans_data = reinterpret_cast<OBLiDARScanPoint *>(lidar_frame->getData());
auto scan_count = lidar_frame->getDataSize() / sizeof(OBLiDARScanPoint); auto scan_count = lidar_frame->getDataSize() / sizeof(OBLiDARScanPoint);
@@ -511,7 +515,7 @@ void OBLidarNode::publishScanToPoint(std::shared_ptr<ob::FrameSet> frame_set) {
sensor_msgs::PointCloud2Iterator<float> iter_z(*point_cloud_msg, "z"); sensor_msgs::PointCloud2Iterator<float> iter_z(*point_cloud_msg, "z");
sensor_msgs::PointCloud2Iterator<uint8_t> iter_reflectivity(*point_cloud_msg, "reflectivity"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_reflectivity(*point_cloud_msg, "reflectivity");
for (size_t i = 0; i < scan_count; ++i, ++iter_x, ++iter_y, ++iter_z, ++iter_reflectivity) { for (size_t i = 0; i < scan_count; ++i, ++iter_x, ++iter_y, ++iter_z, ++iter_reflectivity) {
double rad = 0.7853981852531433 + 0.0026179938577115536 * i; double rad = 0.7853981852531433 + angle_increment_ * i;
*iter_x = static_cast<float>(scans_data[i].distance * cos(rad) / 1000.0); *iter_x = static_cast<float>(scans_data[i].distance * cos(rad) / 1000.0);
*iter_y = static_cast<float>(scans_data[i].distance * sin(rad) / 1000.0); *iter_y = static_cast<float>(scans_data[i].distance * sin(rad) / 1000.0);
*iter_z = static_cast<float>(0.0); *iter_z = static_cast<float>(0.0);