51uwb.cn

 找回密码
 立即注册
查看: 4068|回复: 1
打印 上一主题 下一主题

追隨小車的傳輸問題

[复制链接]

1

主题

6

帖子

13

积分

新手上路

Rank: 1

积分
13
跳转到指定楼层
楼主
发表于 2020-4-10 14:56:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要做小車的功能,我大概知道功能是,
ANTHOR演算出距離長度傳給TAG,
TAG算出距離角度轉換成符號R,L,F,S再傳給ANTHOR

我比較不清楚的就是ANTHOR傳距離長度給TAG的代碼變數是哪個,還有傳的字串內容
跟TAG回傳給ANTHOR的R,L,F,S的使用的代碼變數是哪一個跟字串內容是什麼
最後是ANTHOR透過UART要傳給我自己的板子的代碼變數跟字串內容
這部分比較不了解

希望能有比較詳細的解說
回复

使用道具 举报

73

主题

249

帖子

7064

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7064
沙发
发表于 2020-4-11 08:13:29 | 只看该作者
1 tag中在static void compute_angle_send_to_anthor0(int distance1, int distance2,int distance3) 根据距离,计算角度
  1. cos = (dis1*dis1 + dis3_constans* dis3_constans - dis2*dis2)/(2*dis1*dis3_constans);
  2.     angle  = acos(cos)*180/3.1415926;
  3.     printf("cos = %f, arccos = %f\r\n",cos,angle);
  4.     sprintf(dist_str, "angle: %3.2f m", angle);
复制代码
并且拟合出单个字符
  1.   if(dis1 > 1)
  2.     {
  3.         if(angle > 110)
  4.         {
  5.             printf("turn right\r\n");
  6.             angle_msg[10] = 'R';
  7.         }
  8.         else if(angle < 75)
  9.         {
  10.             printf("turn left\r\n");
  11.             angle_msg[10] = 'L';
  12.         }
  13.         else
  14.         {
  15.             printf("forward\r\n");
  16.             angle_msg[10] = 'F';
  17.         }
  18.     }
  19.     else
  20.     {
  21.         printf("stay here\r\n");
  22.         angle_msg[10] = 'S';
  23.     }
复制代码
最后通过无线发送给基站0
  1.     dwt_writetxdata(sizeof(angle_msg), angle_msg, 0);
  2.     dwt_writetxfctrl(sizeof(angle_msg), 0);

  3.     /* Start transmission, indicating that a response is expected so that reception is enabled automatically after the frame is sent and the delay
  4.      * set by dwt_setrxaftertxdelay() has elapsed. */
  5.     dwt_starttx(DWT_START_TX_IMMEDIATE );
  6.     while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))
  7.     { };
复制代码


2 基站收到这个信息发送到串口

  1. else if (memcmp(rx_buffer, angle_msg, ALL_MSG_COMMON_LEN) == 0 && ANCHOR_IND == 0)
  2.             {
  3.                 if(rx_buffer[LOCATION_FLAG_IDX] == 1)//location infomartion
  4.                 {
  5.                     rx_buffer[ALL_MSG_TAG_IDX] = tag_index;
  6.                     USART_puts(&rx_buffer[LOCATION_INFO_START_IDX],rx_buffer[LOCATION_INFO_LEN_IDX]);
  7.                 }
  8.                 else //follow car
  9.                 {
  10.                     putchar(rx_buffer[10]);
  11.                 }
  12.             }
  13.         }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

bphero Inc.  

GMT+8, 2024-11-17 03:18 , Processed in 0.020725 second(s), 4 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表