zoukankan      html  css  js  c++  java
  • 51uwb 定位框架-高频率高容量测试代码

    我们的51uwb 开源框架推出也有一段时间了,近期优化TWR定位,实现了TWR高容量高频率定位。

    测试发现,目前代码算是TWR的极限了。

    主要有以下几个特点

    1 高频率,实际测试结果

    A .一标签对一基站,点对点测距频率可以达到400Hz

    B 一标签对三基站,TWR定位频率可以达到130Hz

    从数据上可以看出,基本就是1s内可以实现400次测距,基站相当于一个分母,如果1标签+10个基站,基本应该可以到40hz。

    修改定位频率代码非常简单,只需要改一个宏即可。例如下面,最大频率为130hz。

    #define MAX_FREQ_HZ 130  
    #define MAX_TX_Node 20
    #define  TIM3_ReLoad   (int)(10000/(MAX_FREQ_HZ*MAX_ANTHOR)) 
    

     2 大容量

    为了实现大容量,我们用定时器方法,控制标签发送。 标签以固定间隔和每个基站测距。 为了解决标签冲突,我们代码增加了冲突处理机制,当发现冲突后,标签进行随机延时,重新启动定时器,让冲突节点错开,以减小冲突。

    主要代码

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
        if (htim->Instance == htim3.Instance)
        {
            HAL_TIM_Base_Stop(&htim3);
    
            /* Toggle LED */
            if( Tag_receive_poll ==  0)
            {
                if(Dest_Address == DEST_BEGIN_ADDR)
                {
                    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);
                }
                time_count = portGetTickCnt();
                dwt_forcetrxoff();
                BPhero_Distance_Measure_Specail_TAG();
                HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
                TIM3->ARR = TIM3_ReLoad;
            }
            else
            {
                HAL_TIM_Base_Stop(&htim3);
                TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay
                Tag_receive_poll = 0;
            }
            HAL_TIM_Base_Start(&htim3);
        }
    }
    

    更多完整代码,参考51uwb.cn论坛

  • 相关阅读:
    wget一个小技巧
    【iOS官方文档翻译】UICollectionView与UICollectionViewFlowLayout
    NSDate获取当前时区的时间
    怎样把一个字典的数据添加到另一个字典中?
    CoreLocation基本使用
    iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
    Save Image to UserDefaults(用NSUserDefaults保存图片)
    SDWebImage源码解析
    获取cell或者cell中的控件在屏幕中的位置
    Git命令详解 123
  • 原文地址:https://www.cnblogs.com/tuzhuke/p/13175185.html
Copyright © 2011-2022 走看看