ROS利用单雷达A1进行cartography建图

一、Hector_slam使用

(1)hector  是一种结合了鲁棒性较好的扫描匹方法2D_SLAM方法和使用惯性传感系统的导航技术。传感器的要求较高,高更新频率小测量噪声的激光扫描仪,不需要里程计。

简单的来说,使用hector来建图需要你的雷达高级一点,(使用A1思LAN)雷达,在手持建图的情况下很容易出现漂移现象

(2)首先连上我们的雷达,这时候需要进行串口配对

sudo dkms remove cp210x/3.0 -k $(uname -r) && sudo dkms install cp210x/3.0 -k $(uname -r) && sudo modprobe cp210x

接着启动雷达的节点

$ roslaunch rplidar_ros rplidar.launch

再来编写slam建图的launch文件
































    



 







  


然后运行编写的launch文件就可以了

roslaunch rplidar_ros hector_slam.launch

在launch文件里需要使用的hector_mapping我们存在外面opt文件里

二、cartgrapher建图

cartographer 功能包
cartographer 功能包已经与ROS集成,但是还没有提供二进制安装包,所以需要采用源码编译的方式进行安装。为了不与已有功能包冲突,最好为 cartographer专门创建一个工作空间,这里我们新创建了一个工作空间catkin_google_ws,然后使用如下步骤下载源码并完成编译,安装参考https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html。
安装工具
wstool是用于管理ROS工作空间的工具,它通过.rosinstall文件规定工作空间的配置。

cartographer建图需要我们新建自己的工作空间

(1)新建工作空间

mkdir -p demo01_ws/src

在demo01下进行初始化 catkin_make

如果初始化出错了 

pip install catkin_make-pkg==0.4.23

接着要在src的文件下创建功能包

cartographer_ws ,在加上依赖的包 rospy..

------------------------------------------------------------------------------

按照官网的教程进行改进,上面直接跳过

mkdir cartographer_ws
cd cartographer_ws
wstool init src

而在src下我们依然需要添加依赖包

cd src
git clone https://github.com/googlecartographer/cartographer_ros.git
git clone https://github.com/googlecartographer/cartographer.git
git clone https://github.com/ceres-solver/ceres-solver.git

上面的是 cartographer_ros cartographer ceres-solver的包,我们可以直接从opt/ros/noteic上面找到复制下来

ROS利用单雷达A1进行cartography建图_第1张图片

 

ros2go里面已经安装好依赖包,我们可以查看一下 依然在 opt/ros/noteic/下面进行查找(因为直接我们就可以跑到了 官方所给的数据包)

里面包括 abseil-cpp protobuf库,我们可以查看一下,但是可以不用搬运进来

rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
安装abseil-cpp库
src/cartographer/scripts/install_abseil.sh
编译与安装
catkin_make_isolated --install --use-ninja

建立完自己的工作空间后就可以进行文件(launch lua)的配置

(2)文件的配置

launch文件夹下的demo_revo_lds.launch是二维建图的demo launch文件

ROS利用单雷达A1进行cartography建图_第2张图片

 核心代码如下,我们可以复制一份回工作空间进行使用


  
  
  
		
    
		
    
  
  
  
  
  
  

这份launch文件只是启动了关键的carto建图节点,看上面这个launch文件默认的文件路径就知道它对应的默认配置文件是 revo_lds.lua 文件,同样,我们可以直接复制一份到我们的工作空间。

根据我们自己机器人的情况更改参数即可,注意要同时把上面launch文件的那两个路径更改成我们存放这个lua的位置(configuration_directory指定文件夹,configuration_basename指定文件名) 

revo_lds.lua这个参数配置文件主要要更改的东西可以参照下面的代码块:

include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
	-- tracking_frame更改为我们机器人的基坐标tf,一般是base_link,
  tracking_frame = "horizontal_laser_link",

	-- 以下四个参数与里程计有关,在下面进行单独说明
  odom_frame = "odom",
  published_frame = "horizontal_laser_link",
  provide_odom_frame = false,
	use_odometry = true,

  publish_frame_projected_to_2d = false,
  use_pose_extrapolator = true,
  use_nav_sat = false,
  use_landmarks = false,
  num_laser_scans = 1,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 1.,
  fixed_frame_pose_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
  landmarks_sampling_ratio = 1.,
}

MAP_BUILDER.use_trajectory_builder_2d = true

TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.3
TRAJECTORY_BUILDER_2D.max_range = 8.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.
-- 决定是否使用imu数据
TRAJECTORY_BUILDER_2D.use_imu_data = false

TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1

POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65

return options

carto建图可以不需要里程计即只靠激光雷达建图

配置完后进行source 

source ./install/setup.bash

(在前面建立工作空间的时候可以直接和前面一样进行catkin_make)

___________________________________________________

-------未完待续

目前问题: 由于系统的包位于总计算机文件下,进行操作时无法直接移动这些包,需要调用功能,并且尝试时,编译有时成功再次尝试时会失败,并且出现  无法识别文件为一个launch文件的错误,等待后续尝试修改

你可能感兴趣的:(ROS,ubuntu,linux,自动驾驶)