三面超声波测距及坐标位置转换

打算使用三个超声波测距避障模块部署到机器人智能车上,之间间隔45度角。以笛卡尔坐标系为基准,可以根据每个测出的距离

求出所对应的障碍物的位置。假设车头面向正前方,theta = 90度,那么根据三角函数可求出左右障碍物的位置,这样就可以自己做一个简单的

地图map。代码如下

微信截图_20201215135221.png



#include<iostream>
#include<vector>
#include<array>
#include<cmath>
#include <unistd.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>
#include <sched.h>
#include <errno.h>
#include <string.h>
#include <stdint.h>
#include <iostream> 
#include <string>
#include <vector>
int main()
{
   float theta =90.0;
   float degrees = theta *3.1415/180;
   float c_x = 0.0 + 1.0 * std::cos(degrees); 
   float c_y = 0.0 + 1.0 * std::sin(degrees);
   float l_x = 0.0 + 1.0 * std::cos(degrees +45 *3.1415/180); 
   float l_y = 0.0 + 1.0 * std::sin(degrees +45 *3.1415/180);
   float r_x = 0.0 + 1.0 * std::cos(degrees -45 *3.1415/180); 
   float r_y = 0.0 + 1.0 * std::sin(degrees -45 *3.1415/180);
   printf("theta :%.1f degree \n",theta);
   printf("face:%.1f,%.1f \n",c_x,c_y);
   printf("left:%.1f,%.1f \n",l_x,l_y);
   printf("right:%.1f,%.1f \n",r_x,r_y);

}

theta :90.0 degree 
face:0.0,1.0 
left:-0.7,0.7 
right:0.7,0.7 

sitemap