# 常见问题汇总与解答
# 问题一:端口波特率修改
答: 连接上位机后, 在 Config 界面将 COMM1(UART)BAUD 从 921600 调整为115200,然后点击 Save to FDI->Save to Permanent 进行保存写入,最后点击 Restart按钮重启,选择 115200 波特率重新连接上位机即可,如下图所示:
也可以使用串口指令进行波特率配置,具体步骤为:
1.进入配置模式
\#fconfig\r\n
2.查看 端口 1 的波特率
\#fparam get COMM\_BAUD1\r\n
3.设置端口 1 的波特率为 115200
\#fparam set COMM\_BAUD1 5\r\n
4.保存参数
\#fsave\r\n
5.重启 #freboot\r\n
y\r\n
# 问题二: 修改数据输出频率
答: 首先请阅读第11章 FDILink 协议,确定需要的数据位于哪个或者哪几个数据包中。接着,连接上位机跳转到 config 界面,数据包配置界面位于 MSGOUT part里:
在上图显示的配置中,MSG_AHRS 和 MSG_IMU 数据包被打开并以10Hz的频率不断往外发送数据。假如用户还需要100Hz的 NED 位置数据,由 FDILINK 协议可知其位于 MSG_INSGPS 数据包里,将上图的 MSG_INSGPS 配置为100Hz,然后点击 Save to FDI->Save to Permanent 进行保存写入,最后点击 Restart按钮重启,此时包含 NED 位置数据的 MSG_INSGPS 就会按100Hz的频率不断往外发送了,该操作只要配置一次并保存后,此后每次重新上电均生效。
需要注意的是,在较低的波特率下以高频率的速度发送过多的数据包,可能会发生丢包现象,这些在用户配置前需要进行计算。
# 为什么会出现 FC F0?
答: 从 FDILINK 通讯协议中可知,输出的 16 进制的数据格式均以 FC 开头并以 FD 结尾。如果打印的数据里没有该形式的数据,原因可能为:
1.波特率设置错误。
2.连接过上位机后未断电重启则使用串口调试助手读取数据,解决该问题只需要将模块重新上电即可。
需要说明的是,即使没有连接上位机,串口仍然会输出 1Hz 的心跳包数据 FC F0 用于上位机通信,但这不会影响其他数据的发送,用户解析数据时忽略该类数据即可。
# 问题四:数据从哪个口出来,是否正确
**答:**config界面配置为Main的串口输出FDILink协议数据,默认为串口1,Main串口必须且只能有一个,此外配置为Nav模式的串口同样可以输出FDILink协议数据,但是只有Main串口能与上位机软件通讯,因此使用can口通讯的用户可以将can配置为Nav模式,从而可以通过can驱动获取FDILink协议数据。
用户需要验证串口输出数据解析是否正确时,可以通过上位机自带的FDIlink协议数据解析软件进行验证,该软件使用简单且直观,如下图所示,打开上位机软件后,不需要点击connnect,直接点开FDILinkTool.exe即可:
FDILinkTool软件如下图所示,选择好串口和波特率,点击右边的open按钮便会解算串口接收到的FDIlink数据,并把每个数据包区分开来,右边显示的是该数据包所包含数据的解析情况。
需要说明的是该工具只是用于验证串口输出FDIlink协议的数据包是否和用户的配置一致,以及每个数据包数据是否正确,由于版本的更替,部分数据包的解析可能存在问题,但是一些常见的数据包解析是一直稳定的(0x41,0x42等等)。
另一种验证的方法就是通过串口助手等工具,直接打印出串口的数据,然后根据相应的16进制数据,将其转换为10进制,从而验证数据的正确性。
需要注意的是,FDILink协议数据高位在前低位在后,因此用户在使用用网上的一些进制转换工具时,需要将16进制数据反过来输入,否则会得到错误的结果。
# 问题五:fdilink数据帧
答: FDILink协议包含的数据包种类繁多,下面解答一些客户经常问到的问题:
A.MSG_IMU(0x41)数据包里的X轴Y轴Z轴角速度数据,与MSG_AHRS(0x42)数据包里的横滚、俯仰、偏航角速度是相同的;
B.MSG_RAW_SENSORS(0x58)数据包里的传感器原始数据,与MSG_IMU中的数据是不同的,区别在与前者是传感器直接读取的数据,后者是经过转台校准轴耦合,比例因子,零偏等误差后输出的数据;
C.MSG_RAW_GNSS(0x59)中,经纬度高度以及NED速度数据,均是GPS接收机输出的原始数据;而其他所有数据包里所包含的经纬度高度与NED速度等数据,均是经过与惯导组合导航之后的融合数据;一般而言,后者的精度会更高一些。
D.一些用户想要获取当前的GPS状态,可以解析MSG_SYS_STATE(0x50)这个数据包,其位于滤波器状态的GNSS_Fix_Status
标识里,它表示主天线的定位状态。或者对于DETA100D4G的双天线用户,可以解析MSG_GNSS_DUAL_ANT(0x78)这个数据包,其中的MBfixtype表示主天线的定位状态,Roverfixtype表示从天线的定位状态。需要说明的是,从天线的作用仅用于定向,因此定位效果的好坏取决于主天线的定位状态。
# 问题六:linux ROS 报错
答 : 首先需要明确的是ROS_DEMO这个示例工程包在ubuntu16,ubuntu18以及ubuntu20中均测试通过的。用户首先要明确的点是,在linux下通过串口输出的数据是否是正确的,可以安装cutecom串口调试软件打印串口数据,勾上16进制后查看数据是否是FC 41 ... FD或者FC 40 ... FD等标准的FDILink协议数据类型。
如果数据正确的话,那么需要确认ROS_DEMO包的launch文件中的波特率是否和配置的一致,或者在catkin_make编译的过程中是否存在没有解决的问题。
如果数据异常的话,则大概率是linux系统下用户使用的串口芯片的驱动的问题,可能是内核版本与驱动版本不兼容。一般对于CH340之类ttl转USB的串口芯片,linux下的驱动包一般都没优化好,存在一些问题,建议改用CP2102。
# 问题七:姿态漂移
问题七:模块上电后姿态一直在漂移是怎么回事,明明模块是静止放置的?
答:该问题的根本原因大概率是模块启动时计算的陀螺仪静态零偏有误,解决方法如下:
1.确保模块静止的前提下对模块重新上电,观测此时姿态是否仍然在漂移。
2.如果姿态仍然在漂移,在静止条件下点击 Gyro Tare 按钮进行陀螺仪静态零偏的重新计算,接着点击 write flash 按钮写入。具体说明见10.5.2节。
3.进行完 2 步骤后姿态仍然在偏移,用户需检查模块附近是否存在变化的磁场(磁力计开关打开时),或者周围温度是否存在剧烈的变化。前者会导致航向角的漂移,后者会导致陀螺仪零偏发生改变,因为温度是导致陀螺仪零偏变化的主要原因。
4.如果上述步骤操作完后仍然没有解决问题,则联系我们技术人员进行沟通交流。
需 要 说 明 的 是 , FDIGroundStation SPKF 融 合 开 关 中 的 AID_GYO_TURN_ON_TARE_ENABLED 开关是默认打开的,其功能是上电时自动计算一次陀螺仪静态零偏,需要模块上电时静止放置2s左右,如果用户使用环境无法做到静止启动,则关闭该开关,否则上电后姿态可能会发生漂移。
# 问题八:无法获取经纬度信息
问题八:从MSG_GEODETIC_POS(0x5C)中无法获取经纬度信息?以及MSG_INS/GPS
(0x42)中NED数据异常是为什么?
答: 该问题产生的原因相同。首先需要说明的是这两个数据包中的位置和速度数据均是组合导航后的结果,经纬度和NED位置的转换关系见问题十二。FDIsystems产品在GNSS/INS组合导航生效之前,会根据GNSS系统解析得到的垂直(Vacc)和水平方向上(Hacc)的定位精度数据进行判断是否进行组合导航,因而设置了一个可以调整的阈值,默认垂直方向阈值为3.5m,水平阈值为1.8m,如下图所示,当实时获得Hacc和Vacc数据(该值在上位机右侧Status Details框中显示)均小于该阈值时,组合导航生效,MSG_GEODETIC_POS数据包开始有经纬度数据,同时MSG_INS/GPS数据包的NED数据的坐标系原点确定,具体可见问题十一。
对于外接的GPS系统,如果其定位精度太差导致迟迟无法进入阈值内的情况,则可以手动调整该阈值。Onborad Parameters里的参数修改方式都是相同的,修改完成后点击下方的Transmit按钮,最后点击Write flash按钮保存即可。
# 问题九:外接gps 的要求
问题九:对于DETA10N,DETA20N和DETA30N等可以外接GPS的产品,对输入的GPS有啥要求?
答: 外接GPS到上述三个系列的产品,只需要将GPS设备的ttl电平的TX(发)与FDIsystems产品的RX3(收)相连即可。波特率115200bps,推荐数据发送频率为10Hz。然后上位机的COMM界面需要进行相应的配置,如下图所示,支持NMEA0183格式和UBX格式,配置完成后保存重启生效。
当串口3配置了NMEA模式时,用户需要发送特定的NMEA语句才能实现GNSS/INS组合导航功能,位置融合至少需要GGA,GSA和GST语句,速度融合至少需要VTG语句。支持解析的所有语句为:GGA|GLL|VTG|RMC|GSA|GST|GSV。需要说明的位置数据中的三个都是必不可少的数据,其中GST语句主要能获得Hacc和Vacc的估计,从问题八中可知如果没有这两类数据的话无法进行GNSS/INS的组合导航,用户在购买FDIsystemsN系列产品前需要明确自己的GPS设备是否支持输出GST语句;此外,VTG里面的速度语句仅包含水平方向的速度,因此采用NMEA语句与惯导进行融合解算的时候,垂直方向的速度精度是无法得到保证的。
当串口3配置了UBLOX模式时,用户需要发送特定的UBX二进制语句才能实现GNSS/INS组合导航功能,至少需要UBX-NAV-DOP|UBX-NAV-PVT|UBX-NAV-STATUS|UBX-NAV-TIMEGPS|UBX-NAV_VELNED|UBX-NAV-POSLLH语句。这些语句可以通过UBLOX厂商自带的u-center软件进行配置,具体参考该厂商的相关手册。
最后是如何判断接入的GPS数据被成功解析,可以通过上位机软件的Data界面的进行查看验证,勾上GPS数据类型后,观察红框中的数据是否正确即可,如下图所示:
# 问题十: 组合定位精度 初对准
问题十:GNSS+惯导组合后的定位精度是怎么样的,与什么因素有关,以及什么是初对准?
答: GNSS+惯导组合后的位置精度主要与用户的使用类型有关,正如第七章规格参数所展示的,单点定位的精度大致在1m,使用4g模块或其他方式接收RTCM校正数据的话,可以达到亚米级、厘米级甚至毫米级,这取决于用户购买的相关网络运营商的服务,如千寻FindM pro、千寻FindCM和千寻FindMM;需要说明的是,这些指标均是在观测环境良好的环境下给出的,即天线处于开阔的环境中。实际的定位精度受到多种因素影响,如终端设备的天线和解算算法,周边环境是否有遮挡,是否高速动态场景,以及电离层是否活跃、卫星运行是否健康等。
惯导和GNSS组合的一大优势是能在GNSS天线受到遮挡的环境中提供短期可靠的位置数据,因此组合导航系统的初对准是非常重要且必要的。初对准主要是模组输出的航向角要与真实的地理航向对齐,对于购买了双天线版本的用户,由于双天线的定向功能,因此在静止阶段就可以实现比较良好的对准效果;而对于购买了单天线版本的用户,初对准需要在运动中完成。如安装在载体上的单天线模组,需要载体进行多次的转圈和加减速才能完成对准;单天线模组同时也存在另一种粗略对准的方法,首先用户将模组X轴即车头方向指向地理北,同时在上位机中关闭磁力计初始化航向角开关,这样每次上电时航向角便在0°附近,相当于人工进行了初对准。这种初对准的特点是每次上电时都必须保证车头大致指向地理北,这样当载体运动后能更快的实现精确对准。这样当对准完成后,在天线受到遮挡或者无法搜星的场景下,靠着惯导本身的航位推算能力,短时间内也能获得精准的定位数据。
# 问题十一:NED和ECEF
问题十一:曲线坐标系(经度纬度高度)和当地导航坐标系(NED)以及地心地固坐标系(ECEF)的关系是什么?
答: NED 坐标系也称为北(North)东(East)地(Down)坐标系,一般用符号 n 表示,NED 坐标系各轴的定义:
N——北轴指向地球北;
E——东轴指向地球东;
D——地轴垂直于地球表面并指向下;
设基准点(第一个定位有效的点)为,所谓定位有效即GNSS水平定位精度和垂直定位精度均小于设定阈值,一旦满足条件,模块会自动将此时的经纬度值保存并设置为基准点。基准点对应NED坐标系的原点位置;当前时刻输出的位置为,则该点对应NED坐标系位置为:
h表示大地高度,表示子午圈曲率半径,表示卯酉圈曲率半径,表示大地纬度,表示经度,表示地球椭球长半径,表示地球椭球第一偏心率
ECEF 采用 WGS84 标准构建的椭球体模型的中心为原点,如下图所示。z 轴沿着地球自转轴从地心指向北极点;x 轴从地心指向赤道与 IERS 参考子午线的交点;y 轴从地心指向赤道与90°东经子午线的交点。ECEF 用符号 e 表示。
曲线位置到 ECEF 系笛卡儿位置的转换公式如下:
# 问题十二:NED坐标系的坐标原点能否人工输入,需要怎么操作?
问题十二:NED坐标系的坐标原点能否人工输入,需要怎么操作? **答:**正如问题六所回答的,默认 NED 坐标系的坐标原点是自动标定的,当然也支持人工输入。人工输入的方式分为两种,一种是通过上位机写入,一种是通过串口指令输入。
首先假定合肥某一位置的经度为117.12345678°,纬度为31.87654321°,将此位置作为 NED 坐标系的原点。注意小数部分必须到小数点后8位,不够的手动补0,8位的小数能保证定位精度到mm。
上位机方式:
如上图所示, Config 界面内,用户在 Onboard Parameters 列表里 USER 类的红框处输入指定的经纬度值。其中,
USER_DEFINE_HOLDLAT_1输入纬度的整数部分,即31;USER_DEFINE_HOLDLAT_2输入纬度的小数点后8位,即87654321;
USER_DEFINE_HOLDLON_1输入经度的整数部分,即117;USER_DEFINE_HOLDLON_2输入经度的小数点后8位,即12345678;之后点击 Transmit 和 Write Flash 按钮将参数保存,之后点击 Restart 按钮重启,此后每次重新上电写入的参数均生效。如果想恢复自动标定原点的方式只需要将上述4个参数置零即可。
串口方式:
1.进入配置模式
#fconfig\r\n
2.设置纬度的整数部分为31
#fparam set USER_DEFINE_HOLDLAT_1 31\r\n
3.设置纬度的小数部分为87654321
#fparam set USER_DEFINE_HOLDLAT_2 87654321\r\n
4.设置经度的整数部分为117
#fparam set USER_DEFINE_HOLDLON_1 117\r\n
5.设置经度的小数部分为12345678
#fparam set USER_DEFINE_HOLDLON_2 12345678\r\n
6.保存参数
#fsave\r\n
7.重启
#freboot\r\n
y\r\n
本文档中的信息仅与 FDISYSTEMS 产品有关。FDISYSTEMS 保留随时对本文档以及本文档中所述的产品和服务进行修改、更正、改进的权利,而不另行通知。
所有 FDISYSTEMS 产品均根据 FDISYSTEMS 的销售条款进行销售。买方购买了产品即能获得 FDISYSTEMS 对应产品的文档说明书以及上位机软件。如果您在使用中仍然遇到一些问题需要解决,可以联系 FDISYSTEMS 研发人员寻求帮助。如果您希望 FDISYSTEMS 产品开发新的功能以适用于您的应用场景,请电话联系 FDISYSTEMS 总经理杨工,电子邮箱aidiyang@mail.ustc.edu.cn。
本文档未授予以禁止反言或其他方式明示或暗示的任何知识产权许可。如果本文档的任何部分涉及任何第三方产品或服务,则不得视为高级导航授予使用该第三方产品或服务的许可,或其中包含的任何知识产权或视为以任何方式使用该第三方产品或服务或任何知识产权的担保。除非 FDISYSTEMS 的销售条款和销售条件中另有规定,否则 FDISYSTEMS 不承认就使用或销售高级导航产品的任何明示或默示保证,包括但不限于适销性、适用于特定目的(及其任何管辖权法律下的同等保证)或侵犯任何专利、版权或其他知识产权的默示保证。
转售与本文档规定的声明或技术特征不同的 FDISYSTEMS 产品,会立即使 FDISYSTEMS 对 FDISYSTEMS 产品或服务授予的任何保证无效,并不得以任何方式创建或扩展 FDISYSTEMS 的任何责任。本文档中的信息将取代并替换之前提供的所有信息。
©2021 FDISYSTEMS - All rights reserved