0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ROS中發(fā)布激光掃描消息

新機(jī)器視覺(jué) ? 來(lái)源:機(jī)器視覺(jué)智能檢測(cè) ? 作者:機(jī)器視覺(jué)智能檢測(cè) ? 2022-04-07 10:08 ? 次閱讀


	

激光雷達(dá)工作時(shí)會(huì)先在當(dāng)前位置發(fā)出激光并接收反射光束,解析得到距離信息,而后激光發(fā)射器會(huì)轉(zhuǎn)過(guò)一個(gè)角度分辨率對(duì)應(yīng)的角度再次重復(fù)這個(gè)過(guò)程。

限于物理及機(jī)械方面的限制,激光雷達(dá)通常會(huì)有一部分“盲區(qū)”。使用激光雷達(dá)返回的數(shù)據(jù)通??梢悦枥L出一幅極坐標(biāo)圖,極點(diǎn)位于雷達(dá)掃描中心,0-360°整周圓由掃描區(qū)域及盲區(qū)組成。

在掃描區(qū)域中激光雷達(dá)在每個(gè)角度分辨率對(duì)應(yīng)位置解析出的距離值會(huì)被依次連接起來(lái),這樣,通過(guò)極坐標(biāo)表示就能非常直觀地看到周?chē)矬w的輪廓,激光雷達(dá)掃描范圍示意圖可以參見(jiàn)下圖。

cf45ef16-b604-11ec-aa7f-dac502259ad0.jpg

激光雷達(dá)通常有四個(gè)性能衡量指標(biāo):測(cè)距分辨率、掃描頻率(有時(shí)也用掃描周期)、角度分辨率及可視范圍。

測(cè)距分辨率衡量在一個(gè)給定的距離下測(cè)距的精確程度,通常與距離真實(shí)值相差在5-20mm;掃描頻率衡量激光雷達(dá)完成一次完整掃描的快慢,通常在10Hz及以上;

角度分辨率直接決定激光雷達(dá)一次完整掃描能返回多少個(gè)樣本點(diǎn);可視范圍指激光雷達(dá)完整掃描的廣角,可視范圍之外即為盲區(qū)。

目前,移動(dòng)機(jī)器人的研究中已經(jīng)大量使用激光雷達(dá)輔助機(jī)器人的避障導(dǎo)航。通常激光雷達(dá)會(huì)提供ROS驅(qū)動(dòng),如果沒(méi)有的話我們也可以自己采集激光數(shù)據(jù)后按照ROS中定義的消息格式將信息發(fā)布出去。

首先,輸入下面的指令查看LaserScan消息結(jié)構(gòu):

rosmsg show sensor_msgs/LaserScan

LaserScan消息結(jié)構(gòu)如下:

std_msgs/Header header     
uint32 seq
time stamp      
string frame_id  
# in frame frame_id, angles are measured around 
the positive Z axis (counterclockwise, if Z is up)             
# with zero angle being forward along the x axis                   
float32 angle_min    
# start angle of the scan [rad]float32 angle_max    
# end angle of the scan [rad]float32 angle_increment # angular distance between measurements [rad]
float32 time_increment  
# time between measurements [seconds] - if your scanner             
# is moving, this will be used in interpolating position             
# of 3d pointsfloat32 scan_time    
# time between scans [seconds]
float32 range_min    
# minimum range value [m]float32 range_max    
# maximum range value [m]
float32[] ranges     
# range data [m] (Note: values < range_min or > range_max should be discarded)float32[] intensities  
# intensity data [device-specific units]. If your device does not provide intensities, please leave the array empty.

以下圖為例,該激光雷達(dá)掃描范圍為270°,角度分辨率為0.25°,掃描距離為0~20m,每掃描一圈會(huì)得到1081個(gè)點(diǎn):

cf5f3f2a-b604-11ec-aa7f-dac502259ad0.jpg

那么該激光雷達(dá)發(fā)布的LaserScan消息內(nèi)容如下:

angle_min= -135 * (pi/180);    
//angle correspond to FIRST beam in scan ( in rad)angle_max= 135 * (pi/180);    
//angle correspond to LAST beam in scan ( in rad)angle_increment =0.25 * (pi/180); 
// Angular resolution i.e angle between 2 beams
// lets assume sensor gives 50 scans per second. i.e every 20 milli seconds 1 scan with 1081 beams.
// Each beam is measured in (20 ms/ 1081 ) ~ = 0.0185 mstime_increment = (1 / 50) / (1081); 
scan_time = ;  
// scan is collected at which timerange_min =0 ;  
// in metersrange_max = 20; 
// scan can measure upto this range// ranges is array of 1081 floats for each laser beamranges[0] =   
//distance measure corresponds to angle -135 degranges[1] =   
//distance measure corresponds to angle -134.75 deg  
.  
.  
.ranges[1080] =  
//distance measure corresponds to angle +135 deg
// To understand Intensities // if a laser beam hits reflective surface like glass it will have intensity 1. 
// And if beam hit some surface which absorbs laser , then intensity is zero. 
// Middle values are different surfaces in between.

