From 5d88c394c97da97a89b1657cfcfb3f7c850f10df Mon Sep 17 00:00:00 2001 From: fl <3098731433@qq.com> Date: Tue, 11 Mar 2025 10:08:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=B7=E8=BE=BE=E7=82=B9=E8=BD=AC=E7=BB=8F?= =?UTF-8?q?=E7=BA=AC=E5=BA=A6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bonus/wrjtest/MainActivity.kt | 4 +- .../wrjtest/utils/MultipointSagMeasure.java | 2 +- .../bonus/wrjtest/utils/RadarMathUtil.java | 37 +++++++------------ 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt index f1cf450..ff09618 100644 --- a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt +++ b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt @@ -217,7 +217,6 @@ class MainActivity : AppCompatActivity() { Toast.LENGTH_SHORT ).show() } - "F0000001" -> { resultDataSb.clear() Toast.makeText( @@ -226,7 +225,6 @@ class MainActivity : AppCompatActivity() { Toast.LENGTH_SHORT ).show() } - "F0000002" -> { resultDataSb.clear() returnData.setText("激光雷达解析数据与分裂类型不匹配") @@ -1042,6 +1040,8 @@ class MainActivity : AppCompatActivity() { sb.append("01") sb.append("02") sb.append("01") + + val sum16 = ByteUtil.getSum16(sb.toString()) sb.append(sum16) //保存基础数据 diff --git a/app/src/main/java/com/bonus/wrjtest/utils/MultipointSagMeasure.java b/app/src/main/java/com/bonus/wrjtest/utils/MultipointSagMeasure.java index 9c709a6..f079949 100644 --- a/app/src/main/java/com/bonus/wrjtest/utils/MultipointSagMeasure.java +++ b/app/src/main/java/com/bonus/wrjtest/utils/MultipointSagMeasure.java @@ -14,7 +14,7 @@ public class MultipointSagMeasure { /** * 计算测点弧垂 - * + * @param span 档距 * @param list 坐标角度等 * @param pointNumber 运用几点测量公式 * @return diff --git a/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java b/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java index caeb179..d1e7033 100644 --- a/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java +++ b/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java @@ -93,37 +93,28 @@ public class RadarMathUtil { double lonGps = sensorDataBean.getLon(); double latGps = sensorDataBean.getLat(); double hGps = sensorDataBean.getH(); - double azimuthAngle = sensorDataBean.getAzimuthAngle(); - //2025-01-16,激光雷达角度偏差90度,修改角度 - if(radarAngle>90){ - radarAngle = radarAngle - 90; - }if(radarAngle<90){ - radarAngle = 90 - radarAngle; - } + double azimuthAngle = sensorDataBean.getAzimuthAngle() - 15.0; //1.RTK天线到激光雷达点转换 - double disLonPoint = RTKDistance * MathUtils.cos(azimuthAngle + RTKAngle); //激光雷达经度 - double lonRadar = lonGps + disLonPoint/Rq; - //距离 - double disLatPoint = RTKDistance * MathUtils.sin(azimuthAngle + RTKAngle); + double lonRadar = lonGps + RTKDistance * Math.sin((azimuthAngle+RTKAngle)/180*Math.PI)/Rq/Math.cos(latGps/180*Math.PI)*180/Math.PI; //激光雷达纬度 - double latRadar = latGps + disLatPoint/(Rq * MathUtils.cos(Math.toRadians(lonGps))); + double latRadar = latGps + (RTKDistance * Math.cos((azimuthAngle+RTKAngle)/180*Math.PI)/Rq)*180/Math.PI; //激光雷达高程 double hRadar = hGps; - - - //经纬度属于弧度值,使用util需要将弧度转成角度 - //距离 - double disLonPoint2 = dis * MathUtils.cos(radarAngle) * MathUtils.cos(azimuthAngle + radarAngle1); + System.out.printf("雷达点:lat:%.8f; lon:%.8f; 高度:%.2f; 方位角:%.2f\n", latRadar, lonRadar, hRadar,azimuthAngle); + //1.激光雷达点到扫描点转换 //测点经度 - double lon2 = lonRadar + disLonPoint2/Rq; - //距离 - double disLatPoint2 = dis * MathUtils.cos(radarAngle) * MathUtils.sin(azimuthAngle + radarAngle1); + double lon2 = lonRadar + dis * Math.sin((azimuthAngle+radarAngle1)/180*Math.PI)/Rq/Math.cos(latRadar/180*Math.PI)*180/Math.PI; //测点纬度 - double lat2 = latRadar + disLatPoint2/(Rq * MathUtils.cos(Math.toRadians(lonRadar))); - + double lat2 = latRadar + (dis*Math.cos((azimuthAngle+radarAngle1)/180*Math.PI)/Rq)*180/Math.PI; //测点高程 可能为减 - double h2 = hRadar + dis * MathUtils.sin(radarAngle); + //2025-01-16,激光雷达扫描角度偏差90度,修改角度 + if(radarAngle>90){ + radarAngle = radarAngle - 90; + }else if(radarAngle<90){ + radarAngle = 90 - radarAngle; + } + double h2 = hRadar + dis * MathUtils.sin(radarAngle - sensorDataBean.getRollAngle()); return new Coordinate(lon2,lat2,h2); }