LAOXU
发表于 2024-12-28 03:37:59
神农鼎 发表于 2024-12-27 08:50
B版 AI8H2K12U-45I-TSSOP20
生产测试环节还没跟上,
先从深圳发工程样片给您 指点江山
谢谢
王昱顺
发表于 2024-12-28 09:26:37
cnos 发表于 2024-12-27 09:31
我现在有个需求就是计算两个GPS坐标之间的间距,所以单精度也不够用,unsigned long也不好搞,因为要用到 ...
将双精度浮点数据拆开(原数据是字符串吧?),
分为整数部分和小数部分,直接求差值,
然后就得到了一个0和一个较小的坐标值,
再对这两个坐标进行运算即可。
没必要直接在原数据上运行
xxkj2010
发表于 2024-12-28 09:29:59
B版完善多了!{:4_250:}
cnos
发表于 2024-12-28 21:08:08
王昱顺 发表于 2024-12-28 09:26
将双精度浮点数据拆开(原数据是字符串吧?),
分为整数部分和小数部分,直接求差值,
然后就得到了一个0 ...
我也是这么想的,但是就是原始数据是 度度度分分.分分分分分分 这样不管是先把分分.分分分分分分折成度再相减,还是把度折成分再相减,都需要8-9位实际有效数字。
麻烦就是两坐标相减后,余下的值很小,还要做平方,开根号(最简单的数学笛卡尔两点距离公式)没考虑球面的情况。
这样就显得不够用,希望是能在几米差距就能做出有效反应。
cnos
发表于 2024-12-28 21:09:52
LAOXU 发表于 2024-12-28 03:37
最终精度, 折合十进制数 , 需要几位 有效位数 ?
原始数据是 度度度分分.分分分分分分 这样不管是先把分分.分分分分分分折成度再相减,还是把度折成分再相减,都需要8-9位实际有效数字。
麻烦就是两坐标相减后,余下的值很小,还要做平方,开根号(最简单的数学笛卡尔两点距离公式)没考虑球面的情况。
这样就显得不够用,希望是能在几米差距就能做出有效反应。
转unsigned long 会超,而且后面做平方,开方也不好搞。坛子里说251支持double,我也试了确实可以,我现在等8051U芯片回来实测。
王昱顺
发表于 2024-12-28 22:13:35
cnos 发表于 2024-12-28 21:08
我也是这么想的,但是就是原始数据是 度度度分分.分分分分分分 这样不管是先把分分.分分分分 ...
那使用unsigned long 数据不是正好吗?因为你是想用于实际控制,所以转换单位并没有必要。
32位整数数据提供9位的有效数字是够用的,并且你也说了,实际的差值很小。
那岂不是正好,直接根据char类型对齐相减得到值,然后根据这个值再做距离求解(可以自行实现一下球形坐标解算),如果两个坐标点近的话,使用16位的整型应该都是够的。并且,较近的坐标计算距离的时候,是可以不用考虑地球球面影响的,因为10m内的数据都可以近似平面。
举个例子,比对纬度值“4807.038,N”和下一个坐标点的纬度值“4807.042,N”,可以直接比较字符串的字符是否相等,从不相等的开始提取,得到diff = 38-42 = 4;同理再找到经度的差值(例如6),则可以计算距离为sqrt(pow(4,2),pow(6,2));这时候计算就相当快了。大概在ns级即可完成一次距离解算。如果担心累计误差,则可以对初始启动点位进行记忆,之后的差分都跟最初的点位进行计算得到绝对位置,即可消除计算引起的累计误差。
LAOXU
发表于 2024-12-29 07:35:55
cnos 发表于 2024-12-28 21:09
原始数据是 度度度分分.分分分分分分 这样不管是先把分分.分分分分分分折成度再相减,还是把 ...
刚才折算了一下, 1分 约 18.5m, 依靠单精度浮点数运算, 精度有点勉强, 由于浮点数的浮动性, 在小于1分时, 由于输入的精度位数偏少, 因此越小计算精度越高,
在几米范围内, 单精度浮点数计算 和 双精度浮点数计算, 计算结果没什么差异(误差在 1m范围内).
反而是大于 1分 情况下, 比如 几km , 双精度浮点数计算, 明显要比 单精度浮点数计算, 可多 2~3位 有效数字(误差在 1m范围内)
LAOXU
发表于 2024-12-29 07:36:12
我的结论是,
在几米范围内,单精度浮点数计算 和 双精度浮点数计算, 计算结果(精度)没什么差异(误差在 1m范围内).
在大范围内,双精度浮点数计算 明显 比 单精度浮点数计算, 计算精度要高出许多(多 2~3位 有效数字, 误差在 1m范围内).
因此, 在动态运行中, 比如无人机飞行到指定点, 单精度浮点数运算 不行(精度不达标), 必须要用双精度浮点数运算.
LAOXU
发表于 2024-12-29 07:51:02
无人机飞行到指定点, 如使用单精度浮点数运算 , 开始时误差较大(越靠近目标误越小), 在 10m内, 精度几乎和 双精度浮点数运算 持平, 然后精确飞到指定点,
总之, 使用单精度浮点数运算 ,飞行路线近拟于一条弧线(而非直线), 飞行时间长.
cnos
发表于 2024-12-29 19:46:05
王昱顺 发表于 2024-12-28 22:13
那使用unsigned long 数据不是正好吗?因为你是想用于实际控制,所以转换单位并没有必要。
32位整数数据提 ...
你这么说也没错,但是前面的大数在刚好跨界进位的时候,是不能忽略的。
比如109度59.3354分,再走几十米就110度了。
所以前面的数据还是要一直参与加减运算的。