激光雷达学习笔记-------Ubuntu 18.04 + 思岚科技 A1M8+ ROS 上手使用及基于hector_slam 建图
一,在虛擬機環境上搭建環境
-
官方提供了純?C++和ROS節點兩種形式的SDK,ROS版SDK中已經包含了C++的SDK(版本稍晚),不需要單獨下載C++版本的SDK。
-
這里我們主要使用ROS來測試,從官網的github克隆倉庫到我們的ROS工作空間的src下,然后編譯工作空間:
編譯成功后的顯示為:
?測試是否成功:
利用rosrun或者roslaunch的時候,可能出現tab鍵按下沒有提示出我們新增的節點或launch文件的情況,比如上述SDK編譯完,輸入roslaunch rp然后按tab應該會自動補全剩下的lidar_ros,可是系統沒有補全。原因可能有三個:
1,沒有source setup
2,沒有加入ros環境變量
3,沒有更新目錄
解決方法:
前兩個原因的解決方法為:
通過編輯 ~/.zshrc(對應zsh)或者 ~/.bashrc (對應bash) 在后面添加如下兩條語句來解決,不需要每次在命令行下source,注意工作空間的名字換成你自己的。
方法一: source ~/catkin_ws/devel/setup.sh 方法二: export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws/src 方法三(和方法二的效果等同): echo “source ~/turtlebot_ws/devel/setup.bash” >> ~/.bashrc source ~/.bashrc如果上述已經完成,仍然不能自動補全,使用下面的命令來更新目錄:
?
再次測試,就可以成功了:
二、在虛擬機上的使用
查看rplidar串口的權限:
ls -l /dev |grep ttyUSB添加寫入權限:(如/dev/ttyUSB0)
sudo chmod 666 /dev/ttyUSB0有兩種方法可以運行 rplidar ros 包
2.1 運行rplidar節點,在rviz中查看
roslaunch rplidar_ros view_rplidar.launch您應該在 rviz 中看到 rplidar 的掃描結果。
2.2 運行 rplidar 節點并使用測試應用程序查看
開兩個端口 roslaunch rplidar_ros rplidar.launch rosrun rplidar_ros rplidarNodeClient?運行的結果為:
?運行過程中,重新插入激光雷達的時候報錯誤:
解決辦法:
ls -l /dev |grep ttyUSB sudo chmod 666 /dev/ttyUSB0如果不想每次這么麻煩,需要更改rplidar串口的權限,可以重新映射USB串口,操作方法為:
在rplidar_ros功能包路徑下,安裝 USB 端口重映射,在激光雷達的根目錄下,執行下面的語句:
./scripts/create_udev_rules.sh使用以下命令修改重映射:
ls -l /dev | grep ttyUSB更改 USB 端口重新映射后,更改有關 serial_port 值的啟動文件。即將所有launch文件中的和serial_port 相關的,usb的串口信息更改為:rplidar,
更改了文件之后需要進行重新編譯,這樣下次啟動激光雷達就不需要再執行上面的命令了:
$ catkin_make 編譯通過后,加入環境變量 $ source devel/setup.bash三、基于hector_slam 建圖
第一步:安裝hector_slam
$ sudo apt-get install ros-melodic-hector-slam備注:如果想看源碼使用源碼包編譯的方法為:
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git?注意:只能使用一個。源碼和代碼安裝,否則會出問題,我這里直接使用命令安裝的
第二步:在思嵐激光的ros包的launch文件包中創建新的launch文件,命名slam.launch
<launch><node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"> <!-- Frame names --> <param name="pub_map_odom_transform" value="true"/> <param name="map_frame" value="map" /> <param name="base_frame" value="base_link" /> <param name="odom_frame" value="base_link" /><!-- Tf use --> <param name="use_tf_scan_transformation" value="true"/> <param name="use_tf_pose_start_estimate" value="false"/><!-- Map size / start point --> <param name="map_resolution" value="0.05"/> <param name="map_size" value="2048"/> <param name="map_start_x" value="0.5"/> <param name="map_start_y" value="0.5" /> <param name="laser_z_min_value" value = "-1.0" /> <param name="laser_z_max_value" value = "1.0" /> <param name="map_multi_res_levels" value="2" /><param name="map_pub_period" value="2" /> <param name="laser_min_dist" value="0.4" /> <param name="laser_max_dist" value="5.5" /> <param name="output_timing" value="false" /> <param name="pub_map_scanmatch_transform" value="true" /> <!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />--><!-- Map update parameters --> <param name="update_factor_free" value="0.4"/> <param name="update_factor_occupied" value="0.7" /> <param name="map_update_distance_thresh" value="0.2"/> <param name="map_update_angle_thresh" value="0.06" /><!-- Advertising config --> <param name="advertise_map_service" value="true"/> <param name="scan_subscriber_queue_size" value="5"/> <param name="scan_topic" value="scan"/> </node><node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/><node pkg="rviz" type="rviz" name="rviz"args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/></launch> $ cd ~/catkin_ws/src/rplidar_ros/launch/ $ touch slam.launch第三步編譯:
$ catkin_make 編譯通過后,加入環境變量 $ source devel/setup.bash第四步運行:
$ roslaunch rplidar_ros rplidar.launch $ roslaunch rplidar_ros slam.launch執行的結果為:?
?第五步:保存地圖
首先安裝:
sudo apt-get install ros-kinetic-map-server執行;
rosrun map_server map_saver -f ~/my_map總結
以上是生活随笔為你收集整理的激光雷达学习笔记-------Ubuntu 18.04 + 思岚科技 A1M8+ ROS 上手使用及基于hector_slam 建图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 202102 sqlplus comm
- 下一篇: “加入收藏”代码