rplidar的安裝與使用


rplidar的安裝與使用

1、rplidar的安裝
2、RPLIDAR驅動下載
3、將RPLIDAR連接好后,檢測串口是否連接成功
4、編譯工作空間並設置環境變量
5、檢查RPLIDAR A2的串行端口的權限並添加寫權限(都是在RPLIDAR當前路徑下配置的)
6、查看RPLIDAR顯示的圖形
6、進行雷達實時數據的采集,並基於cartographer進行地圖的保存
7、地圖保存
8、雷達相關知識點的擴充
9、常見錯誤
10 基於真實機器人用catrtographer建圖——失敗
11 鏈接參考
12 RPLIDAR坐標系解析
13 實際運用中出現的問題

1、rplidar的安裝

sudo apt-get install ros-kinetic-rplidar-ros

1

2、RPLIDAR驅動下載

打開ROS Wiki網址。下載git源碼.
3、將RPLIDAR連接好后,檢測串口是否連接成功

連接圖片見下圖,用安卓數據線連接電腦usb串口即可
在這里插入圖片描述

lsusb

1

4、編譯工作空間並設置環境變量

~/RPLIDAR$ catkin_make
~/RPLIDAR$ source devel/setup.bash

1
2

5、檢查RPLIDAR A2的串行端口的權限並添加寫權限(都是在RPLIDAR當前路徑下配置的)

~/RPLIDAR$ ls /dev/ttyUSB*
~/RPLIDAR$ sudo chmod 777 /dev/ttyUSB0

1
2

在這里插入圖片描述
感覺下圖中的串口號與上個命令中寫入的串口號應該對應起來——此處有個疑問,一般插入該激光雷達就會顯示USB0嗎?還是也會顯示其他串口號?發現一般默認是USB0.
打開src/rplidar_ros-master/launch/rplidar.launch文件,將 value="/dev/ttyUSB1"/>中的串口改為與以上命令顯示的串口一致即可

<launch>
<node name="rplidarNode" pkg="rplidar_ros" type="rplidarNode" output="screen">
<param name="serial_port" type="string" value="/dev/ttyUSB1"/>
<param name="serial_baudrate" type="int" value="115200"/><!--A1/A2 -->
<!--param name="serial_baudrate" type="int" value="256000"--><!--A3 -->
<param name="frame_id" type="string" value="laser"/>
<param name="inverted" type="bool" value="false"/>
<param name="angle_compensate" type="bool" value="true"/>
</node>
</launch>

1
2
3
4
5
6
7
8
9
10

6、查看RPLIDAR顯示的圖形

roslaunch rplidar_ros view_rplidar.launch

1

在這里插入圖片描述
注意事項:
運行rplidar這一launch命令之前,一定要首先配置一下環境變量(source devel/setup.bash),否則容易出現以下錯誤:
在這里插入圖片描述
6、進行雷達實時數據的采集,並基於cartographer進行地圖的保存

(1)在新終端開啟ROS

roscore

1

(2)運行rplidar ros包 (這是位於在RPLIDAR包的路徑下的指令): #開啟雷達驅動,其不包含rviz節點

cd lc
source devel/setup.bash
roslaunch rplidar_ros rplidar.launch

1
2
3

(3)開啟cartographer節點(在cartographer所在的包目錄下),其包含rviz節點

cd catkin_ws_cartographer
source install_isolated/setup.bash
roslaunch cartographer_ros cartographer_demo_rplidar.launch

1
2
3

7、地圖保存

1)打開雷達驅動所在的文件夾終端,就是進行catkin_make的窗口,設置環境變量,否則后邊無法保存

cd catkin_ws_cartographer
source install_isolated/setup.bash

1
2

此步非常重要,之前就是由於忘記進行操作此步,以至於一直保存地圖不成功
2)完成軌跡, 不接受進一步的數據。

rosservice call /finish_trajectory 0

1

3)序列化保存其當前狀態

rosservice call /write_state "{filename: '${HOME}/lc/20201103map.pbstream'}"

1

在這里插入圖片描述
注意此處的${HOME}表示絕對路徑/home/sdas
在這里插入圖片描述

注意:此步是進行地圖路徑的保存,路徑自己設置就好
4)將pbstream轉換為pgm和yaml

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/lc/mymap -pbstream_filename=${HOME}/lc/20201103map.pbstream -resolution=0.05

1
2

此處的圖片名為mymap。保存路徑在HOME}/lc/mymap
在這里插入圖片描述
注意:3)與4)中設置的地圖保存路徑要完全對應起來
8、雷達相關知識點的擴充

啟動激光雷達節點

rosrun rplidar_ros rplidarNode

1

查看當前節點信息

rostopic list

1

查看更多關於激光雷達發布的信息

rostopic echo /scan

1

9、常見錯誤

運行中出現過串口號無法識別的問題,發現重新換根數據線后就好了
10 基於真實機器人用catrtographer建圖——失敗

(1)機器人端

sdas@sdas-Default-string:~/lc$ roslaunch test navigation_cartographer_map.launch

1

(2)pc端——運行cartographer節點

sdas@sdas-Default-string:~/catkin_ws_cartographer$ roslaunch cartographer_ros cartographer_demo_rplidar.launch

1

11 鏈接參考

RPlidar(一)——雷達試用.
12 RPLIDAR坐標系解析

ROS與RPLIDAR結合使用說明及問題匯總
ROS——RPLIDAR A1 SDK詳解
其測量半徑為12m
在這里插入圖片描述

在這里插入圖片描述
rplidar原始數據輸出是非固定角度增量的輸出形式,rplidar_ros輸出是修正式固定角度增量輸出的數據格式

rplidar_ros 是360全角度輸出的rplidar驅動,如有固定角度需求,請自行添加角度濾波的節點。
(1)基於RPLIDAR將極坐標轉換為平面坐標
在這里插入圖片描述
基於源碼中的sdk訂閱后,輸出的極坐標下的距離與角度值如下:
在這里插入圖片描述
原始數據輸出信息為:
在這里插入圖片描述
其degree的求取方法為

// 基於for循環去除雷達數據中存在的大量的inf或nan的值,將有效數據打印出來
int scan_count= scan_msg->ranges.size();
for (int i = 0; i < scan_count; i++)
{
if(std::isfinite(scan_msg->ranges[i]) )
{
double range=scan_msg->ranges[i];
double angle=scan_msg->angle_min+scan_msg->angle_increment*i;
ROS_INFO("%d,%f,%f",i,angle,scan_msg->ranges[i]);
continue;
}
}

1
2
3
4
5
6
7
8
9
10
11
12

可是此處不明白的是,rplidar-ros對其內部坐標進行了順時針180度的旋轉,可是-180度,-90度對應的是哪個范圍的坐標值呢??????????
后期發現,其內部rplidar_ros已經對其坐標角度進行了相關處理,此時,-180度對應x軸負方向,-90度對應y軸正方向,而x與y軸方向依舊基於RPLIDAR上述中規定的右手坐標系方向即可,此時便可繼續基於上述坐標公式計算就行了,計算出的正負值也可以與其完全對應上
在這里插入圖片描述
13 實際運用中出現的問題

基於RPLIDAR掃描點的過程中,會發現出現點缺失的情況,通過查閱資料分析是激光雷達強度不夠的原因
由於其激光點的能量強度不高,導致當牆面與雷達夾角過大時雷達返回的數據不夠好。
在這里插入圖片描述


原文鏈接:https://blog.csdn.net/qq_41545537/article/details/107791897


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM