python寫的ROS雷射雷達扇形濾波

2021-09-26 16:05:11 字數 1651 閱讀 5051

專案中想要實現針對機械人正前方n°的區域有障礙時,對機械人進行速度限制,於是自己做了乙個雷射雷達的扇形濾波。

思路就是獲取/scan話題,將話題資料中的最大和最小角度設定為自己想要的扇區,需要注意的是,laserscan一般預設的座標系與機械人方向相反,a1雷達的背面是laser座標系的正方向——0°角位置

在使用python時,發現laserscan的ranges使用元組來儲存,無法直接修改或刪除,但是可以使用賦值的方式修改,修改資料時還需要注意角度和距離陣列的對應關係。

程式可以通過引數設定扇區的大小。

附上**

class

fliter

:def

__init__

(self)

: rospy.init_node(

'laserscanfliter'

,anonymous=

true

) self.receive_scan = rospy.subscriber(

'/scan'

, laserscan , self.callback)

self.publish_scan = rospy.publisher(

'/scan_range_filter'

,laserscan,queue_size=1)

self.scan_degree = rospy.get_param(

'~degree',6

)def

callback

(self,data)

: new_scan = data

new_scan.angle_min=

3.1415926

-3.1415926

/self.scan_degree*

2#print(new_scan)

ranges=()

range_size =

len(data.ranges)

range_size_pair =

int(range_size/self.scan_degree)

print

(range_size_pair)

for i in

range

(range_size_pair*

(self.scan_degree-1)

,range_size-1)

: ranges +=

(data.ranges[i],)

for i in

range(0

,range_size_pair)

: ranges +=

(data.ranges[i],)

new_scan.ranges=ranges

new_scan.angle_max=new_scan.angle_min+new_scan.angle_increment*

(len

(ranges)-1

) self.publish_scan.publish(new_scan)

雷射雷達 什麼是雷射雷達?

toc 本文引用 雷射雷達和老式雷達對比 來至 雷達 radar 是無線電探測和測距,即用無線電發現目標,並測定他們的空間位置,也稱為 無線電定位 雷達是利用電磁波探測目標的電子裝置。雷達發射電磁波對目標進行照射,並接收其回波,從而獲得目標至電磁波發射點的距離 距離變化率 徑向速度 方位 高度等資訊...

雷射雷達(一) 知名雷射雷達公司

目前大部分企業都以無人車 機械人及無人車領域雷射雷達為主要研究方向。而傳統機械式雷射雷達已逐漸向固態雷射雷達方向轉變。在 方面,無人駕駛領域的雷射雷達少則上萬,多則幾十萬元,普遍要高於機械人及a 等領域 而機械人領域的雷射雷達相對來說售價更低,國內思嵐科技及玩智商等企業已低至上百元。目前在用的就是思...

固態雷射雷達

與傳統機械掃瞄技術的雷達相比,利用光學相控陣掃瞄技術的固態雷射雷達有很多優勢 結構簡單 尺寸小 由於不需要旋轉部件,可以大大壓縮雷達的結構和尺寸,提高使用壽命,並降低成本。標定簡單 機械式雷射雷達由於光學結構固定,適配不同車輛往往需要精密調節其位置和角度,固態雷射雷達可以通過軟體進行調節,大大降低了...