关于纯定位模式呢,本人试过2d和3d,怎么说呢,有条件的话,建议直接上3d,因为博主当初在做定位时针对室内和室外都尝试过,2d只在室内环境下效果会很棒,但是在室外就呵呵啦!所以这里直接讲解3d室外定位(建图篇请自己查看我之前的博客:3d建图
看了我之前的博客大概知道配置文件和源文件路径了,我这里就不把路径写出来了,挺麻烦的。直接讲怎么做把,有不懂的留言,看到了我一定知无不言。

  1. 首先,保存地图

    利用之前建好的3d地图,地图格式为map.pbstream的统一格式。不熟悉保存方法的看我之前的博客。3d建图,这里直接跳过。

  2. 第二步,.lua文件的配置(在纯定位时用到的这个文件和建图时文件内容相同,可跳过不看)
    首先,进入配置文件夹里的configuration_files文件夹,新建my_robot_3d.lua文件(你可以复制原本的backpack_3d.lua,然后修改内容).我的文件内容如下:

include "map_builder.lua"
include "trajectory_builder.lua"options = {map_builder = MAP_BUILDER,trajectory_builder = TRAJECTORY_BUILDER,map_frame = "map",tracking_frame = "imu",published_frame = "lidar_mid",odom_frame = "odom",provide_odom_frame = false,publish_frame_projected_to_2d = false,use_pose_extrapolator = false,use_odometry = false,use_nav_sat = false,#这里选择是否用GPS,博主的图建出来效果不错,定位也可以,后面也尝试了加入GPS建图定位,很niceuse_landmarks = false,num_laser_scans = 0,num_multi_echo_laser_scans = 0,num_subdivisions_per_laser_scan = 1,num_point_clouds = 1,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.,
}TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 1MAP_BUILDER.use_trajectory_builder_3d = true
MAP_BUILDER.num_background_threads = 7
POSE_GRAPH.optimization_problem.huber_scale = 5e2
POSE_GRAPH.optimize_every_n_nodes = 320
POSE_GRAPH.constraint_builder.sampling_ratio = 0.03
POSE_GRAPH.optimization_problem.ceres_solver_options.max_num_iterations = 10
POSE_GRAPH.constraint_builder.min_score = 0.62
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.66return options

保存退出到同级目录中,进入urdf文件夹,检查minibus.urdf文件,定位会用到坐标系转换,所以这个文件也是需要的。只要雷达不动,这个文件就不能改动。

3. 第三步,重要文件配置,纯定位接口

文件路径(这里是配置文件路径,改完后需要在源文件路径里找到相同的文件进行修改)

{HOME}/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/backpack_3d_localization.lua

文件内容:

include "my_robot_3d.lua"TRAJECTORY_BUILDER.pure_localization_trimmer = {max_submaps_to_keep = 6,//最大保存子图数,存定位模式通过子图进行定位,但只需要当前和上一个子图即可,我这里设置的是6
}
POSE_GRAPH.optimize_every_n_nodes = 100//每100个有效帧一个子图,子图构建完成要闭环检测一次,这个数越小,闭环检测越频繁,当然CPU爆炸return options

4.纯定位API接口launch文件配置(配置文件和源文件要同步)

路径是:

{HOME}/catkin_cartographer/install_isolated/share/cartographer_ros/launch/demo_backpack_3d_localization.launch

内容是;

<launch><param name="/use_sim_time" value="false" /><param name="robot_description"textfile="$(find cartographer_ros)/urdf/minibus.urdf" /><node name="robot_state_publisher" pkg="robot_state_publisher"type="robot_state_publisher" /><node name="cartographer_node" pkg="cartographer_ros"type="cartographer_node" args="-configuration_directory $(find cartographer_ros)/configuration_files-configuration_basename backpack_3d_localization.lua-load_state_filename $(arg load_state_filename)"output="screen"><remap from="points2" to="/minibus/front/lslidar_point_cloud" />
<!--<remap from="points2_1" to="horizontal_laser_3d" /><remap from="points2_2" to="vertical_laser_3d" />
--></node><node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"type="cartographer_occupancy_grid_node" args="-resolution 0.05" /><node name="rviz" pkg="rviz" type="rviz" required="true"args="-d $(find cartographer_ros)/configuration_files/demo_3d.rviz" /></launch>

5.修改文件occupancy_node_main.cc

这个文件在路径:

/home/heng/catkin_cartographer/src/cartographer_ros/cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc

第171行或者直接搜索下面这行代码:

//occupancy_grid_publisher_.publish(*msg_ptr);

注释掉这行代码,不然你纯定位过程建立的子图会覆盖在之前建好的地图上。

6.检查配置文件和源文件两个文件夹里做了相同的配置之后,保存退出到工作空间路径:

cd ~
cd ~/catkin_cartographer/
catkin_make_isolated --install --use-ninja
source devel_isolated/setup.bash
  1. 仿真测试:
cd ~/catkin_cartographer/
source devel_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_3d_localization.launch load_state_filename:={HOME}/Downloads/mymap.pbstream
这是最终效果,博主是实车测试的,所以只有地图没有数据包,各位可以照着配置进行尝试。当时无人车并未动,3d定位大概花了20s左后就自己定好了位。博主不会插入动图,也不会插入视频,所以把定位好的视频上传到百度云里了,可以自定下载然后看效果
链接: https://pan.baidu.com/s/1PptoGorj8AvRCMtBNozsuA 提取码: yhr8

为了直观,我还是放两张截图吧!在开始定位时,绿色为当前雷达数据,黑色部分为之前建好的地图。

cartographer基于3d地图的纯定位模式相关推荐

  1. 【移动机器人技术】Cartographer使用流程-建图-纯定位-导航

    问题: 1.官方下载地址: 2.官方文档: 安装 参考博文https://blog.csdn.net/weixin_39784658/article/details/99452960 官方安装指导ht ...

  2. 基于百度地图实现Android定位功能实现(详解+教程)

    基于百度地图实现Android定位功能实现(详解+教程) 1.初始化 (一)获取到SHA1 (1)找到View中的Tool Windows并打开Terminal (2)找到你的jdk的bin目录,小编 ...

  3. 基于百度地图实现Android定位功能实现

    基于百度地图实现Android定位功能实现 初始化 一>获取SHA1 二>Android studio 配置 (1)下载百度地图sdk (2)解压安装包 (3)回到刚刚配置的jar包,右击 ...

  4. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  5. 两篇基于语义地图的视觉定位方案:AVP-SLAM和RoadMap

    本文介绍两篇使用语义地图进行视觉定位的论文,两篇论文工程性很强,值得一学. AVP-SLAM是一篇关于自动泊车的视觉定位方案,收录于 IROS 2020.论文链接为:https://arxiv.org ...

  6. RIKIBOT-FX4多线激光雷达用谷歌cartographer构建3D地图

    目录 简介 建图测试遇到的问题 录制数据包 回放数据并构建地图 查看点云地图 关键文件配置 交流方式 简介 上一篇介绍了用多线激光雷达构建用谷歌cartographer算法构建2D地图,这里介绍用多线 ...

  7. 一文详解基于先验地图的视觉定位

    作者丨cc.fy@知乎 来源丨https://zhuanlan.zhihu.com/p/460001686 编辑丨3D视觉工坊 问题定义 给定一份高精度地图或环境模型,给定相机(不限于单目,双目,多目 ...

  8. 室内导航应用程序,基于自研引擎开发3D地图+导航应用-采用蓝牙定位方案

    1.基于蓝牙技术的定位方案 目前室外的全球卫星导航系统(GNSS)应用已经大规模普及,通过应用程序可以为用户提供全天候的3维坐标和速度以及时间信息服务,同时中国自行研制的北斗卫星导航系统也成为了继GP ...

  9. vue+echarts+3D地图 制作大屏

    基于3d地图做的一些效果,首先看下效果图 ​​​​​​​ 准备工作:下载echarts 和3d地图需要用到的依赖包,版本随意就行 ​​​​​​​ 下载依赖之后,在页面引入,引入网上下载的地图json文 ...

  10. ORB_SLAM2 定位模式

    ORB_SLAM2 定位模式 上一篇博客记载了ORB_SLAM2地图保存与加载的过程,本篇博客接着上一篇博客的内容记录在已拥有地图的情况下,ORB_SLAM2定位模式的如何运行. 前提 为了实现纯定位 ...

最新文章

  1. Android之用户定位(二)
  2. 近世代数--整环上的唯一分解问题--唯一分解整环中元素的标准分解式
  3. c语言NULL和0区别
  4. Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)下
  5. 浅析 Redis 复制
  6. 有道云笔记分享_有道云笔记的使用分享
  7. 华大单片机HC32L130J6TA入坑全纪录(一)
  8. 七夕快到了,你怎么还不向我表白?
  9. outlook从服务器中恢复已删除项目,恢复邮箱中的已删除邮件:Exchange 2013 帮助 | Microsoft Docs...
  10. 什么是多态?实现多态的机制是什么?
  11. 国内知名的信息与通讯调查研究咨询公司情况
  12. 14、Spark_RDD算子——CombineByKey_ReduceByKey转换
  13. linkbutton 的启用和禁用
  14. 各种第三方UI组件的引入(Vue)
  15. 分苹果 有A,B两个同学想要分苹果
  16. 5种方法输出10的阶乘
  17. 【拆拆拆】2011年新款15寸MacBook Pro完全拆解
  18. 再见2011,2012不是梦
  19. UVM世界观 (二)
  20. IDA pro 如何nop 掉关键点

热门文章

  1. SSH框架的详细介绍
  2. 自动升级Golang版本
  3. bootstrap菜单html,Bootstrap实现下拉菜单效果
  4. 大一新生HTML期末作业 学生个人网页设计作业 HTML5响应式个人简历网站模板 web前端网页制作课作业
  5. springboot发送垃圾邮件
  6. 计算机语言echo off什么意思,批处理文件的@echo off是什么意思?
  7. 卸载mysql front_完全卸载mysql
  8. 计算机学硕考试时间,考研全年时间表!重要的23个时间点,都帮你整理好了
  9. VS2015如何添加头文件
  10. win7蓝屏0x0000003b解决教程