激光雷达学习笔记-------Ubuntu 18.04 + 思岚科技 A1M8+ ROS 上手使用及基于hector_slam 建图
一,在虚拟机环境上搭建环境官方提供了纯C++和ROS节点两种形式的SDK,ROS版SDK中已经包含了C++的SDK(版本稍晚),不需要单独下载C++版本的SDK。这里我们主要使用ROS来测试,从官网的github克隆仓库到我们的ROS工作空间的src下,然后编译工作空间:$ cd ~/catkin_ws/src$ git clone https://github.com/robopeak/rpli
一,在虚拟机环境上搭建环境
-
官方提供了纯
C++
和ROS
节点两种形式的SDK
,ROS
版SDK
中已经包含了C++
的SDK
(版本稍晚),不需要单独下载C++
版本的SDK
。 -
这里我们主要使用
ROS
来测试,从官网的github
克隆仓库到我们的ROS
工作空间的src
下,然后编译工作空间:
$ cd ~/catkin_ws/src
$ git clone https://github.com/robopeak/rplidar_ros.git
$ cd ..
$ catkin_make
编译通过后,加入环境变量
$ source devel/setup.bash
编译成功后的显示为:
测试是否成功:
利用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
如果上述已经完成,仍然不能自动补全,使用下面的命令来更新目录:
$ rospack profile
再次测试,就可以成功了:
二、在虚拟机上的使用
查看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
更多推荐
所有评论(0)