本帖最后由 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报文 - $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,31,1*53
- $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,39,30,52,246,31,4*6B
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,41,14,47,334,42,30,52,246,34,03,33,117,34,8*64
- $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
- $GLGSV,2,2,05,81,25,021,26,1*44
- $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
- $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,35,1*7D
- $GBGSV,5,2,19,12,56,286,38,24,60,309,49,26,61,161,44,59,48,130,43,1*79
- $GBGSV,5,3,19,35,29,037,33,03,62,187,47,39,36,190,38,40,51,005,43,1*75
- $GBGSV,5,4,19,44,61,339,49,02,45,232,37,38,34,157,44,09,56,227,46,1*78
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
- $GBGSV,5,2,19,12,56,286,47,24,60,309,45,26,61,161,40,59,48,130,40,8*73
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,26,40,51,005,36,8*7A
- $GBGSV,5,4,19,44,61,339,47,02,45,232,35,38,34,157,40,09,56,227,39,8*71
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
- $GBGSV,3,2,11,12,56,286,47,03,62,187,42,02,45,232,38,09,56,227,42,B*04
- $GBGSV,3,3,11,10,53,325,43,13,17,178,28,01,45,123,33,B*31
- $GAGSV,1,1,04,33,61,214,41,26,64,037,42,23,62,005,43,31,20,319,31,1*7E
- $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
- $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,46,31,20,319,28,7*79
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,37,1*62
- $GQGSV,1,1,04,02,59,079,38,04,22,145,28,03,63,064,46,07,59,147,41,6*69
- $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
- $GNGGA,061656.00,2226.70631946,N,11330.40492444,E,4,37,0.5,16.5939,M,-4.8471,M,1.0,1976*73
- $GNZDA,061656.00,03,03,2025,,*7F
- $GNGSA,M,3,01,07,14,22,30,03,02,,,,,,1.1,0.5,0.9,1*30
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.5,0.9,2*31
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.5,0.9,3*34
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.5,0.9,4*3C
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.5,0.9,4*37
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.5,0.9,5*37
- $GNRMC,061656.00,D,2226.70631946,N,11330.40492444,E,0.004,245.6,030325,3.2,W,R,S*56
- $GPGSV,2,1,07,01,52,039,40,07,40,193,46,14,47,334,40,22,29,324,37,1*6E
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,31,1*53
- $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,39,30,52,246,31,4*68
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,41,14,47,334,42,30,52,246,34,03,33,117,34,8*64
- $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
- $GLGSV,2,2,05,81,25,021,27,1*45
- $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
- $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,35,1*7D
- $GBGSV,5,2,19,12,56,286,38,24,60,309,49,26,61,161,44,59,48,130,43,1*79
- $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,39,40,51,005,43,1*73
- $GBGSV,5,4,19,44,61,339,49,02,45,232,37,38,34,157,44,09,56,227,46,1*78
- $GBGSV,5,5,19,10,53,325,43,13,17,178,36,01,45,123,37,1*41
- $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
- $GBGSV,5,2,19,12,56,286,47,24,60,309,46,26,61,161,40,59,48,130,40,8*70
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,25,40,51,005,36,8*79
- $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
- $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
- $GBGSV,3,3,11,10,53,325,43,13,17,178,28,01,45,123,33,B*31
- $GAGSV,1,1,04,33,61,214,41,26,64,037,42,23,62,005,43,31,20,319,31,1*7E
- $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
- $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,47,31,20,319,28,7*78
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,48,07,59,147,37,1*6D
- $GQGSV,1,1,04,02,59,079,38,04,22,145,28,03,63,064,46,07,59,147,41,6*69
- $GQGSV,1,1,04,02,59,079,41,04,22,145,36,03,63,064,46,07,59,147,45,8*62
- $GNGGA,061657.00,2226.70631984,N,11330.40492671,E,4,36,0.6,16.5952,M,-4.8471,M,1.0,1976*77
- $GNZDA,061657.00,03,03,2025,,*7E
- $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
- $GNRMC,061657.00,D,2226.70631984,N,11330.40492671,E,0.004,233.1,030325,3.2,W,R,S*5B
- $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
- $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,30,4*68
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
- $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
- $GLGSV,2,2,05,81,25,021,28,1*4A
- $GLGSV,1,1,04,78,16,145,34,82,59,328,46,79,68,125,43,80,49,340,38,3*74
- $GBGSV,5,1,19,16,44,195,40,06,48,203,47,07,58,348,41,08,22,168,34,1*7C
- $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
- $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
- $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7D
- $GBGSV,5,2,19,12,56,286,46,24,60,309,45,26,61,161,40,59,48,130,40,8*72
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
- $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,35,B*08
- $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
- $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
- $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
- $GAGSV,1,1,04,33,61,214,44,26,64,037,44,23,62,005,45,31,20,319,29,2*71
- $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,28,7*79
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
- $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
- $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
- $GNGGA,061658.00,2226.70631849,N,11330.40492426,E,4,36,0.6,16.5952,M,-4.8471,M,1.0,1976*78
- $GNZDA,061658.00,03,03,2025,,*71
- $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
- $GNRMC,061658.00,D,2226.70631849,N,11330.40492426,E,0.005,244.4,030325,3.2,W,R,S*50
- $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,41,22,29,324,37,1*6C
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
- $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,38,30,52,246,30,4*6B
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,41,14,47,334,41,30,52,246,33,03,33,117,33,8*67
- $GLGSV,2,1,05,78,16,145,35,82,59,328,49,79,68,125,50,80,49,340,40,1*77
- $GLGSV,2,2,05,81,25,021,28,1*4A
- $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
- $GBGSV,5,1,19,16,44,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7D
- $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
- $GBGSV,5,3,19,35,29,037,33,03,62,187,47,39,36,190,38,40,51,005,43,1*75
- $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,44,195,39,06,48,203,40,07,58,348,43,08,22,168,29,8*72
- $GBGSV,5,2,19,12,56,286,47,24,60,309,45,26,61,161,40,59,48,130,40,8*73
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
- $GBGSV,5,4,19,44,61,339,47,02,45,232,34,38,34,157,40,09,56,227,39,8*70
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,44,195,38,06,48,203,42,07,58,348,43,08,22,168,36,B*0B
- $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
- $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
- $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
- $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,29,2*70
- $GAGSV,1,1,04,33,61,214,48,26,64,037,47,23,62,005,47,31,20,319,29,7*79
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
- $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
- $GQGSV,1,1,04,02,59,079,40,04,22,145,37,03,63,064,46,07,59,147,45,8*62
- $GNGGA,061659.00,2226.70631941,N,11330.40492674,E,4,36,0.6,16.5967,M,-4.8471,M,1.0,1976*73
- $GNZDA,061659.00,03,03,2025,,*70
- $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
- $GNRMC,061659.00,D,2226.70631941,N,11330.40492674,E,0.005,228.8,030325,3.2,W,R,S*5B
- $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,28,1*5B
- $GPGSV,2,1,05,01,52,039,34,07,40,193,32,14,47,334,39,30,52,246,31,4*6B
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,41,14,47,334,41,30,52,246,33,03,33,117,34,8*60
- $GLGSV,2,1,05,78,16,145,35,82,59,328,49,79,68,125,50,80,49,340,40,1*77
- $GLGSV,2,2,05,81,25,021,27,1*45
- $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
- $GBGSV,5,1,19,16,44,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7D
- $GBGSV,5,2,19,12,56,286,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7E
- $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
- $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,44,195,39,06,48,203,39,07,58,348,43,08,22,168,29,8*7C
- $GBGSV,5,2,19,12,56,286,46,24,60,309,45,26,61,161,40,59,48,130,40,8*72
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,24,40,51,005,36,8*78
- $GBGSV,5,4,19,44,61,339,47,02,45,232,35,38,34,157,40,09,56,227,39,8*71
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,44,195,39,06,48,203,42,07,58,348,43,08,22,168,36,B*0A
- $GBGSV,3,2,11,12,56,286,47,03,62,187,41,02,45,232,38,09,56,227,42,B*07
- $GBGSV,3,3,11,10,53,325,43,13,17,178,27,01,45,123,33,B*3E
- $GAGSV,1,1,04,33,61,214,41,26,64,037,41,23,62,005,43,31,20,319,31,1*7D
- $GAGSV,1,1,04,33,61,214,45,26,64,037,44,23,62,005,45,31,20,319,30,2*78
- $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,29,7*78
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
- $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,46,07,59,147,41,6*66
- $GQGSV,1,1,04,02,59,079,40,04,22,145,37,03,63,064,47,07,59,147,45,8*63
- $GNGGA,061700.00,2226.70631834,N,11330.40492502,E,4,36,0.6,16.5901,M,-4.8471,M,1.0,1976*7F
- $GNZDA,061700.00,03,03,2025,,*7D
- $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
- $GNRMC,061700.00,D,2226.70631834,N,11330.40492502,E,0.005,218.5,030325,3.2,W,R,S*59
- $GPGSV,2,1,07,01,52,039,39,07,40,193,45,14,47,334,40,22,29,324,37,1*63
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,28,1*5B
- $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,31,4*69
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
- $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
- $GLGSV,2,2,05,81,25,021,27,1*45
- $GLGSV,1,1,04,78,16,145,33,82,59,328,45,79,68,125,42,80,49,340,38,3*71
- $GBGSV,5,1,19,16,43,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7A
- $GBGSV,5,2,19,12,56,287,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7F
- $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
- $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,45,1*7D
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,43,195,39,06,48,203,39,07,58,348,43,08,22,168,28,8*7A
- $GBGSV,5,2,19,12,56,287,46,24,60,309,45,26,61,161,39,59,48,130,40,8*7D
- $GBGSV,5,3,19,35,29,037,30,03,62,187,39,39,36,190,22,40,51,005,36,8*7F
- $GBGSV,5,4,19,44,61,339,46,02,45,232,34,38,34,157,40,09,56,227,38,8*70
- $GBGSV,5,5,19,10,53,325,41,13,17,178,26,01,45,123,32,8*4E
- $GBGSV,3,1,11,16,43,195,37,06,48,203,41,07,58,348,42,08,22,168,35,B*02
- $GBGSV,3,2,11,12,56,287,46,03,62,187,40,02,45,232,37,09,56,227,41,B*0A
- $GBGSV,3,3,11,10,53,325,42,13,17,178,26,01,45,123,32,B*3F
- $GAGSV,1,1,04,33,61,214,40,26,64,037,41,23,62,005,42,31,20,319,30,1*7C
- $GAGSV,1,1,04,33,61,214,44,26,64,037,43,23,62,005,44,31,20,319,29,2*77
- $GAGSV,1,1,04,33,61,214,49,26,64,037,47,23,62,005,47,31,20,319,29,7*78
- $GQGSV,1,1,04,02,59,079,43,04,22,145,39,03,63,064,47,07,59,147,36,1*63
- $GQGSV,1,1,04,02,59,079,37,04,22,145,28,03,63,064,45,07,59,147,41,6*65
- $GQGSV,1,1,04,02,59,079,40,04,22,145,36,03,63,064,46,07,59,147,45,8*63
- $GNGGA,061701.00,2226.70632003,N,11330.40492653,E,4,36,0.6,16.5925,M,-4.8471,M,1.0,1976*70
- $GNZDA,061701.00,03,03,2025,,*7C
- $GNGSA,M,3,01,07,14,22,30,03,,,,,,,1.1,0.6,0.9,1*31
- $GNGSA,M,3,78,82,79,80,,,,,,,,,1.1,0.6,0.9,2*32
- $GNGSA,M,3,33,26,23,31,,,,,,,,,1.1,0.6,0.9,3*37
- $GNGSA,M,3,16,06,07,08,12,24,26,59,35,03,39,40,1.1,0.6,0.9,4*3F
- $GNGSA,M,3,44,02,38,09,10,13,,,,,,,1.1,0.6,0.9,4*34
- $GNGSA,M,3,02,04,03,07,,,,,,,,,1.1,0.6,0.9,5*34
- $GNRMC,061701.00,D,2226.70632003,N,11330.40492653,E,0.005,236.8,030325,3.2,W,R,S*51
- $GPGSV,2,1,07,01,52,039,40,07,40,193,45,14,47,334,40,22,29,324,37,1*6D
- $GPGSV,2,2,07,30,52,246,39,03,33,117,29,02,35,034,29,1*5A
- $GPGSV,2,1,05,01,52,039,34,07,40,193,31,14,47,334,38,30,52,246,31,4*69
- $GPGSV,2,2,05,03,33,117,35,4*56
- $GPGSV,1,1,04,01,52,039,40,14,47,334,41,30,52,246,33,03,33,117,33,8*66
- $GLGSV,2,1,05,78,16,145,34,82,59,328,49,79,68,125,50,80,49,340,40,1*76
- $GLGSV,2,2,05,81,25,021,28,1*4A
- $GLGSV,1,1,04,78,16,145,34,82,59,328,45,79,68,125,43,80,49,340,38,3*77
- $GBGSV,5,1,19,16,43,195,40,06,48,203,46,07,58,348,41,08,22,168,34,1*7A
- $GBGSV,5,2,19,12,56,287,38,24,60,309,48,26,61,161,43,59,48,130,42,1*7F
- $GBGSV,5,3,19,35,29,037,34,03,62,187,47,39,36,190,38,40,51,005,43,1*72
- $GBGSV,5,4,19,44,61,339,49,02,45,232,36,38,34,157,43,09,56,227,46,1*7E
- $GBGSV,5,5,19,10,53,325,42,13,17,178,36,01,45,123,37,1*40
- $GBGSV,5,1,19,16,43,195,38,06,48,203,39,07,58,348,43,08,22,168,28,8*7B
- $GBGSV,5,2,19,12,56,287,46,24,60,309,45,26,61,161,40,59,48,130,40,8*73
- $GBGSV,5,3,19,35,29,037,31,03,62,187,39,39,36,190,22,40,51,005,36,8*7E
复制代码程序设计: - #include <stdio.h>
- #include <string.h>
- char readFromSerial();
- // 用于存储解析后的数据
- typedef struct {
- double latitude;
- double longitude;
- double altitude;
- } GNSSData;
- // 解析NMEA GPGGA语句的函数
- int parseGPGGA(const char* sentence, GNSSData* data) {
- char* token;
- char buffer[100];
- strncpy(buffer, sentence, sizeof(buffer));
-
- token = strtok(buffer, ",");
- int fieldIndex = 0;
- while (token != NULL) {
- switch (fieldIndex) {
- case 2: // 纬度
- data->latitude = atof(token);
- break;
- case 4: // 经度
- data->longitude = atof(token);
- break;
- case 9: // 海拔
- data->altitude = atof(token);
- break;
- }
- token = strtok(NULL, ",");
- fieldIndex++;
- }
-
- return 0; // 成功解析返回0
- }
- int main() {
- GNSSData data;
- char sentence[200];
-
- while (1) {
- // 从串口读取数据
- char c = readFromSerial();
-
- // 简单处理:假设每个句子以换行符结束
- if (c == '\n') {
- sentence[strlen(sentence) - 1] = '\0'; // 去掉换行符
-
- // 检查是否是GPGGA语句
- if (strncmp(sentence, "$GPGGA", 6) == 0) {
- parseGPGGA(sentence, &data);
- printf("Latitude: %f, Longitude: %f, Altitude: %f\n", data.latitude, data.longitude, data.altitude);
- }
-
- // 重置句子缓冲区
- memset(sentence, 0, sizeof(sentence));
- } else {
- // 添加到句子缓冲区
- strncat(sentence, &c, 1);
- }
- }
-
- return 0;
- }
复制代码串口通信: 需要实现readFromSerial函数以从GNSS模块读取数据。这通常涉及配置串口参数(波特率、数据位、停止位等)并使用中断或轮询方法读取数据。 NMEA 0183协议: 本例解析了GPGGA语句,可以根据需要解析其他类型的语句(如GPGLL、GPGSV等)。 数据解析: 使用strtok函数分割字符串,并提取所需的字段(纬度、经度、海拔等)。 调试和测试: 确保你的串口连接正常,并且GNSS模块能够接收到卫星信号。
树莓片python - import serial
- import time
- def parse_gpgga(sentence):
- """解析NMEA GPGGA语句"""
- fields = sentence.split(',')
- if fields[0] != "$GPGGA":
- return None
- # 提取纬度、经度和海拔
- latitude = fields[2]
- lat_direction = fields[3]
- longitude = fields[4]
- lon_direction = fields[5]
- altitude = fields[9]
- # 转换纬度和经度为十进制格式
- lat = convert_to_decimal(latitude, lat_direction)
- lon = convert_to_decimal(longitude, lon_direction)
- alt = float(altitude) if altitude else None
- return lat, lon, alt
- def convert_to_decimal(value, direction):
- """将NMEA格式的经纬度转换为十进制格式"""
- if direction == 'S' or direction == 'W':
- sign = -1
- else:
- sign = 1
- degrees, minutes = value.split('.')
- decimal = sign * (int(degrees) + float(minutes) / 60.0)
- return decimal
- def main():
- # 根据硬件设置调整端口和波特率
- serial_port = '/dev/ttyUSB0' # 或者是'/dev/ttyS0'等,取决于你的连接
- baud_rate = 9600
- try:
- ser = serial.Serial(serial_port, baud_rate, timeout=1)
- except Exception as e:
- print(f"无法打开串口:{e}")
- return
- while True:
- try:
- line = ser.readline().decode('ascii', errors='replace')
- if line.startswith('$GPGGA'):
- lat, lon, alt = parse_gpgga(line)
- if lat is not None and lon is not None:
- print(f"Latitude: {lat}, Longitude: {lon}, Altitude: {alt}")
- time.sleep(1)
- except KeyboardInterrupt:
- print("程序终止")
- break
- except Exception as e:
- print(f"读取数据时出错:{e}")
- continue
- ser.close()
- if __name__ == '__main__':
- main()
复制代码 树莓派将通过指定的串口读取RTK数据,程序解析了GPGGA语句并解析输出位置信息。根据你的具体需求,你可能需要调整解析逻辑或处理其他类型的NMEA语句。显示屏展示:
地图搜星
PC端高精度地图展示
APP展示
搭载RTK+INS组合导航系统 巡检车在工程落地应用:
|