久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5088|回復: 3
打印 上一主題 下一主題
收起左側

STM32超聲波測試程序(卡爾曼濾波)

[復制鏈接]
跳轉到指定樓層
樓主
ID:488090 發表于 2019-3-10 20:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近嘗試做出來的超聲波測試(卡爾曼濾波)

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "math.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "can.h"
  8. #include "wheelControl.h"
  9. #include "encoder.h"
  10. #include "coordinate.h"
  11. #include "monition_control.h"
  12. #include "pwm.h"
  13. #include "exti.h"
  14. #include "stm32f10x_exti.h"
  15. #include "lidar.h"
  16. #include "spi.h"
  17. #include "24l01.h"
  18. #include "QIANG.h"
  19. #include "text.h"
  20. #include "bsp_rcc.h"
  21. #include "key.h"
  22. #include "chaosheng.h"
  23. #include "lb.h"
  24. int speed=3000;
  25. extern float zygj;    //估計值
  26. extern float sjjc;    //檢測值

  27. float s;//碼盤偏差糾正
  28. extern coordinitioate_Struct  World_Coordinate_system_Position/*世界坐標系--位置*/
  29.                                                                                   ,World_Coordinate_system_Velocity/*世界坐標系--速度*/
  30.                                                                                   ,Velocity_Coordinate_system/*速度坐標系*/
  31.                                                                                   ,Robot_Coordinate_system/*機器人車身坐標系*/
  32.                                                                                         ,TargetLine_Coordinate_system/*目標線坐標系,相當于在速度坐標系下的位置*/;
  33. float data_tosend[6];
  34. ROBOT_Status_Struct ROBOT_Status;
  35. extern int flag_ea;
  36. extern float targetY;
  37. extern distancel distance_angle;
  38. char start_flag=0;
  39. extern int flag_dingwei;
  40. extern float gyroIntegral_tri;

  41. extern PID_Struct Angle_PID,Abjust_PID;

  42. //extern int32_t motorSpeed_1, motorSpeed_2, motorSpeed_3, motorSpeed_4;

  43. int main(void)
  44. {       
  45.   
  46. //        HSE_SetSysClock(RCC_PLLMul_15);
  47.                  delay_init();                     //延時函數初始化       
  48.                 NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級                     
  49.                 qigang_init();
  50.                  KEY_Init();
  51.          
  52.           NRF24L01_Init();
  53.                 NRF24L01_TX_Mode();
  54.                 CAN_Configuration();  //can初始化
  55.                 CAN_SetMsg_1(0x110);
  56.                 delay_ms(100);
  57.                 CAN_SetMsg_1(0x210);
  58.                 delay_ms(100);
  59.                 CAN_SetMsg_1(0x310);
  60.                 delay_ms(100);
  61.                 CAN_SetMsg_1(0x410);
  62.                 delay_ms(100);
  63.                 CAN_SetMsg_2(0x111);
  64.                 delay_ms(100);
  65.                 CAN_SetMsg_2(0x211);
  66.                 delay_ms(100);
  67.                 CAN_SetMsg_2(0x311);
  68.                 delay_ms(100);
  69.                 CAN_SetMsg_2(0x411);
  70.                 delay_ms(100);

  71.     usart1_init(115200);
  72.           delay_ms(300);
  73.                 TIM5_Configuration(49,7199);//10Khz的計數頻率,計數到5000為500ms
  74.                 TIM3_Cap_Init(0XFFFF,72-1);
  75.        
  76.                 while(!Key_Scan())//等待按鍵初始化完成
  77.                 {
  78.                 }
  79.           while(Key_Scan())//等待按鍵按下
  80.                 {
  81.                 }
  82.                
  83.                
  84.                 ROBOT_Status.Target_Angle.angle_reg=0;                //  機器人姿態角不
  85.                 ROBOT_Status.Target_Angle.angle_deg=0;
  86.                 ROBOT_Status.angular_velocity=0;   // 車身運動時姿態角不變
  87.    
  88.        
  89.                 ROBOT_Status.Start_Speed=1000;
  90.                 ROBOT_Status.Max_speed=speed;
  91.                 ROBOT_Status.NewState=ENABLE;
  92.                 ROBOT_Status.Robot_type= 0 ;
  93.                 ROBOT_Status.Target.x=1196.6;
  94.                 ROBOT_Status.Target.y=943.92;
  95.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  96.                 ROBOT_Status.Speedup_accelerated_speed=5000;
  97.                 ROBOT_Status.Target_Speed=speed;             //  末端速度
  98.                 ROBOT_Status.Stop_length =0;
  99.                 while(Robot_control_line(&ROBOT_Status)>50);
  100.                
  101.                
  102.                 ROBOT_Status.angular_velocity=0;
  103.                 ROBOT_Status.Max_speed=speed;
  104.                 ROBOT_Status.NewState=ENABLE;
  105.                 ROBOT_Status.Robot_type=2;
  106.                 ROBOT_Status.angle_reg_Sum=3.1415926*103.46/180;
  107.                 ROBOT_Status.R=600;
  108.                 ROBOT_Status.Heart.x=825;
  109.                 ROBOT_Status.Heart.y=1415;
  110.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  111.                 ROBOT_Status.Target_Speed=speed;
  112.                 ROBOT_Status.Stop_length = 10;
  113.                 while(Robot_control_Circle(&ROBOT_Status)>50);
  114.                
  115.                
  116.                
  117.                 ROBOT_Status.Start_Speed=speed;
  118.                 ROBOT_Status.Max_speed=speed;
  119.                 ROBOT_Status.NewState=ENABLE;
  120.                 ROBOT_Status.Robot_type= 0 ;
  121.                 ROBOT_Status.Target.x=464.91;
  122.                 ROBOT_Status.Target.y=2435.07;
  123.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  124.                 ROBOT_Status.Speedup_accelerated_speed=5000;
  125.                 ROBOT_Status.Target_Speed=speed;             //  末端速度
  126.                 ROBOT_Status.Stop_length =0;
  127.                 while(Robot_control_line(&ROBOT_Status)>50);
  128.                
  129.                
  130.                 ROBOT_Status.angular_velocity=0;
  131.                 ROBOT_Status.Max_speed=speed;
  132.                 ROBOT_Status.NewState=ENABLE;
  133.                 ROBOT_Status.Robot_type=1;
  134.                 ROBOT_Status.angle_reg_Sum=3.1415926*106.24/180;
  135.                 ROBOT_Status.R=600;
  136.                 ROBOT_Status.Heart.x=825;
  137.                 ROBOT_Status.Heart.y=2915;
  138.                 ROBOT_Status.Slow_accelerated_speed=1000;  //  減速加速度
  139.                 ROBOT_Status.Target_Speed=speed;
  140.                 ROBOT_Status.Stop_length = 10;
  141.                 while(Robot_control_Circle(&ROBOT_Status)>20);
  142.                
  143.                
  144.                
  145.                 ROBOT_Status.Start_Speed=speed;
  146.                 ROBOT_Status.Max_speed=speed;
  147.                 ROBOT_Status.NewState=ENABLE;
  148.                 ROBOT_Status.Robot_type= 0 ;
  149.                 ROBOT_Status.Target.x=1185;
  150.                 ROBOT_Status.Target.y=3935;
  151.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  152.                 ROBOT_Status.Speedup_accelerated_speed=5000;
  153.                 ROBOT_Status.Target_Speed=speed;             //  末端速度
  154.                 ROBOT_Status.Stop_length =10;
  155.                 while(Robot_control_line(&ROBOT_Status)>20);
  156.                
  157.                 ROBOT_Status.angular_velocity=0;
  158.                 ROBOT_Status.Max_speed=speed;
  159.                 ROBOT_Status.NewState=ENABLE;
  160.                 ROBOT_Status.Robot_type=2;
  161.                 ROBOT_Status.angle_reg_Sum=3.1415926*127/180;
  162.                 ROBOT_Status.R=600;
  163.                 ROBOT_Status.Heart.x=825;
  164.                 ROBOT_Status.Heart.y=4415;
  165.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  166.                 ROBOT_Status.Target_Speed=speed;
  167.                 ROBOT_Status.Stop_length = 10;
  168.                 while(Robot_control_Circle(&ROBOT_Status)>50);
  169.                
  170.                 Abjust_PID.KP=5;
  171.                 Angle_PID.KP=10;
  172.                
  173.                 ROBOT_Status.angular_velocity=0;
  174.                 ROBOT_Status.Max_speed=speed;
  175.                 ROBOT_Status.NewState=ENABLE;
  176.                 ROBOT_Status.Robot_type=1;
  177.                 ROBOT_Status.angle_reg_Sum=3.1415926*83/180;
  178.                 ROBOT_Status.R=170.0840;
  179.                 ROBOT_Status.Heart.x=995.0840;
  180.                 ROBOT_Status.Heart.y=5170.0000;
  181.                 ROBOT_Status.Slow_accelerated_speed=1000;  //  減速加速度
  182.                 ROBOT_Status.Target_Speed=0;
  183.                 ROBOT_Status.Stop_length = 10;
  184.                 while(Robot_control_Circle(&ROBOT_Status)>20)
  185.                 {
  186.                    delay_ms(500);
  187.                   
  188.                        
  189.                         break;
  190.                 }


  191.                 while(1)
  192.                 {
  193.                 if(zygj>850)
  194.                 {
  195.                   CAN_SetMsg(-500,0x114);
  196.          
  197.             CAN_SetMsg(-500,0x214);
  198.          
  199.             CAN_SetMsg(500,0x314);
  200.        
  201.             CAN_SetMsg((int32_t) 500/17.8*12,0x414);
  202.                 }
  203.                 else if(zygj<800)
  204.                 {
  205.                    CAN_SetMsg(500,0x114);
  206.          
  207.             CAN_SetMsg(500,0x214);
  208.          
  209.             CAN_SetMsg(-500,0x314);
  210.        
  211.             CAN_SetMsg((int32_t)-500/17.8*12,0x414);
  212.                 }
  213.                 else if(zygj<850&zygj>800)
  214.                 {
  215.                   break;
  216.                 }
  217.         }
  218.           ROBOT_Status.Start_Speed=1000;
  219.                 ROBOT_Status.Max_speed=speed;
  220.                 ROBOT_Status.NewState=ENABLE;
  221.                 ROBOT_Status.Robot_type= 0 ;
  222.                 ROBOT_Status.Target.x=750;
  223.                 ROBOT_Status.Target.y=7920;
  224.                 ROBOT_Status.Slow_accelerated_speed=300;  //  減速加速度
  225.                 ROBOT_Status.Speedup_accelerated_speed=1000;
  226.                 ROBOT_Status.Target_Speed=speed;             //  末端速度
  227.                 ROBOT_Status.Stop_length =0;
  228.                 while(Robot_control_line(&ROBOT_Status)>5);
  229.                
  230.          
  231.                
  232.                 //過橋后
  233.                 Angle_PID.KP=10;
  234.                 Angle_PID.KD=0;
  235.                
  236.                 ROBOT_Status.angular_velocity=0;
  237.                 ROBOT_Status.Max_speed=speed;
  238.                 ROBOT_Status.NewState=ENABLE;
  239.                 ROBOT_Status.Robot_type=1;
  240.                 ROBOT_Status.angle_reg_Sum=3.1415926*85/180;
  241.                 ROBOT_Status.R=585.0000;
  242.                 ROBOT_Status.Heart.x=1360;//775+585=1360
  243.                 ROBOT_Status.Heart.y=7920;
  244.                 ROBOT_Status.Slow_accelerated_speed=3000;  //  減速加速度
  245.                 ROBOT_Status.Target_Speed=speed;
  246.                 ROBOT_Status.Stop_length = 10;
  247.                 while(Robot_control_Circle(&ROBOT_Status)>20);
  248.                
  249.                 ROBOT_Status.Start_Speed=speed;
  250.                 ROBOT_Status.Max_speed=speed;
  251.                 ROBOT_Status.NewState=ENABLE;
  252.                 ROBOT_Status.Robot_type= 0 ;
  253.                 ROBOT_Status.Target.x=3963.8097;
  254.                 ROBOT_Status.Target.y=8505;
  255.                 ROBOT_Status.Slow_accelerated_speed=500;  //  減速加速度
  256.                 ROBOT_Status.Speedup_accelerated_speed=1000;
  257.                 ROBOT_Status.Target_Speed=1500;             //  末端速度
  258.                 ROBOT_Status.Stop_length =0;
  259.                 while(Robot_control_line(&ROBOT_Status)>20);
  260.                
  261.                 ROBOT_Status.angular_velocity=0;
  262.                 ROBOT_Status.Max_speed=1500;
  263.                 ROBOT_Status.NewState=ENABLE;
  264.                 ROBOT_Status.Robot_type=1;
  265.                 ROBOT_Status.angle_reg_Sum=3.1415926*90/180;
  266.                 ROBOT_Status.R=510.0000;
  267.                 ROBOT_Status.Heart.x=3964.0000;
  268.                 ROBOT_Status.Heart.y=8020.0000;
  269.                 ROBOT_Status.Slow_accelerated_speed=500;  //  減速加速度
  270.                 ROBOT_Status.Target_Speed=700;
  271.                 ROBOT_Status.Stop_length = 10;
  272.                 while(Robot_control_Circle(&ROBOT_Status))
  273.                 {
  274.                   if(lb_level!=1)
  275.                                 break;
  276.                 }
  277.                
  278.                 //交接令牌
  279.                
  280.                 Angle_PID.KP=0;
  281.                 Angle_PID.KI=0;
  282.                 Angle_PID.KD=0;
  283.                
  284.                 Abjust_PID.KP=1;
  285.                 Abjust_PID.KI=0;
  286.                 Abjust_PID.KD=0;
  287.        
  288.                 while(1)
  289.                 {
  290.                 if(lb_level==1)
  291.                 {
  292.           CAN_SetMsg(-500,0x114);
  293.          
  294.           CAN_SetMsg(        500,0x214);
  295.          
  296.           CAN_SetMsg(500,0x314);
  297.        
  298.           CAN_SetMsg((int32_t) -500/17.8*12,0x414);
  299.                
  300.                 }
  301.                 else
  302.                 {
  303.                        
  304.                 ROBOT_Status.Start_Speed=700;
  305.                 ROBOT_Status.Max_speed=700;
  306.                 ROBOT_Status.NewState=ENABLE;
  307.                 ROBOT_Status.Robot_type= 0 ;
  308.                 ROBOT_Status.Target.x=7450;
  309.                 ROBOT_Status.Target.y=8020.0000-20;
  310.                 ROBOT_Status.Slow_accelerated_speed=500;  //  減速加速度
  311.                 ROBOT_Status.Speedup_accelerated_speed=1000;
  312.                 ROBOT_Status.Target_Speed=0;             //  末端速度
  313.                 ROBOT_Status.Stop_length =0;
  314.                 while(Robot_control_line(&ROBOT_Status))
  315.                 {
  316.                   if(lb_level==1)
  317.                                 break;
  318.                 }
  319.                
  320.                 }
  321.                

  322.         }
  323.         }
  324.                
  325.                
  326.                