下面的代碼模擬了激光雷達(dá)的數(shù)據(jù),并將sensor_msgs/LaserScan消息發(fā)布到/scan話題上:

#include #include 
int main(int argc, char** argv){  
ros::init(argc, argv, "laser_scan_publisher");  
ros::NodeHandle n;
  ros::Publisher scan_pub = n.advertise("scan", 50);
  unsigned int num_readings = 100;  
double laser_frequency = 40;  
double ranges[num_readings];  
double intensities[num_readings];  
int count = 0;
  ros::Rate r(1.0);
  while(n.ok())  
{    
//generate some fake data for our laser scan    
for(unsigned int i = 0; i < num_readings; ++i)    
{      
ranges[i] = count;      
intensities[i] = 100 + count;    
}    
ros::Time scan_time = ros::now();
    //populate the LaserScan message    
sensor_msgs::LaserScan scan;    
scan.header.stamp = scan_time;    
scan.header.frame_id = "base_link";    
scan.angle_min = -1.57;    
scan.angle_max = 1.57;    
scan.angle_increment = 3.14 / num_readings;    
scan.time_increment = (1 / laser_frequency) / (num_readings);    
scan.range_min = 0.0;    
scan.range_max = 100.0;    
scan.ranges.resize(num_readings);    
scan.intensities.resize(num_readings);    
for(unsigned int i = 0; i < num_readings; ++i)    
{      
scan.ranges[i] = ranges[i];      
scan.intensities[i] = intensities[i];    
}
    
scan_pub.publish(scan);
    ++count;    
r.sleep();  
}}

可以在rviz中將激光數(shù)據(jù)點(diǎn)顯示出來(lái):Fixed Frame修改為base_link,添加LaserScan并將Topic設(shè)為/scan

cf75df3c-b604-11ec-aa7f-dac502259ad0.gif

如果Fixed Frame為map,為了能正確顯示出激光掃描點(diǎn)來(lái),需要發(fā)布map和base_link之間的坐標(biāo)變換關(guān)系(因?yàn)槲覀兊募す鈹?shù)據(jù)是相對(duì)于base_link坐標(biāo)系描述的)。

如果這兩個(gè)參考系不發(fā)生相對(duì)位置變化,那么可以用static_transform_publisher工具發(fā)布兩個(gè)參考系之間的靜態(tài)坐標(biāo)變換。

命令的格式如下:

static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_msstatic_transform_publisher x y z qx qy qz qw frame_id  child_frame_id period_in_ms

以上兩種命令格式,需要設(shè)置坐標(biāo)的偏移和旋轉(zhuǎn)參數(shù),偏移參數(shù)都使用相對(duì)于x、y、z三軸的坐標(biāo)位移。旋轉(zhuǎn)參數(shù)第一種命令格式使用以弧度為單位的 yaw/pitch/roll三個(gè)角度,第二種命令格式使用四元數(shù)表達(dá)旋轉(zhuǎn)角度。發(fā)布頻率以ms為單位,一般100ms比較合適。

static_transform_publisheris designed both as a command-line tool for manual use, as well as for use withinroslaunchfiles for setting static transforms. For example:

"tf" type="static_transform_publisher" 
name="link1_broadcaster" 
args="1 0 0 0 0 0 1 link1_parent link1 100" />

ROS中使用激光雷達(dá)(鐳神智能)

LS01C是深圳市鐳神智能系統(tǒng)有限公司研發(fā)的激光三角測(cè)距系統(tǒng) 。

在機(jī)械旋轉(zhuǎn)模塊的帶動(dòng)下,LS01C 的高頻核心測(cè)距模塊將進(jìn)行順時(shí)鐘旋轉(zhuǎn),從而實(shí)現(xiàn)對(duì)周?chē)h(huán)境進(jìn)行360°掃描測(cè)距。LS01C通過(guò)uart 串口信號(hào)與外部系統(tǒng)通訊,默認(rèn)每秒采樣3600點(diǎn)、掃描頻率10hz,最大掃描距離6m,角度分辨率為1度。

將LS01C的ROS驅(qū)動(dòng)文件(官網(wǎng)上沒(méi)有下載連接,直接打電話給客服要的)解壓重命名為talker后復(fù)制到catkin_ws/src下面,然后使用catkin_make進(jìn)行編譯

