- 博客(20)
- 收藏
- 关注
原创 hdl环境编译
目录1. 前提2. hdl_graph_slam2.1 安装依赖2.2 安装hdl_graph_slam3. hdl_localization4. hdl_people_tracking5. interactive_slam5.1 安装依赖5.2 编译interactive_slam1. 前提在Ubuntu18.04上安装ROS开发环境,版本为melodic。具体安装详见: ROS学习01.初识ROS2. hdl_graph_slamGithub地址:hdl_graph_slam2.1 安装依赖
2020-10-15 16:06:47
1152
1
原创 hdl代码注释02:启动文件的参数含义
目录1. 建图的启动文件hdl_graph_slam_imu.launch参考文献1. 建图的启动文件hdl_graph_slam_imu.launch根据GitHub上的hdl_graph_slam/launch/hdl_graph_slam_imu.launch文件修改而来,添加了imu消息(存疑,不知道有没有起作用,后期需要排查)。修改后,自定义文件hdl_graph_slam_sx.launch的路径如下:hdl_graph_slam/launch/hdl_graph_slam_sx.laun
2020-10-09 16:38:21
1724
3
转载 hdl代码注释01:hdl_graph_slam节点文件功能总览
目录1. prefiltering_nodelet.cpp:点云滤波2. floor_detection_nodelet.cpp:地面平面检测3. scan_matching_odometry_nodelet.cpp:前端里程计4. hdl_graph_slam_nodelet.cpp:后端概率图构建4.1 cloud_callback(const nav_msgs::OdometryConstPtr& odom_msg,constsensor_msgs::PointCloud2::ConstPtr
2020-10-09 10:54:49
1241
转载 hdl_graph_slam源码解读(八):后端优化
目录1. 整体介绍2. 代码详解2.1 前端里程计消息处理2.2 gps消息2.3 imu消息2.4 地面拟合参数2.5 执行图优化2.6 生成地图并定时发送3. 整体思考参考文献1. 整体介绍这部分是整个系统的核心,因为这个系统就是建图的呀,建图的核心就是综合所有信息进行优化呀。我们前面几节介绍的所有的信息都会发送到这个节点中来供它使用。这部分的代码在文件apps/hdl_graph_slam_nodelet.cpp中。这部分的代码看着挺多,如果我们能够对它所有的函数分类,就很容易梳理它的内容了。
2020-09-30 16:16:10
570
转载 hdl_graph_slam源码解读(七):闭环检测
目录1. 整体流程1.1 函数detect的输入输出1.2 函数detect的功能2. 检测满足条件的关键帧3. 闭环匹配4. 一点思考参考文献做slam怎么能少得了闭环。闭环检测的代码在文件include/hdl_graph_slam/loop_detector.hpp中,整个流程分布的很清晰,我们直接进入看代码的环节了1. 整体流程1.1 函数detect的输入输出在调用闭环检测功能时,实际是调用的函数detect,所以我们直接看这个函数,就可以看出它的流程:std::vector<L
2020-09-30 10:30:13
484
转载 hdl_graph_slam源码解读(六):地面检测
目录1. 概述2. 分割地面3. 去掉法向量异常的点4. 拟合平面参数参考文献1. 概述地面检测的作用我们在第一节就讲过了,它为建图提供一个约束,可以提高建图精度。地面检测的代码全都在apps/floor_detection_nodelet.cpp文件中,这是一个节点文件,里面关于订阅和发布数据的内容我们不讲了,只介绍关于检测的核心算法。地面检测共分为三个步骤:根据高度参数把地面分割出来,由函数plane_clip完成把地面点云中,把法向量和地面实际法向量差别较大的点去掉,这一步由函数norm
2020-09-29 18:32:22
1010
原创 工作笔记05:imu、底盘车轮、单激光雷达外参校准(基于hdl_graph_slam建图和定位)
目录1. imu 校准1.1 IMU型号1.2 坐标定义1.2.1 大地坐标系(WGS84)1.2.2 当地地理坐标系(ENU)1.2.3 传感器坐标轴定义1.3 传感器校准2. 底盘车辆参数配置3. 单激光雷达校准参考文献1. imu 校准1.1 IMU型号阅读IMU产品说明书,获得如下信息:Yesense YIS300 系列惯性传感系统YIS300 系列包含:YIS300-U 惯性测量单元(IMU):输出经过校准的加速度和角速度值,同时也能够输出磁场强度信息。YIS300-V 垂直参考系
2020-09-29 16:26:46
3175
1
原创 工作笔记04 安装绍兴车环境(使用hdl进行建图和定位)
目录1. 在Ubuntu18.04上安装ROS开发环境2. 编译程序包2.1 提取程序包2.2 安装ros依赖2.3 安装g2o2.4 编译程序包1. 在Ubuntu18.04上安装ROS开发环境见 工作笔记01.绍兴车环境编译(笔记本模拟编译)中的:0.准备工作1.ubuntu18.04安装ROS运行环境**注意:用户名必须设为 lxr,在后期的程序中涉及文件路径。**否则,自行修改。2. 编译程序包2.1 提取程序包在Ubuntu主文件夹下提取程序包sx_ws.zip,提取出文件夹sx
2020-09-28 16:28:39
906
2
原创 工作笔记03:pcd地图转换成png图片格式(带有XY顶点坐标)
目录1. pcd转ply2. ply转换成xyz3. xyz转rcs4. rcs转png1. pcd转ply安装pcl-toolssudo apt-get install pcl-tools使用如下命令,转成ply文件:pcl_pcd2ply jh_out.pcd jh_in.ply2. ply转换成xyz安装 meshlabsudo apt-get install meshlab打开meshlab,将.ply文件拖入,在软件界面左上角选择导出,保存为.xyz格式。
2020-09-28 09:44:57
2123
转载 hdl_graph_slam源码解读(五):前端里程计
目录1. 选择匹配方法2. 点云匹配3. 一点思考参考文献前端里程计的主要代码在apps/scan_matching_odometry_nodelet.cpp中,它的主要作用是订阅点云、匹配得到位姿,并以odom形式发布位姿。对于订阅发布数据之类的,属于ros的基础内容,我们不在这里介绍了,我们介绍核心内容,即点云配准这部分。点云匹配包括两方面内容:一是根据配置文件选择点云匹配方法二是根据订阅得到的点云去匹配得到位姿。我们把这两方面内容分别介绍。1. 选择匹配方法这个函数在文件src/h
2020-09-24 16:33:24
485
转载 hdl_graph_slam源码解读(四):关键帧
目录1. 整体介绍2. 详细介绍2.1 KeyFrame类2.2 KeyFrameSnapshot类2.3 KeyFrameUpdater类参考文献1. 整体介绍在图优化中,关键帧的作用是不言而喻的,一个关键帧就对应一个顶点。在这个系统中,关键帧对应的文件有两类:src/hdl_graph_slam/keyframe.cpp 和include/hdl_graph_slam/keyframe.hpp它包含KeyFrame和KeyFrameSnapshot两个类。KeyFrame类:对应所有优化
2020-09-24 15:38:31
376
转载 hdl_graph_slam源码解读(三):点云滤波
目录1. 降采样滤波1.1 VOXELGRID1.2 APPROX_VOXELGRID1.3 NONE2. 滤除离群点2.1 StatisticalOutlierRemoval2.2 RadiusOutlierRemoval参考文献点云滤波的内容主要在apps/prefiltering_nodelet.cpp中,主要包括两步滤波,一是降采样,而是滤除离群点,我们分别介绍。1. 降采样滤波代码如下:// select a downsample method (VOXELGRID, APPROX_VOX
2020-09-24 14:48:57
345
转载 hdl_graph_slam源码解读(二):g2o顶点和边的管理
转载自知乎专栏:hdl_graph_slam源码解读(二):g2o顶点和边的管理https://zhuanlan.zhihu.com/p/89056230目录1. 整体分析2. 详解顶点和边2.1 帧间匹配的位姿2.2 闭环检测的位姿2.3 gps的经纬高2.4 imu的角度和加速度2.5 平面检测的信息3. 信息矩阵3.1 帧间匹配的位姿3.2 闭环检测的位姿3.3 gps的经纬高3.4 imu的角度和加速度4. 鲁棒核参考文献先看各个模块的代码,等了解得差不多了,再去看主流程。所以就先分析g2o顶
2020-09-22 16:41:31
1311
2
原创 ROS学习04.ROS中的常用组件
目录4.1 launch启动文件4.1 launch启动文件启动文件(Launch File)是ROS中一种同时启动多个节点的途径,它还可以自动启动ROS Master节点管理器,并且可以实现每个节点的各种配置,为多个节点的操作提供很大便利。...
2020-09-21 14:22:10
1019
转载 备忘01.Ubuntu屏幕旋转(转载)
用命令旋转屏幕:xrandr |grep "\<connected\>"会找到我的screen:eDP-1-1xrandr --output "eDP-1-1" --rotate normal恢复正常显示。xrandr --output "eDP-1-1" --rotate left向左旋转90度xrandr --output "eDP-1-1" --rotate right向右旋转90度xrandr --output "eDP-1-1" --rotate inverted
2020-09-10 18:33:48
486
原创 ROS学习03.ROS基础
目录3.1 第一个ROS例程——小乌龟仿真3.1.1 turtlesim功能包3.1 第一个ROS例程——小乌龟仿真3.1.1 turtlesim功能包该功能包的核心是turtlesim_node节点,提供一个可视化的乌龟仿真器,可以实现很多ROS基础功能的测试。每一个ROS功能包都是一个独立的功能,其中可能包含一个或多个节点,这些功能对外使用话题、服务、参数等作为接口。话题与服务:即功能包中的话题与服务接口参数:功能包中的参数,开发者可以通过命令、程序等方式来获取这些参数并进行修改。tur
2020-09-04 16:47:00
774
原创 ROS学习02.ROS架构
目录2.1 ROS架构设计2.1 ROS架构设计可将其分成3个层次:OS层、中间层、应用层OS层ROS不是一个传统意义上的操作系统,不能直接运行在计算机硬件之上,而是需要依托于Linux系统。在OS层,可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用其它Linux操作系统。中间层由于Linux并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量工作。最重要的是基于TCPROS/UDPROS的通信系统。ROS在基础的TCP/UDP网络之上,进行了再次封装,构成了T
2020-09-04 11:57:46
704
原创 ROS学习01.初识ROS
目录1.1 ROS是什么1.1.1 ROS的起源1.1.2 ROS的设计目标1.1.3 ROS的特点1.2 如何安装ROS1.2.1 操作系统和ROS版本选择1.2.2 配置系统软件源(Ubuntu 软件仓库)参考文献1.1 ROS是什么1.1.1 ROS的起源ROS(Robot Operating System)是一种应用于机器人开发的通用软件框架。它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能。ROS最初应用于斯坦福大学人工智能实验室与机器人技术公Willow Garage合作的个
2020-09-03 14:35:37
752
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人