復制代碼

所有資料51hei提供下載:
超聲波測試1.3(卡爾曼濾波).7z (238.41 KB, 下載次數: 43)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-3-11 02:01 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

板凳
ID:487397 發表于 2019-3-11 11:07 | 只看該作者
樓主:不給原理圖大家怎么玩呀
回復

使用道具 舉報

地板
ID:334435 發表于 2019-7-31 20:47 | 只看該作者
float R = MeasureNoise_R;    // R:測量噪聲,R增大,動態響應變慢,收斂穩定性變好
float Q = ProcessNiose_Q;    // Q:過程噪聲,Q增大,動態響應變快,收斂穩定性變壞
大佬這些值是怎么給的,設定這些值有什么要求啊,是怎么算出來的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人综合伊人 | 精品一级| 亚洲一区二区在线 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | www.久久.com | 天天干天天色 | 欧美激情精品久久久久久 | 性生生活大片免费看视频 | 在线观看中文字幕 | 高清国产午夜精品久久久久久 | 国产日韩精品一区 | 国产精品美女久久久久aⅴ国产馆 | 成人三级av | 日韩a在线 | 中文成人无字幕乱码精品 | 亚洲视频第一页 | 欧洲妇女成人淫片aaa视频 | 欧美亚洲网站 | 天天操天天干天天爽 | 亚洲精品白浆高清久久久久久 | 精品国产伦一区二区三区观看说明 | 国产一级淫片a直接免费看 免费a网站 | 亚洲综合天堂网 | 男女视频在线看 | 日本精品视频一区二区 | 日韩1区 | 国产精品美女 | 亚洲国产高清免费 | 精品99在线| 亚洲精品一区二区三区四区高清 | 久久久91精品国产一区二区三区 | 超碰av在线 | 色播99| 蜜桃毛片| 91亚洲视频在线 | 欧美午夜影院 | 日本国产高清 | 奇米视频777 | 欧美综合视频 | 免费99视频 |