技术标签: 激光雷达
我使用的激光雷达都是日本产北阳电机公司Hokuyo的产品,URG04LX和UTM-30LX。UTM-30LX的价格贵一些,10买的时候大概3W,现在taobao价貌似已经涨到5W了,当然URG04LX也涨价了,09年买的时候是1W,只是不知道现在涨到了多少。
URG-04LX基本参数:
[model]
UTM-30LX(Hokuyo Automatic Co.,Ltd.)
[frontStep]
540
[minDistance]
23
[maxDistance]
60000
[motorSpeed]
2400
[totalSteps]
1440
[captureMode]
GD_Capture_mode
[scanMsec]
25
[startStep]
0
[endStep]
1080
[serialNumber]
00904066
[timestamp]
793464
[logtime]
2013:1:12:15:6:32:312
[scan]
392;397;398;400;403;403;407;409;409;409;411;411;422;424;424;422;420;420;420;427;428;435;436;439;440;444;449;449;449;449;454;454;456;462;463;463;463;459;456;451;449;445;444;439;439;433;433;433;433;431;431;430;430;425;425;422;425;425;433;437;437;433;433;425;421;409;395;391;391;389;384;383;378;378;378;378;377;377;377;376;377;376;376;367;367;367;367;368;371;371;371;371;371;370;370;372;369;369;372;372;371;371;371;369;369;365;365;364;363;357;357;357;357;353;359;359;353;353;352;344;341;339;339;339;339;339;341;334;332;331;331;331;331;331;331;331;330;330;330;330;330;329;329;329;326;323;323;323;329;329;329;327;323;322;319;319;319;319;319;320;322;321;322;322;328;323;325;325;325;324;324;317;315;315;316;315;316;321;321;314;318;314;308;303;303;303;317;317;317;317;314;314;314;314;311;308;308;310;310;316;316;316;315;310;310;312;312;317;317;317;317;313;313;313;313;316;316;315;315;315;315;314;314;317;317;317;319;321;320;320;320;319;317;317;319;317;317;315;315;315;316;324;324;324;318;318;318;325;332;332;332;332;332;330;331;333;331;331;331;330;328;327;327;328;328;328;328;328;328;325;325;326;326;326;330;330;331;330;337;337;337;338;340;338;338;338;337;336;336;336;335;336;350;350;350;350;350;345;343;343;341;343;343;347;346;350;350;352;352;357;357;357;357;357;357;364;357;367;367;366;364;366;366;370;370;370;370;370;370;378;378;379;380;380;379;379;380;379;379;382;384;382;382;384;380;380;384;386;388;388;388;383;383;383;389;394;395;395;396;394;396;396;406;410;410;413;413;413;413;421;421;426;427;427;428;429;429;432;432;439;442;451;451;454;457;458;460;468;472;489;492;495;495;493;495;507;512;522;524;533;546;585;614;614;614;611;602;602;598;590;590;591;591;594;596;596;596;598;596;589;589;589;589;590;590;594;594;594;592;592;587;577;570;559;556;552;552;552;551;551;541;541;539;539;538;534;534;534;534;536;536;533;526;526;526;524;524;524;512;510;510;510;510;510;508;477;467;462;453;449;445;434;434;420;410;403;388;387;386;377;346;342;337;325;325;321;315;294;294;292;281;277;262;257;242;218;180;173;172;170;170;170;170;170;171;171;171;172;174;172;171;172;171;170;170;177;170;170;174;170;170;170;174;175;176;187;187;176;176;180;174;180;184;184;179;179;178;178;176;176;179;185;180;181;181;180;180;177;177;177;180;182;182;182;182;180;178;180;183;183;186;186;186;187;188;188;188;188;186;186;186;187;188;188;190;188;187;187;189;189;189;189;189;188;188;188;188;195;196;195;194;195;194;194;201;201;199;199;199;199;198;198;198;195;192;190;190;190;190;196;197;197;197;194;193;193;192;193;193;194;194;196;198;198;198;198;198;198;194;194;194;194;194;197;197;197;192;192;192;194;205;205;205;193;189;189;189;210;210;210;213;213;332;506;627;860;907;958;980;1031;1043;1111;1117;1117;1117;1000;986;985;985;985;981;981;978;971;970;970;970;970;976;976;977;977;981;981;981;945;945;945;946;956;970;975;979;979;975;948;933;920;898;859;836;823;814;799;799;794;794;793;793;789;773;748;745;736;732;727;727;727;727;729;743;744;744;744;742;729;725;711;706;706;706;708;699;698;693;690;689;688;684;675;668;665;660;660;660;660;659;659;649;644;644;646;649;647;649;647;647;634;631;631;634;628;628;625;623;622;615;601;601;601;601;601;601;589;589;589;589;590;590;590;583;583;583;580;576;576;575;575;577;577;572;569;568;567;567;568;566;568;568;566;566;561;561;561;559;557;557;557;561;562;562;561;557;557;557;559;559;560;561;561;561;561;563;563;561;561;561;559;556;556;556;562;562;562;556;556;552;552;550;547;543;547;548;548;555;555;555;553;553;547;547;547;547;547;542;541;541;541;548;551;558;558;552;552;558;559;561;564;564;564;567;567;567;568;568;570;568;568;570;573;573;573;573;568;567;568;565;565;567;573;567;567;566;566;566;574;574;574;568;568;568;570;572;572;572;573;569;569;569;573;575;579;579;579;582;581;581;585;587;587;587;585;581;581;581;586;586;586;586;586;586;597;605;605;607;610;612;612;613;620;623;625;629;645;648;650;650;650;645;638;638;638;645;647;647;647;647;647;647;674;695;696;696;696;695;681;681;696;701;737;814;880;880;880;860;828;799;791;764;737;735;723;723;723;722;722;722;722;723;728;733;733;733;711;705;683;677;672;671;669;668;662;641;641;639;634;630;630;612;606;606;609;606;606;590;585;578;578;575;575;560;560;556;551;549;548;547;538;536;535;520;520;517;515;513;509;503;489;489;490;490;490;490;485;479;465;465;465;468;468;468;458;457;448;448;446;440;440;439;431;405;405;405;413;416;419;419;418;416;418;418;418;416;408;408;408;410;410;410;403;396
[timestamp]
793514
[logtime]
2013:1:12:15:6:32:351
[scan]
[]内记录属性名,下一行会记录属性的内容,这个在读取的时候是非常的方便的。到[scan]不是文件结束了,而是后面又是一大串的数据,然后继续往下记录一帧一帧的数据。
%根据ubh文件的特点,进行读取
%1 读取各个属性
% Search for number of string matches per line.
% fid = fopen('ring.ubh', 'rt');
fid = fopen('utm30LX.ubh', 'rt');
lineNumber = 0;
while feof(fid) ==0
tline = fgetl(fid);
switch(tline)
case '[model]'
model = fgetl(fid); %sscanf(fgetl(fid),'%d')
case '[frontStep]'
frontStep = sscanf(fgetl(fid),'%d');
case '[minDistance]'
minDistance = sscanf(fgetl(fid),'%d');
case '[maxDistance]'
maxDistance = sscanf(fgetl(fid),'%d');
case '[motorSpeed]'
motorSpeed = sscanf(fgetl(fid),'%d');
case '[totalSteps]'
totalSteps = sscanf(fgetl(fid),'%d');
case '[captureMode]'
captureMode = fgetl(fid);
case '[scanMsec]'
scanMsec = fgetl(fid);
case '[startStep]'
startStep = sscanf(fgetl(fid),'%d');
case '[endStep]'
endStep = sscanf(fgetl(fid),'%d');
case '[serialNumber]'
serialNumber = fgetl(fid);
case '[timestamp]'
frontStep = sscanf(fgetl(fid),'%d');
case '[logtime]'
frontStep = sscanf(fgetl(fid),'%d');
case '[scan]'
[rho,count] = sscanf(fgetl(fid),'%d;');
%数据显示
rho = rho';
length = size(rho,2);
theta = 1:length;
polar(theta/4*pi/180,rho);
pause(0.25);
%对数据进行处理
otherwise
%disp('parameter init...');
end
lineNumber = lineNumber+1;
disp(lineNumber);
% if lineNumber >100
% break;
% end
end
fclose(fid);
显示效果如下:
%将ubh文件拆分成一个一个的CSV文件
%根据ubh文件的特点,进行读取
%1 读取各个属性
% Search for number of string matches per line.
fid = fopen('utm30LX.ubh', 'rt');
lineNumber = 0;
fileName = 'data_0.csv';
frameCnt = 0;
while feof(fid) ==0
tline = fgetl(fid);
switch(tline)
case '[model]'
model = fgetl(fid); %sscanf(fgetl(fid),'%d')
case '[frontStep]'
frontStep = sscanf(fgetl(fid),'%d');
case '[minDistance]'
minDistance = sscanf(fgetl(fid),'%d');
case '[maxDistance]'
maxDistance = sscanf(fgetl(fid),'%d');
case '[motorSpeed]'
motorSpeed = sscanf(fgetl(fid),'%d');
case '[totalSteps]'
totalSteps = sscanf(fgetl(fid),'%d');
case '[captureMode]'
captureMode = fgetl(fid);
case '[scanMsec]'
scanMsec = fgetl(fid);
case '[startStep]'
startStep = sscanf(fgetl(fid),'%d');
case '[endStep]'
endStep = sscanf(fgetl(fid),'%d');
case '[serialNumber]'
serialNumber = fgetl(fid);
case '[timestamp]'
frontStep = sscanf(fgetl(fid),'%d');
case '[logtime]'
frontStep = sscanf(fgetl(fid),'%d');
case '[scan]'
[rho,count] = sscanf(fgetl(fid),'%d;');
%将数据写入文件
fileName = sprintf('data_%d.csv',frameCnt);
fidw = fopen(fileName,'w');
fprintf(fidw,'%d,',rho);
fclose(fidw);
frameCnt = frameCnt + 1;
%数据显示
% rho = rho';
% length = size(rho,2);
% theta = ((1:length)/4 - 45)*pi/180;
% polar(theta,rho);
% pause(0.1);
%对数据进行处理
otherwise
%disp('parameter init...');
end
lineNumber = lineNumber+1;
disp(lineNumber);
% if lineNumber >100
% break;
% end
end
fclose(fid);
#pragma once
#include <iostream>
#include <cmath>
#include<cv.h>
#include<highgui.h>
using namespace std;
#include <vector>
static int RadarImageWdith = 600;
static int RadarImageHeight = 600;
class OpenRadar
{
public:
OpenRadar(void);
~OpenRadar(void);
vector<int>RadarRho;
//数据读取
bool RadarRead(char *fileName);
void CreateRadarImage(IplImage* RadarImage);
};
OpenRadar.cpp
#include "OpenRadar.h"
#define pi 3.141592653
OpenRadar::OpenRadar(void)
{
}
OpenRadar::~OpenRadar(void)
{
}
bool OpenRadar::RadarRead(char *fileName){
FILE* fp = NULL;
int dis = 0;
int totalCnt = 0;
fp = fopen(fileName,"r");
if (fp == NULL)
{
//cout<<"failed to read"<<endl;
return false;
}else {
//cout<<"successed to read"<<endl;
RadarRho.clear();
while(!feof(fp))
{
fscanf(fp, "%d, ", &dis);
RadarRho.push_back(dis);
//printf("%d ", dis);
}
//cout<<"Total Count: "<<RadarRho.size()<<endl;
}
fclose(fp);
return true;
}
void OpenRadar::CreateRadarImage(IplImage* RadarImage){
//RadarImage = cvCreateImage(cvSize(RadarImageWdith,RadarImageHeight),IPL_DEPTH_8U,1);
cvZero(RadarImage);
//在中心加上一个圆心
cvCircle(RadarImage, cvPoint(RadarImageWdith/2,RadarImageHeight/2),3, CV_RGB(0,255,255), -1, 8,0);
int x,y;
double theta,rho;
unsigned char * pPixel = 0;
int halfWidth = RadarImageWdith/2;
int halfHeight = RadarImageHeight/2;
for (int i = 0; i < RadarRho.size();i++)
{
theta = (i/4.0 - 45)*pi/180;
rho = RadarRho.at(i);
x = (int)(rho*cos(theta)/5) + halfWidth;
y = (int)(-rho*sin(theta)/5)+ halfHeight;
if (x >= 0 && x < RadarImageWdith && y >= 0 && y < RadarImageHeight)
{
pPixel = (unsigned char*)RadarImage->imageData + y*RadarImage->widthStep + 3*x+2;
*pPixel = 255;
}else{
//cout<<"x: "<<x<<" y: "<<y<<endl;
}
}
}
main.cpp
#include"OpenRadar.h"
#include <iostream>
#include <cmath>
#include "io.h"
using namespace std;
const int MAX_POINT_COUNT = 1200;
int Rho[MAX_POINT_COUNT] = {0};
int main(){
OpenRadar openRadar;
char fileName[32] = "csv\\data_0.csv";
int frameCnt = 0;
char key;
IplImage* RadarImage = cvCreateImage(cvSize(RadarImageWdith,RadarImageHeight),IPL_DEPTH_8U,3);
while (access(fileName,0) == 0)
{
sprintf(fileName,"csv\\data_%d.csv",frameCnt);
openRadar.RadarRead(fileName);
openRadar.CreateRadarImage(RadarImage);
cvNamedWindow("Radar",1);
cvShowImage("Radar",RadarImage);
key = cvWaitKey(30);
if (key == 27)//esc退出
{
break;
}
frameCnt++;
}
cvReleaseImage(&RadarImage);
cvDestroyWindow("Radar");
return 0;
}
文章浏览阅读2.4k次。中学信息技术考试练习系统——安徽省版根据《信息技术初中信息技术学业水平考试说明》而设计制作,为信息技术普通初中信息技术考试专用练习系统。中学信息技术考试练习系统——安徽省版软件特点考试试卷包括选择题、判断题、Word、Excel、PPT操作等题型。◇试题内容符合普通初中信息技术考试要求。◇练习系统作答环境和操作方式与普通初中信息技术考试一致。◇练习系统分为单元练习和模拟考场,单元练习按类别练习,模..._安徽省计算机水平模拟考试系统
文章浏览阅读52次。http://taro0.blog.51cto.com/6253667/1723491 转载于:https://blog.51cto.com/yanjiu/1761367_bash:./kalinethunter:拒绝许可
文章浏览阅读601次。1. 使用 redux 的异步 action 时浏览器报错:Error: Actions must be plain objects. Use custom middleware for async actions.【原因】没有添加 thunk 中间件【解决方法】在入口文件中添加中间件,并在 createStore 时进行注册:import thunkMiddlew..._definition for rule 'jsx-a11y/html-has-lang' was not found
文章浏览阅读4.3k次,点赞3次,收藏9次。简单过了下不同文件类型和使用方法,着重尝试了Lora,毕竟是当前阶段最火的东西。接下来会逐步深入学习其他技术。_sd vae怎么安装
文章浏览阅读931次,点赞2次,收藏4次。[转载链接]https://www.cnblogs.com/codezpc/p/12696813.html1.问题如下:2.解决方案:进入tomcat安装目录下的conf目录下的logging.properties文件比如我的路径E:\apache-tomcat-9.0.30\conf\logging.properties修改这个句柄,将原来的UTF-8改成GBK即可1catalina.org.apache.juli.AsyncFileHandler.level = FINE1catalin_tomcat catakina log乱码
文章浏览阅读2.2w次,点赞11次,收藏30次。- job_name: 'BJ Linux Server' basic_auth: username: prometheus password: 123456 static_configs: - targets: ['192.168.179.99:9100'] labels: idc: tongniu project: www - job_name: 'Shanghai Linux Server' ..._prometheus label
文章浏览阅读2.2k次,点赞3次,收藏13次。此次实现目的:1.芯片上电启动时发送“Hello Word!2.发送给芯片的数据,芯片又通过串口发送回来。一、选定所使用的串口二、配置串口1.配置串口的I/O2.配置串口参数属性3.配置串口中断4.串口中断在哪里处理5.串口如何发送字符串三、封装串口配置库文件1.创建头文件(.h)文件2.创建源文件(.c)文件_stm32f407 iar
文章浏览阅读1.2w次,点赞2次,收藏6次。一、什么是语言?语言(英文名:Language)是人类最重要的交际工具,是人们进行沟通交流的主要表达方式。人们借助语言保存和传递人类文明的成果。语言是民族的重要特征之一。一般来说,各个民族都有自己的语言。汉语,法语,俄语,西班牙语,阿拉伯语,英语是世界上的主要语言,也是联合国的工作语言。汉语是世界上使用人口最多的语言,世界语和英语是世界上使用最广泛的语言。据德国出版的《语言学及语言交际工具问题手册_语言是什么
文章浏览阅读142次。In the preference in the , we typically based on the past picking way: as outlined by the recommendation in the skilled individual in the exact same marketplace, the suggestion of salesman in raymond ...
文章浏览阅读1.9k次,点赞4次,收藏61次。要做好floorplan需要掌握哪些知识跟技能?首先熟悉data flow对摆floorplan 有好处,对于减少chip的congestion 是有帮助的,但是也不是必需的,尤其是EDA工具快速发展的当今,比如Innovus 最新的MP特性,可以自动对cell和macro 一起做place,结果相当不错,省了很多事情。其次,需要了解 design的 power mesh,工艺的..._route_fix_sigoff_drc
文章浏览阅读8.9k次,点赞2次,收藏2次。运行下以下命令 rm -rf ~/.config/google-chrome此时再打开就可以正常使用了_ubuntu打不开chorme[35079:35079:0315/095950.320055:error:gbm_wrapper.cc(76)]
文章浏览阅读698次。想要开通微信刷脸支付,有着两种不同的开通途径。微信刷脸支付怎么设置?下面让小马哥为您解答!(一)在微信APP上开通刷脸支付。在微信APP里打开“钱包”,点击右上角,选中并点击“支付管理”。在弹出的页面中点击“面容支付”即可开通刷脸支付。(如没有找到入口,请退出微信后重新登录进行刷新)(二)在专门的微信刷脸支付支付设备“青蛙”上开通。在“青蛙”上首次使用刷脸支付的时候,就可以开通刷脸支付。..._苹果13怎么设置刷脸支付