1赞

2回答

0收藏

《2024 DigiKey 汽车应用创意挑战赛》基于ADI器件高精度卫惯...

ADI ADI 1247 人阅读 | 2 人回复 | 2025-03-02

本帖最后由 tianwanglaozi 于 2025-3-5 17:00 编辑

基于ADI器件高精度卫惯组合导航系统(RTK+INS组合导航系统


1.项目开发背景
欧盟空间计划局在2024年1月发布了最新版的《EO and GNSS Market Report 2024/Issue2》,其中EO 代表地球观测。该报告是来自各个领域的 15 位EUSPA 专家与支持 EUSPA 的市场研究公司合作的成果,洞见卫星定位市场发展。2023年的卫星定位市场收入录得2,620亿欧元,保持着约15%的复合年增长率,预计未来十年复合年增长率8.4%。2033年可达5,800亿欧元。GNSS(全球卫星导航系统 Global NavigaTIon Satellite System )接收器出货量将在未来十年持续增长,从 2021 年的 18 亿台增加到2031 年的 25 亿台。主要用于车载系统。



2.系统原理
  实时动态定位(Real-Time Kinematic,简称RTK)是一种用于提高全球导航卫星系统(如GPS、GLONASS、Galileo、北斗等)定位精度的技术。RTK系统通常由两部分组成:一个基准站(Base Station)和一个或多个流动站(Rover)。基准站位于已知精确坐标的位置上,它收集卫星数据并通过无线数据链路发送到流动站。流动站使用这些数据来纠正其自己的卫星测量值,从而达到厘米级的定位精度。
GNSS RTK技术系统用户主要包括三个部分:基准站、流动站和数据链。其作业原理是基准站接收机架设在已知或未知坐标的参考点上,连续接受所有可视GNSS卫星信号;基准站将测站点坐标、伪距观测值载波相位观测值、卫星跟踪状态和接收机工作状态等通过无线数据链发送给流动站;流动站先进行初始化,完成整周未知数的搜索求解后,进入动态作业。流动站在接收来自基准站的数据时,同步观测采集GNSS卫星载波相位数据,通过系统内差分处理求解载波相位整周模糊度,根据流动站和基准站的相关性得出流动站的平面坐标x、y和高程h。
RTK模块:首先需要一个支持RTK技术的GPS接收模块。这个模块能够接收来自多个GPS北斗等卫星的信号,并通过载波相位差分技术实现高精度定位。全系统全频高精度定位定向模块和芯星通科技UM982或者司南K823。,这些模块通常具有串口(如UART、SPI等)或其他通信接口,以便与TI MSPM0微控制器进行通信。
RTK技术能够提供厘米级甚至毫米级的定位精度,确保导航的准确性。
  陀螺仪能够测量物体的角速度,结合加速度计等数据,可以计算出载体的姿态和位置变化,进一步提高导航精度RTK技术通过实时差分处理,消除了大部分公共误差,提高了定位的可靠性。陀螺仪具有自主性和隐蔽性好的特点,不依赖外部导航信息,可以在复杂环境中稳定工作。
RTK接收机通过CAN输出的内容通常包括:

定位数据:如经度、纬度、高度等,这些数据是RTK接收机通过接收卫星信号并解算得到的。
状态信息:如卫星数量、信号强度、解算状态(如浮点解、固定解等)等,这些信息有助于了解RTK接收机的工作状态和性能。
其他数据:如速度、航向、姿态角(如俯仰角、横滚角、航向角)。

3.系统总体架以及详细设计

ADI是一家知名的半导体公司,专门从事模拟、混合信号和数字信号处理技术的设计与制造。ADI的电源管理芯片性能非常出色。低压电源为嵌入式系统供电。ADI LTC3892是一款通用控制器,广泛应用于汽车和工业应用领域。该控制器的主要优点是能够通过调节开关 MOSFET的栅极电压降低功耗,并且在关断时具有极低的静态电流,仅为 3.6 μA。这是一款具有 4.5 V 至 60 V 输入/输出电压范围的高电压系列控制器。它对工业客户非常有吸引力,因其能在 48V 输入电源轨应用中采用成本更低的紧凑降压型转换器替代昂贵、笨重的变压器。高电压控制器通过免除外部瞬态和过压保护电路简化了整体设计,从而显著降低了 12 V 和 24 V 输入轨应用中汽车电子设备的成本。



实物1  

实物2


树莓派(Raspberry Pi)作为一个小巧而强大的开源硬件平台,在智能车项目中有着广泛的应用潜力。而RTK(Real Time Kinematic,实时动态差分定位技术)与INS(Inertial Navigation System,惯性导航系统)的结合,可以为智能车提供高精度、高可靠性的定位与导航信息。
树莓派凭借其低能耗、便携性、强大的计算能力以及丰富的GPIO(General Purpose Input/Output,通用输入输出)接口,成为智能车控制系统的理想选择。开发者可以利用树莓派来处理传感器数据、执行控制算法、与云端进行通信等,从而实现智能车的自主导航、避障、路径规划等功能。RTK+INS在智能车中的应用

1. 高精度定位:

  RTK技术通过接收地面基站发送的差分信号,可以实时修正智能车的GPS定位误差,实现厘米级甚至毫米级的定位精度。这对于智能车在复杂环境中的精确定位和导航至关重要。
INS则通过加速度计、陀螺仪等传感器测量智能车的加速度和角速度,进而推算出智能车的位置、速度和姿态。虽然INS在长期运行后会积累误差,但短期内可以提供高精度的导航信息。

2. 数据融合与滤波:

  将RTK和INS的数据进行融合,可以利用各自的优势,提高智能车定位的准确性和稳定性。常用的数据融合方法包括卡尔曼滤波、扩展卡尔曼滤波等。通过数据融合,智能车可以在GPS信号受遮挡或干扰时,仍然保持高精度的定位能力。

3. 智能车控制:
  高精度的定位信息为智能车的控制提供了坚实的基础。开发者可以利用这些信息来实现智能车的自主导航、路径规划、避障等功能。结合其他传感器(如雷达、摄像头等)的数据,智能车可以更加智能地感知周围环境,做出更加准确的决策。
  树莓派RTK+INS的组合为智能车提供了高精度、高可靠性的定位与导航解决方案。
使用ROS(Robot Operating System)的主控与RTK单片机系统进行数据的交互,主要可以通过串口通信(如UART)来实现。具体步骤配置如下:

一、硬件连接
连接USB转串口模块:
ROS主控(如Jetson系列、树莓派等)通过USB接口连接到一个USB转串口模块(如CP2102、CH340等)。
USB转串口模块的另一端通过TTL电平信号连接到STM32的UART接口。
注意:由于ROS主控和STM32的通信电平可能不同(如5V与3.3V),可能需要使用电平转换芯片来保证信号的稳定传输。
配置单片机的UART接口:
单片机中配置UART接口的波特率、数据位、停止位和校验位等参数,确保与ROS主控端的设置一致。
单片机的UART接口应配置为支持中断或DMA传输,以提高数据传输效率和减轻CPU负担。
二、软件设置
  安装ROS及串口通信包:
  在ROS主控上安装ROS系统及其串口通信包(如ros-<distro>-serial),<distro>为ROS的发行版名称。
配置ROS环境变量,确保ROS能够正确识别和使用串口通信包。
  编写ROS节点:
在ROS环境中编写一个或多个节点,用于处理与单片机的通信。
这些节点需要订阅或发布ROS话题,以接收或发送数据。
  配置单片机固件:
固件中包含rosserial库(如果使用rosserial进行通信),并正确配置UART接口以与ROS主控进行通信。
  配置rosserial(如果使用):
  在ROS环境中安装rosserial包,并根据单片机的硬件规格和通信需求修改rosserial的配置文件。
使用rosserial可以简化STM32与ROS之间的通信,通过发布和订阅ROS话题来实现数据的交换。
设备别名设置(可选):如果ROS主控可能接入多个USB设备,且设备每次插拔时端口号可能不一致,可以通过udev规则为设备创建别名,以便在ROS节点中稳定地引用设备。
三、数据交互
数据发送:单片机过UART接口将传感器数据或其他信息发送到ROS主控。
如果使用rosserial,单片机固件中的rosserial客户端会将数据封装成ROS消息,并通过UART发送到ROS主控。
数据接收:ROS主控通过UART接口接收STM32发送的数据。
如果使用rosserial,ROS主控中的rosserial服务器会解析接收到的数据,并将其转换为ROS消息,供ROS节点订阅和使用。
数据处理:
  ROS节点对接收到的数据进行处理,如进行滤波、融合或控制算法的计算等。
处理后的数据可以通过ROS话题发布给其他节点,或用于控制智能车。

4 系统展示:
GNSS RTK报文
  1. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,31,1*53
  2. $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,39,30,52,246,31,4*6B
  3. $GPGSV,2,2,05,03,33,117,35,4*56
  4. $GPGSV,1,1,04,01,52,039,41,14,47,334,42,30,52,246,34,03,33,117,34,8*64
  5. $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
  6. $GLGSV,2,2,05,81,25,021,26,1*44
  7. $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
  8. $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,35,1*7D
  9. $GBGSV,5,2,19,12,56,286,38,24,60,309,49,26,61,161,44,59,48,130,43,1*79
  10. $GBGSV,5,3,19,35,29,037,33,03,62,187,47,39,36,190,38,40,51,005,43,1*75
  11. $GBGSV,5,4,19,44,61,339,49,02,45,232,37,38,34,157,44,09,56,227,46,1*78
  12. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  13. $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
  14. $GBGSV,5,2,19,12,56,286,47,24,60,309,45,26,61,161,40,59,48,130,40,8*73
  15. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,26,40,51,005,36,8*7A
  16. $GBGSV,5,4,19,44,61,339,47,02,45,232,35,38,34,157,40,09,56,227,39,8*71
  17. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  18. $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
  19. $GBGSV,3,2,11,12,56,286,47,03,62,187,42,02,45,232,38,09,56,227,42,B*04
  20. $GBGSV,3,3,11,10,53,325,43,13,17,178,28,01,45,123,33,B*31
  21. $GAGSV,1,1,04,33,61,214,41,26,64,037,42,23,62,005,43,31,20,319,31,1*7E
  22. $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
  23. $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,46,31,20,319,28,7*79
  24. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,37,1*62
  25. $GQGSV,1,1,04,02,59,079,38,04,22,145,28,03,63,064,46,07,59,147,41,6*69
  26. $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
  27. $GNGGA,061656.00,2226.70631946,N,11330.40492444,E,4,37,0.5,16.5939,M,-4.8471,M,1.0,1976*73
  28. $GNZDA,061656.00,03,03,2025,,*7F
  29. $GNGSA,M,3,01,07,14,22,30,03,02,,,,,,1.1,0.5,0.9,1*30
  30. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.5,0.9,2*31
  31. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.5,0.9,3*34
  32. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.5,0.9,4*3C
  33. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.5,0.9,4*37
  34. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.5,0.9,5*37
  35. $GNRMC,061656.00,D,2226.70631946,N,11330.40492444,E,0.004,245.6,030325,3.2,W,R,S*56
  36. $GPGSV,2,1,07,01,52,039,40,07,40,193,46,14,47,334,40,22,29,324,37,1*6E
  37. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,31,1*53
  38. $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,39,30,52,246,31,4*68
  39. $GPGSV,2,2,05,03,33,117,35,4*56
  40. $GPGSV,1,1,04,01,52,039,41,14,47,334,42,30,52,246,34,03,33,117,34,8*64
  41. $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
  42. $GLGSV,2,2,05,81,25,021,27,1*45
  43. $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
  44. $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,35,1*7D
  45. $GBGSV,5,2,19,12,56,286,38,24,60,309,49,26,61,161,44,59,48,130,43,1*79
  46. $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,39,40,51,005,43,1*73
  47. $GBGSV,5,4,19,44,61,339,49,02,45,232,37,38,34,157,44,09,56,227,46,1*78
  48. $GBGSV,5,5,19,10,53,325,43,13,17,178,36,01,45,123,37,1*41
  49. $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
  50. $GBGSV,5,2,19,12,56,286,47,24,60,309,46,26,61,161,40,59,48,130,40,8*70
  51. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,25,40,51,005,36,8*79
  52. $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
  53. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  54. $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
  55. $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
  56. $GBGSV,3,3,11,10,53,325,43,13,17,178,28,01,45,123,33,B*31
  57. $GAGSV,1,1,04,33,61,214,41,26,64,037,42,23,62,005,43,31,20,319,31,1*7E
  58. $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
  59. $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,47,31,20,319,28,7*78
  60. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,48,07,59,147,37,1*6D
  61. $GQGSV,1,1,04,02,59,079,38,04,22,145,28,03,63,064,46,07,59,147,41,6*69
  62. $GQGSV,1,1,04,02,59,079,41,04,22,145,36,03,63,064,46,07,59,147,45,8*62
  63. $GNGGA,061657.00,2226.70631984,N,11330.40492671,E,4,36,0.6,16.5952,M,-4.8471,M,1.0,1976*77
  64. $GNZDA,061657.00,03,03,2025,,*7E
  65. $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
  66. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
  67. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
  68. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
  69. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
  70. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
  71. $GNRMC,061657.00,D,2226.70631984,N,11330.40492671,E,0.004,233.1,030325,3.2,W,R,S*5B
  72. $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
  73. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
  74. $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,30,4*68
  75. $GPGSV,2,2,05,03,33,117,35,4*56
  76. $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
  77. $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
  78. $GLGSV,2,2,05,81,25,021,28,1*4A
  79. $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
  80. $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,34,1*7C
  81. $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
  82. $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
  83. $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
  84. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  85. $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
  86. $GBGSV,5,2,19,12,56,286,46,24,60,309,45,26,61,161,40,59,48,130,40,8*72
  87. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
  88. $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
  89. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  90. $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,35,B*08
  91. $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
  92. $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
  93. $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
  94. $GAGSV,1,1,04,33,61,214,44,26,64,037,44,23,62,005,45,31,20,319,29,2*71
  95. $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,28,7*79
  96. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
  97. $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
  98. $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
  99. $GNGGA,061658.00,2226.70631849,N,11330.40492426,E,4,36,0.6,16.5952,M,-4.8471,M,1.0,1976*78
  100. $GNZDA,061658.00,03,03,2025,,*71
  101. $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
  102. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
  103. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
  104. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
  105. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
  106. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
  107. $GNRMC,061658.00,D,2226.70631849,N,11330.40492426,E,0.005,244.4,030325,3.2,W,R,S*50
  108. $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,41,22,29,324,37,1*6C
  109. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
  110. $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,38,30,52,246,30,4*6B
  111. $GPGSV,2,2,05,03,33,117,35,4*56
  112. $GPGSV,1,1,04,01,52,039,41,14,47,334,41,30,52,246,33,03,33,117,33,8*67
  113. $GLGSV,2,1,05,78,16,145,35,82,59,328,49,79,68,125,50,80,49,340,40,1*77
  114. $GLGSV,2,2,05,81,25,021,28,1*4A
  115. $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
  116. $GBGSV,5,1,19,16,44,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7D
  117. $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
  118. $GBGSV,5,3,19,35,29,037,33,03,62,187,47,39,36,190,38,40,51,005,43,1*75
  119. $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
  120. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  121. $GBGSV,5,1,19,16,44,195,39,06,48,203,40,07,58,348,43,08,22,168,29,8*72
  122. $GBGSV,5,2,19,12,56,286,47,24,60,309,45,26,61,161,40,59,48,130,40,8*73
  123. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
  124. $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
  125. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  126. $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
  127. $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
  128. $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
  129. $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
  130. $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,29,2*70
  131. $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,47,31,20,319,29,7*79
  132. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
  133. $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
  134. $GQGSV,1,1,04,02,59,079,40,04,22,145,37,03,63,064,46,07,59,147,45,8*62
  135. $GNGGA,061659.00,2226.70631941,N,11330.40492674,E,4,36,0.6,16.5967,M,-4.8471,M,1.0,1976*73
  136. $GNZDA,061659.00,03,03,2025,,*70
  137. $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
  138. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
  139. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
  140. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
  141. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
  142. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
  143. $GNRMC,061659.00,D,2226.70631941,N,11330.40492674,E,0.005,228.8,030325,3.2,W,R,S*5B
  144. $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
  145. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,28,1*5B
  146. $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,39,30,52,246,31,4*6B
  147. $GPGSV,2,2,05,03,33,117,35,4*56
  148. $GPGSV,1,1,04,01,52,039,41,14,47,334,41,30,52,246,33,03,33,117,34,8*60
  149. $GLGSV,2,1,05,78,16,145,35,82,59,328,49,79,68,125,50,80,49,340,40,1*77
  150. $GLGSV,2,2,05,81,25,021,27,1*45
  151. $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
  152. $GBGSV,5,1,19,16,44,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7D
  153. $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
  154. $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
  155. $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
  156. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  157. $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,29,8*7C
  158. $GBGSV,5,2,19,12,56,286,46,24,60,309,45,26,61,161,40,59,48,130,40,8*72
  159. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
  160. $GBGSV,5,4,19,44,61,339,47,02,45,232,35,38,34,157,40,09,56,227,39,8*71
  161. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  162. $GBGSV,3,1,11,16,44,195,39,06,48,203,42,07,58,348,43,08,22,168,36,B*0A
  163. $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
  164. $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
  165. $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
  166. $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
  167. $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,29,7*78
  168. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
  169. $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
  170. $GQGSV,1,1,04,02,59,079,40,04,22,145,37,03,63,064,47,07,59,147,45,8*63
  171. $GNGGA,061700.00,2226.70631834,N,11330.40492502,E,4,36,0.6,16.5901,M,-4.8471,M,1.0,1976*7F
  172. $GNZDA,061700.00,03,03,2025,,*7D
  173. $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
  174. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
  175. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
  176. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
  177. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
  178. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
  179. $GNRMC,061700.00,D,2226.70631834,N,11330.40492502,E,0.005,218.5,030325,3.2,W,R,S*59
  180. $GPGSV,2,1,07,01,52,039,39,07,40,193,45,14,47,334,40,22,29,324,37,1*63
  181. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,28,1*5B
  182. $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,31,4*69
  183. $GPGSV,2,2,05,03,33,117,35,4*56
  184. $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
  185. $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
  186. $GLGSV,2,2,05,81,25,021,27,1*45
  187. $GLGSV,1,1,04,78,16,145,33,82,59,328,45,79,68,125,42,80,49,340,38,3*71
  188. $GBGSV,5,1,19,16,43,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7A
  189. $GBGSV,5,2,19,12,56,287,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7F
  190. $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
  191. $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,45,1*7D
  192. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  193. $GBGSV,5,1,19,16,43,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7A
  194. $GBGSV,5,2,19,12,56,287,46,24,60,309,45,26,61,161,39,59,48,130,40,8*7D
  195. $GBGSV,5,3,19,35,29,037,30,03,62,187,39,39,36,190,22,40,51,005,36,8*7F
  196. $GBGSV,5,4,19,44,61,339,46,02,45,232,34,38,34,157,40,09,56,227,38,8*70
  197. $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
  198. $GBGSV,3,1,11,16,43,195,37,06,48,203,41,07,58,348,42,08,22,168,35,B*02
  199. $GBGSV,3,2,11,12,56,287,46,03,62,187,40,02,45,232,37,09,56,227,41,B*0A
  200. $GBGSV,3,3,11,10,53,325,42,13,17,178,26,01,45,123,32,B*3F
  201. $GAGSV,1,1,04,33,61,214,40,26,64,037,41,23,62,005,42,31,20,319,30,1*7C
  202. $GAGSV,1,1,04,33,61,214,44,26,64,037,43,23,62,005,44,31,20,319,29,2*77
  203. $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,29,7*78
  204. $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
  205. $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,45,07,59,147,41,6*65
  206. $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
  207. $GNGGA,061701.00,2226.70632003,N,11330.40492653,E,4,36,0.6,16.5925,M,-4.8471,M,1.0,1976*70
  208. $GNZDA,061701.00,03,03,2025,,*7C
  209. $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
  210. $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
  211. $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
  212. $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
  213. $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
  214. $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
  215. $GNRMC,061701.00,D,2226.70632003,N,11330.40492653,E,0.005,236.8,030325,3.2,W,R,S*51
  216. $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
  217. $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
  218. $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,31,4*69
  219. $GPGSV,2,2,05,03,33,117,35,4*56
  220. $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
  221. $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
  222. $GLGSV,2,2,05,81,25,021,28,1*4A
  223. $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
  224. $GBGSV,5,1,19,16,43,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7A
  225. $GBGSV,5,2,19,12,56,287,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7F
  226. $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
  227. $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
  228. $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
  229. $GBGSV,5,1,19,16,43,195,38,06,48,203,39,07,58,348,43,08,22,168,28,8*7B
  230. $GBGSV,5,2,19,12,56,287,46,24,60,309,45,26,61,161,40,59,48,130,40,8*73
  231. $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,22,40,51,005,36,8*7E
复制代码
程序设计:
  1. #include <stdio.h>
  2. #include <string.h>


  3. char readFromSerial();

  4. // 用于存储解析后的数据
  5. typedef struct {
  6.     double latitude;
  7.     double longitude;
  8.     double altitude;
  9. } GNSSData;

  10. // 解析NMEA GPGGA语句的函数
  11. int parseGPGGA(const char* sentence, GNSSData* data) {
  12.     char* token;
  13.     char buffer[100];
  14.     strncpy(buffer, sentence, sizeof(buffer));
  15.    
  16.     token = strtok(buffer, ",");
  17.     int fieldIndex = 0;

  18.     while (token != NULL) {
  19.         switch (fieldIndex) {
  20.             case 2: // 纬度
  21.                 data->latitude = atof(token);
  22.                 break;
  23.             case 4: // 经度
  24.                 data->longitude = atof(token);
  25.                 break;
  26.             case 9: // 海拔
  27.                 data->altitude = atof(token);
  28.                 break;
  29.         }
  30.         token = strtok(NULL, ",");
  31.         fieldIndex++;
  32.     }
  33.    
  34.     return 0; // 成功解析返回0
  35. }

  36. int main() {
  37.     GNSSData data;
  38.     char sentence[200];
  39.    
  40.     while (1) {
  41.         // 从串口读取数据
  42.         char c = readFromSerial();
  43.         
  44.         // 简单处理:假设每个句子以换行符结束
  45.         if (c == '\n') {
  46.             sentence[strlen(sentence) - 1] = '\0'; // 去掉换行符
  47.             
  48.             // 检查是否是GPGGA语句
  49.             if (strncmp(sentence, "$GPGGA", 6) == 0) {
  50.                 parseGPGGA(sentence, &data);
  51.                 printf("Latitude: %f, Longitude: %f, Altitude: %f\n", data.latitude, data.longitude, data.altitude);
  52.             }
  53.             
  54.             // 重置句子缓冲区
  55.             memset(sentence, 0, sizeof(sentence));
  56.         } else {
  57.             // 添加到句子缓冲区
  58.             strncat(sentence, &c, 1);
  59.         }
  60.     }
  61.    
  62.     return 0;
  63. }
复制代码
串口通信: 需要实现readFromSerial函数以从GNSS模块读取数据。这通常涉及配置串口参数(波特率、数据位、停止位等)并使用中断或轮询方法读取数据。
NMEA 0183协议: 本例解析了GPGGA语句,可以根据需要解析其他类型的语句(如GPGLL、GPGSV等)。
数据解析: 使用strtok函数分割字符串,并提取所需的字段(纬度、经度、海拔等)。
调试和测试: 确保你的串口连接正常,并且GNSS模块能够接收到卫星信号。

树莓片python
  1. import serial
  2. import time

  3. def parse_gpgga(sentence):
  4.     """解析NMEA GPGGA语句"""
  5.     fields = sentence.split(',')
  6.     if fields[0] != "$GPGGA":
  7.         return None

  8.     # 提取纬度、经度和海拔
  9.     latitude = fields[2]
  10.     lat_direction = fields[3]
  11.     longitude = fields[4]
  12.     lon_direction = fields[5]
  13.     altitude = fields[9]

  14.     # 转换纬度和经度为十进制格式
  15.     lat = convert_to_decimal(latitude, lat_direction)
  16.     lon = convert_to_decimal(longitude, lon_direction)
  17.     alt = float(altitude) if altitude else None

  18.     return lat, lon, alt

  19. def convert_to_decimal(value, direction):
  20.     """将NMEA格式的经纬度转换为十进制格式"""
  21.     if direction == 'S' or direction == 'W':
  22.         sign = -1
  23.     else:
  24.         sign = 1

  25.     degrees, minutes = value.split('.')
  26.     decimal = sign * (int(degrees) + float(minutes) / 60.0)
  27.     return decimal

  28. def main():
  29.     # 根据硬件设置调整端口和波特率
  30.     serial_port = '/dev/ttyUSB0'  # 或者是'/dev/ttyS0'等,取决于你的连接
  31.     baud_rate = 9600

  32.     try:
  33.         ser = serial.Serial(serial_port, baud_rate, timeout=1)
  34.     except Exception as e:
  35.         print(f"无法打开串口:{e}")
  36.         return

  37.     while True:
  38.         try:
  39.             line = ser.readline().decode('ascii', errors='replace')
  40.             if line.startswith('$GPGGA'):
  41.                 lat, lon, alt = parse_gpgga(line)
  42.                 if lat is not None and lon is not None:
  43.                     print(f"Latitude: {lat}, Longitude: {lon}, Altitude: {alt}")
  44.             time.sleep(1)
  45.         except KeyboardInterrupt:
  46.             print("程序终止")
  47.             break
  48.         except Exception as e:
  49.             print(f"读取数据时出错:{e}")
  50.             continue

  51.     ser.close()

  52. if __name__ == '__main__':
  53.     main()
复制代码
   树莓派将通过指定的串口读取RTK数据,程序解析了GPGGA语句并解析输出位置信息。根据你的具体需求,你可能需要调整解析逻辑或处理其他类型的NMEA语句。显示屏展示:


地图搜星





PC端高精度地图展示

APP展示


搭载RTK+INS组合导航系统 巡检车在工程落地应用:

微信图片_20250302192328.jpg (576.86 KB, 下载次数: 0)

微信图片_20250302192328.jpg
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

eefocus_3914144

发表于 2025-3-12 07:59:06 | 只看该作者

北斗现在可以穿墙到室内了,强呀!大佬的技术可以呀!
回复 支持 反对

使用道具 举报

板凳

eefocus_3878630

发表于 2025-3-12 08:13:39 | 只看该作者

一手好剪辑
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

嵌入式软件工程师
179 积分
2 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条