cf9b2260-b604-11ec-aa7f-dac502259ad0.png

插入USB后在終端中輸入以下命令查看USB轉(zhuǎn)串口設(shè)備:

cfb1dd84-b604-11ec-aa7f-dac502259ad0.png

在發(fā)現(xiàn)ttyUSB0后在終端中輸入下面命令給USB 轉(zhuǎn)串口設(shè)置權(quán)限:

sudo chmod 666 /dev/ttyUSB0

修改launch文件中的串口名,改為我們插入的ttyUSB0

  "talker" pkg="talker" type="talker">    
"scan_topic" value="scan"/>          "laser_link" value="laser_link"/>       
"serial_port" value="/dev/ttyUSB0"/>   

然后執(zhí)行l(wèi)aunch文件

roslaunch talker talker.launch

在終端中可以看到talker節(jié)點(diǎn)已經(jīng)開(kāi)啟:

cfcb636c-b604-11ec-aa7f-dac502259ad0.png

打開(kāi)rviz,添加LaserScan并設(shè)置topic和參考坐標(biāo)系,可以動(dòng)態(tài)的顯示激光掃描點(diǎn):

cfdc7062-b604-11ec-aa7f-dac502259ad0.gif

還可以通過(guò) rostopic hz命令查看激光數(shù)據(jù)發(fā)布頻率,可以看出其頻率為10Hz

cff04056-b604-11ec-aa7f-dac502259ad0.png ?

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 激光掃描
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    11467
  • 激光雷達(dá)
    +關(guān)注

    關(guān)注

    968

    文章

    4001

    瀏覽量

    190130

