6.ROS&PX4–无人机A1激光雷达SLAM部署

一、常见2D SLAM算法

Gmapping
Hector_SLAM
Cartographer

Gmapping

基于粒子滤波的2D激光雷达SLAM,构建二维栅格地图。融合里程计信息,没有回环检测。优点是在小场景中,计算量小,速度较快。缺点是每个粒子都携带一幅地图,无法应对大场景(内存和计算量巨大);如果里程不准或标定参数不准,在长回廊等环境中容易把图建歪。

Hector_Slam

基于优化的算法(解最小二乘问题),优缺点:不需要里程计,但对于雷达帧率要求很高40Hz,估计6自由度位姿,可以适应空中或者地面不平坦的情况。初值的选择对结果影响很大,所以要求雷达帧率较高。

Cartographer

cartographerr是google推出的一套基于图优化的SLAM算法,累计误差较前两种算法低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。

二、测试A1:

cd catkin_ws/src
git clone https://github.com/slamtec/rplidar_ros.git
cd ..
catkin_make
roslaunch rplidar_ros view_rplidar.launch

出现Rviz激光雷达点云界面,产品正常

三、部署Hector_Slam

创建hector_slam环境:

#安装hector-slam算法库
sudo apt-get install ros-noetic-hector-slam
#部署算法到ROS工作目录
cd ~/catkin_ws/src
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
cd ~/catkin_ws
#编译程序
catkin_make

实现SLAM:

1.创建Slam启动运行文件
#创建Hector_Slam_Demo.launch的Slam启动运行文件
touch  ~/catkin_ws/src/rplidar_ros/launch/Hector_Slam_Demo.launch

Hector_Slam_Demo.launch代码:

<launch><node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"><!-- Frame names --><!--第一句使得我们能获得map与odom的坐标系变换,这样才能根据地图获得激光雷达目前在地图中的位姿;--><!--然后由于没有里程计,因此odom_frame也设置为base_link就可以了--><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 --><!-- 第一句设置地图图片分辨率,0.05m/pix; --><!-- 第二句为图片大小; --><!-- 三四句为初始点在图片中的位置,这里为中间 --><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 --> <!-- 第一句设置发布地图的服务,第二句设置读取激光雷达数据的队列长度,第三句设置从哪个topic读取激光雷达是数据 -->       <param name="advertise_map_service" value="true"/><param name="scan_subscriber_queue_size" value="5"/><param name="scan_topic" value="scan"/></node><!-- Advertising config --> <!-- 这里直接启动了一个tf中的static_transform_publisher,用来发布base_link与激光雷达的位姿关系 --> <!-- args前三个0代表相对位移,后三个0代表转动的欧拉角,然后写出两个相对的坐标系名称,最后一个100是100ms发布一次 --> <node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/><!-- static_transform_publisher具体写法格式如下(两种形式)--> <!-- 欧拉角形式:static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms --> <!-- 四元数形式:static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms --> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>
</launch>
2.运行Hector_Slam
#开启A1雷达扫描
roslaunch rplidar_ros rplidar.launch
#开始Hector_SLAM工作,自动开启Rviz建图
roslaunch rplidar_ros Hector_Slam_Demo.launch
3.保存Map:
#安装map-server库
sudo apt-get install ros-noetic-map-server
#保存模型命令
rosrun map_server map_saver -f ~/my_map

此时,我们可以在根目录下获得两个文件,分别是my_map.pgm和my_map.yaml;点击my_map.pgm即可查看刚刚建成的地图,my_map.yaml里存放的是地图相关的信息