原文標(biāo)題:ROS中發(fā)布激光掃描消息

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CASAIM三維掃描激光掃描甘蔗尺寸外觀檢測(cè)

    激光掃描
    中科院廣州電子
    發(fā)布于 :2025年01月02日 14:27:04

    CASAIM三維激光掃描工件尺寸外觀尺寸 #機(jī)械制造 #三維掃描

    激光掃描
    中科院廣州電子
    發(fā)布于 :2025年01月02日 14:25:45

    如何將三維激光掃描儀與BIM結(jié)合使用

    將三維激光掃描儀與BIM(建筑信息模型)結(jié)合使用,可以充分發(fā)揮兩者的優(yōu)勢(shì),提高工程測(cè)量的精度和效率。以下是將三維激光掃描儀與BIM結(jié)合使用的具體步驟和注意事項(xiàng): 一、前期準(zhǔn)備 確定
    的頭像 發(fā)表于 11-28 10:18 ?328次閱讀

    三維激光掃描儀使用技巧 三維激光掃描儀測(cè)量精度分析

    三維激光掃描儀使用技巧 三維激光掃描儀的使用技巧涵蓋了多個(gè)方面,旨在確保掃描過(guò)程的準(zhǔn)確性和高效性。以下是一些關(guān)鍵的使用技巧: 穩(wěn)定操作環(huán)境
    的頭像 發(fā)表于 11-28 10:07 ?368次閱讀

    三維激光掃描儀應(yīng)用領(lǐng)域 三維激光掃描儀與傳統(tǒng)測(cè)量工具比較

    三維激光掃描儀應(yīng)用領(lǐng)域 三維激光掃描儀因其高精度、高效率和非接觸式的測(cè)量方式,在多個(gè)領(lǐng)域得到了廣泛應(yīng)用: 測(cè)繪領(lǐng)域 :用于地形、公路鐵路、河道及建筑基地的測(cè)繪,提供精確的空間數(shù)據(jù)。 工
    的頭像 發(fā)表于 11-28 10:04 ?374次閱讀

    創(chuàng)想智控激光掃描技術(shù)在管道行業(yè)馬鞍口工件智能焊接的應(yīng)用

    操作難度大、焊接質(zhì)量難以控制等問(wèn)題,創(chuàng)想智控焊縫激光掃描技術(shù)為管道行業(yè)帶來(lái)了全新解決方案,今天一起來(lái)了解創(chuàng)想智控激光掃描技術(shù)在管道行業(yè)馬鞍口工件智能焊接的應(yīng)用。 ??焊接
    的頭像 發(fā)表于 11-16 15:33 ?250次閱讀
    創(chuàng)想智控<b class='flag-5'>激光</b><b class='flag-5'>掃描</b>技術(shù)在管道行業(yè)馬鞍口工件智能焊接的應(yīng)用

    蔡司激光三維掃描儀有效掃描金屬材料

    蔡司激光三維掃描儀因其高精度和多功能性,在工業(yè)檢測(cè)、逆向工程、質(zhì)量控制等領(lǐng)域得到了廣泛應(yīng)用。對(duì)于金屬材料的掃描,用戶常常關(guān)心的是ZEISS激光三維
    的頭像 發(fā)表于 09-26 15:08 ?499次閱讀
    蔡司<b class='flag-5'>激光</b>三維<b class='flag-5'>掃描</b>儀有效<b class='flag-5'>掃描</b>金屬材料

    使用邏輯和轉(zhuǎn)換優(yōu)化機(jī)械掃描激光雷達(dá)

    電子發(fā)燒友網(wǎng)站提供《使用邏輯和轉(zhuǎn)換優(yōu)化機(jī)械掃描激光雷達(dá).pdf》資料免費(fèi)下載
    發(fā)表于 09-03 09:27 ?0次下載
    使用邏輯和轉(zhuǎn)換優(yōu)化機(jī)械<b class='flag-5'>掃描</b><b class='flag-5'>激光</b>雷達(dá)

    lidar激光雷達(dá)掃描儀有什么用

    LiDAR(Light Detection and Ranging,激光探測(cè)與測(cè)距)是一種利用激光技術(shù)進(jìn)行距離測(cè)量和成像的技術(shù)。LiDAR激光雷達(dá)掃描儀具有高精度、高分辨率、快速
    的頭像 發(fā)表于 08-29 16:58 ?924次閱讀

    泰來(lái)三維| 手持三維激光掃描儀三維掃描人體建模

    激光掃描
    泰來(lái)三維
    發(fā)布于 :2024年08月13日 16:39:43

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布

    SD啟動(dòng)卡插至評(píng)估板Micro SD卡槽。亦可通過(guò)SD升級(jí)卡或USB固化方式將系統(tǒng)固化至eMMC。 基于Python語(yǔ)言的通信演示 案例功能:基于Python語(yǔ)言,啟動(dòng)ROS節(jié)點(diǎn)發(fā)布與訂閱消息,實(shí)現(xiàn)
    發(fā)表于 07-09 11:38

    深度解析激光掃描共聚焦顯微鏡:揭示材料表面粗糙度的新視角

    激光掃描共聚焦顯微鏡在材料表征和研究中發(fā)揮著關(guān)鍵作用。其基于光學(xué)共軛共焦原理,結(jié)合精密縱向掃描,具有高分辨率、三維成像、表面粗糙度分析和非接觸性質(zhì),能在樣品表面進(jìn)行快速點(diǎn)
    發(fā)表于 04-16 10:44 ?0次下載

    手持式激光三維掃描儀原理和應(yīng)用

    手持式激光三維掃描儀是集光學(xué)、機(jī)電和計(jì)算機(jī)技術(shù)于一體的高新無(wú)損檢測(cè)技術(shù),能夠?qū)?shí)物的空間外形、結(jié)構(gòu)乃至色彩進(jìn)行掃描,將立體信息轉(zhuǎn)換為計(jì)算機(jī)能直接處理的數(shù)字信號(hào),獲得物體表面的準(zhǔn)確空間坐標(biāo),為實(shí)物
    的頭像 發(fā)表于 03-27 16:44 ?1935次閱讀
    手持式<b class='flag-5'>激光</b>三維<b class='flag-5'>掃描</b>儀原理和應(yīng)用

    壓電偏轉(zhuǎn)鏡在激光快速掃描系統(tǒng)控制中的應(yīng)用

    激光快速掃描系統(tǒng)在半導(dǎo)體技術(shù)、航空航天、生物醫(yī)學(xué)、納米科學(xué)研究等領(lǐng)域得到了越來(lái)越多的應(yīng)用,同時(shí)對(duì)其性能要求也越來(lái)越高,受其體積,掃描頻率,掃描精度、
    的頭像 發(fā)表于 03-14 10:19 ?959次閱讀
    壓電偏轉(zhuǎn)鏡在<b class='flag-5'>激光</b>快速<b class='flag-5'>掃描</b>系統(tǒng)控制中的應(yīng)用

    系統(tǒng)鏡像Ubuntu_ROS2中ROS2是什么意思,帶有ROS2開(kāi)發(fā)環(huán)境嗎?

    請(qǐng)問(wèn)一下,百度文庫(kù)資料里面,下圖所示的系統(tǒng)鏡像Ubuntu_ROS2中ROS2是什么意思,帶有ROS2開(kāi)發(fā)環(huán)境嗎?與前面4GB版本的鏡像有什么區(qū)別?
    發(fā)表于 03-01 23:06