6.ROSPX4--Pixhawk无人机+A1激光雷达SLAM部署相关推荐

  1. 图文并茂详细教程之---Pixhawk扩展思岚A1激光雷达实现360°避障

    转载自:https://mp.weixin.qq.com/s/FCBbjAmmn-rMDskIen_i4Q 图文并茂详细教程之---Pixhawk扩展思岚A1激光雷达实现360°避障 原创 CJKK ...

  2. 经典激光雷达SLAM系统:LeGO-LOAM

    作者 | 密斯特李  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/511968459 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨 ...

  3. 无人机利用视觉slam实现位置估计

    无人机利用视觉slam实现室内位置估计 自己近期所做的以及思考的东西 我们实验室买了阿木的p200(带t265)无人机用于无人机的控制研究,通过阿木实验室的ros功能包px4_command可以无脑的 ...

  4. 最近出现的几篇视觉和激光雷达SLAM论文介绍

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨黄浴@知乎 来源丨https://zhuanlan.zhihu.com/p/445358895 ...

  5. Pixhawk无人机扩展教程(4)---使用Dronekit编写一个控制程序

    摘自:https://mp.weixin.qq.com/s/P1EVjYiZ_bS_Mmm9EyEX3g Pixhawk无人机扩展教程(4)---使用Dronekit编写一个控制程序 原创 CJKK ...

  6. 代码开源!激光雷达 SLAM 的闭环检测:OverlapNet

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 最近,德国波恩大学Photogrammetry and Robotics Lab新开源了用于激光雷达S ...

  7. 语义信息增强的激光雷达SLAM

    作者简介 本次深蓝学院公开课由陈谢沅澧博士主讲.陈谢沅澧来自德国波恩大学图像测量与机器人实验室,导师是Cyrill Stachniss教授,主要方向是激光雷达SLAM,定位以及建图. 德国波恩大学图像 ...

  8. 激光雷达SLAM激光的前端配准算法

    激光雷达SLAM激光的前端配准算法 ICP匹配方法 两组三维点集的最小二乘拟合 ICP匹配方法 两组三维点集的最小二乘拟合 给定两个三维点集: {xi}={x1,x2,-,xN}{pi}={p1,p2 ...

  9. IROS2019 |新开源SuMa++:语义激光雷达SLAM可靠过滤动态物体

    SLAM大牛Cyrill Stachniss组发表在IROS2019的新论文SuMa++: Efficient LiDAR-based Semantic SLAM,已经开源. demo视频: 论文链接 ...

最新文章

  1. ​“后进生”数学学科上演完美逆袭,成最具竞争力专业之一
  2. 操作系统 实验三 进程调度模拟程序
  3. Linux下一个简单守护进程的实现 (Daemon)
  4. Elasticsearch2.x Cluster Health
  5. 如何查看长文本的标识和对象(读长文本)。
  6. redis的基本使用笔记一
  7. 面试题—Redis篇
  8. AOP 还在配置吗改用打标签模式吧!
  9. go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕
  10. java XML解析防止外部实体注入
  11. kaili camera
  12. 【华为云技术分享】处理器存储模型概述(1)
  13. centos7 mysql
  14. LeetCode(1137)——第 N 个泰波那契数(JavaScript)
  15. 你所不知道的程序员,不要再尬黑了
  16. java中接口与抽象类的区别
  17. windows7蓝牙怎么打开_PC版微信v2.7.0曝光:支持电脑上打开小程序
  18. 使用docker-compose 大杀器来部署服务 上(转)
  19. 银联支付退款 php,PHP 银联支付
  20. 如何保障-数据一致性

热门文章

  1. 服务器2008怎么系统盘为d盘,硬盘安装Windows Server 2008(解决系统盘符变成D盘)
  2. swoole 简单加速tp6
  3. 2021年安全员-B证(山东省)考试及安全员-B证(山东省)报名考试
  4. 单例模式(懒汉模式-双检锁、饿汉模式、静态内部类模式)-详细
  5. dubbo负载均衡。
  6. 流量红利消减,酷开系统技术驱动突出重围
  7. 1.用于记录Lightroom的快捷键
  8. 热像仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. Swagger从入门到精通
  10. HDU--2036改革春风吹满地