ROS源代码分析
文章平均质量分 89
handsome_hhh
这个作者很懒,什么都没留下…
展开
-
ROS-3DSLAM(十六)lvi-sam项目总结
2021SC@SDUSC学习内容概览本次的项目lvi-sam主要分为两个大的模块:lidar模块和visual模块。我们小组学习先进行了lidar模块的学习,然后进行的visual模块。每个模块都分成了若干小的部分,分给每个组员主要负责,学习完成后进行组内交流。我在lidar模块负责的部分是imuPreintegration(imu预积分)和mapOptmization(图优化);visual模块主要负责的是visual_loop(回环检测)。imuPreintegrationimyPreinte原创 2021-12-27 22:36:26 · 3102 阅读 · 11 评论 -
ROS-3DSLAM(十五)lvi-sam源代码阅读13 —— visual_loop阅读6 - 回调函数 + process分析
2021SC@SDUSC(十五)lvi-sam源代码阅读13 —— visual_loop阅读6 - 回调函数 + process分析本次将主要分析loop_detection_node文件中的4个回调函数以及一个并行执行的函数visual_loopmain函数中的订阅话题 以及开启新线程ros::Subscriber sub_image = n.subscribe(IMAGE_TOPIC, 30, image_callback);//以下三个话题在visual_estimator/ut原创 2021-12-25 15:06:53 · 875 阅读 · 0 评论 -
ROS-3DSLAM(十四)lvi-sam源代码阅读12 —— visual_loop阅读5
2021SC@SDUSC(十四)lvi-sam源代码阅读12 —— visual_loop阅读5visual_looploop_detection_node 1继续上次的分析,回到loop_detection_node文件中,loopDetector将项目中预置的二进制字典集加载了进来并进行了初始化。之后的部分,继续读取了另一个文件brief_pattern.yml,里面存储了若干个int数(暂时不知道干啥的)// initialize brief extractorstring brief_原创 2021-12-19 15:48:01 · 586 阅读 · 0 评论 -
ROS-3DSLAM(十三)lvi-sam源代码阅读11 —— visual_loop阅读4 + ORB-SLAM初探
2021SC@SDUSC(十三)lvi-sam源代码阅读11 —— visual_loop阅读4 + ORB-SLAM初探visual_loopDBoW文件夹DBoW内的内容主要跟词袋模型的部分相关,是回环检测中用于匹配回环点的重要步骤。项目中DBoW节点,应用的一个SLAM的模型——ORB-SLAM。所以决定先学习一下ORB-SLAM。对本项目中该部分的分析,考虑后决定按照算法流程来进行分析。楼下是本次博客中分析的内容:在loop_detection_node.cpp中,有读取一个二进制原创 2021-12-12 18:49:33 · 3536 阅读 · 0 评论 -
ROS-3DSLAM(十二)lvi-sam源代码阅读10 —— visual_loop阅读3 + ORB学习
2021SC@SDUSC(十二)lvi-sam源代码阅读10 —— visual_loop阅读3 + ORB学习visual_loopDUtils文件夹DException定义异常信息Timestamp//成员变量 /// Seconds unsigned long m_secs; // seconds /// Microseconds unsigned long m_usecs; // microseconds//主要方法 setTime //设置原创 2021-12-05 01:35:25 · 1330 阅读 · 0 评论 -
ROS-3DSLAM(十一)lvi-sam源代码阅读9
2021SC@SDUSC(十一)lvi-sam源代码阅读9前置知识vins-monolvi-sam的视觉部分是基于vins-mono算法的。所以在阅读开始之前学习以下这个算法是很有必要的。vins-mono github地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono先对整个项目做一个大致的了解,然后重点关注其中的重定位部分Vins-mono是香港科技大学开源的一个VIO算法,用紧耦合的方法,通过单目+IMU恢复出尺度。单纯视觉:原创 2021-11-28 19:13:29 · 691 阅读 · 0 评论 -
ROS-3DSLAM(十)lvi-sam源代码阅读8
2021SC@SDUSC(十)lvi-sam源代码阅读8写在前面本周开始阅读lvi-sam项目中的视觉部分。我主要负责visual_loop,也就是回环检测的部分。前几周一直在阅读lidar部分mapOptmization.cpp,代码量较大所以多花了一些时间,其他队友已经开始了visual部分的进度。mapOptmization部分还有一小部分没有阅读完,为了补齐跟队友的进度,所以先开始了visual部分的阅读,没有阅读完的代码将在之后穿插阅读。作为铺垫,我在上周学习了回环检测的一些前置知识(m原创 2021-11-21 19:23:36 · 1573 阅读 · 0 评论 -
ROS-3DSLAM(九)lvi-sam源代码阅读7
(九)lvi-sam源代码阅读7lidar_odometrymapOptmization.cpplaserInfoHandler对该回调函数的一些零散的分析:关键成员变量历史关键帧位姿:cloudKeyPoses3D cloudKeyPoses6D当前帧位姿:transformTobeMapped前三位是旋转信息 后三位是位置信息当前帧角点、平面点集合:laserCloudCornerLast laserCloudSurfaceLast步骤2中筛选出来的角点、平面点集原创 2021-11-14 21:49:01 · 1582 阅读 · 0 评论 -
ROS-3DSLAM(八)lvi-sam源代码阅读6
(八)lvi-sam源代码阅读6lidar_odometrymapOptmization.cpplaserCloudInfoHandler订阅激光帧点云信息接上篇:4 scan2MapOptimization()scan-to-map优化当前帧位姿void scan2MapOptimization(){ // 如果没有关键帧点云数据 if (cloudKeyPoses3D->points.empty()) return; // 关键点数量大于阈原创 2021-11-07 16:22:53 · 970 阅读 · 0 评论 -
ROS-3DSLAM(七)lvi-sam源代码阅读5
(七)lvi-sam源代码阅读5lidar_odometrymapOptmization.cpp在构造函数中,主要订阅了三个话题;下面主要分析这三个话题的回调函数://订阅当前激光帧点云信息,来自featureExtractionsubLaserCloudInfo = nh.subscribe<lvi_sam::cloud_info>(PROJECT_NAME + "/lidar/feature/cloud_info", 5, &mapOptimization::laserCl原创 2021-11-07 16:21:26 · 1048 阅读 · 2 评论 -
ROS-3DSLAM(六)lvi-sam源代码阅读4
2021SC@SDUSC(六)lvi-sam源代码阅读4lidar_odometrymapOptmization.cpp6D位姿点云结构定义:/* * A point cloud type that has 6D pose info ([x,y,z,roll,pitch,yaw] intensity is time stamp) * 具有 6D 姿态信息的点云类型([x,y,z,roll,pitch,yaw] 强度是时间戳) */struct PointXYZIRPYT原创 2021-10-31 01:41:32 · 903 阅读 · 2 评论 -
ROS-3DSLAM(五)lvi-sam源代码阅读3
2021SC@SDUSC(五)lvi-sam源代码阅读3lidar_odometryimuPreintegration.cpp本次分析主要是对imuHandler函数的分析。里程计的回调函数 odometryHandler/*然后是里程计回调函数。每隔100帧激光里程计,重置ISAM2优化器,添加里程计、速度、偏置先验因子,执行优化。计算前一帧激光里程计与当前帧激光里程计之间的imu预积分量,用前一帧状态施加预积分量得到当前帧初始状态估计,添加来自mapOptimization的当前帧原创 2021-10-22 22:31:46 · 798 阅读 · 0 评论 -
ROS-3DSLAM(四)lvi-sam源代码阅读2
2021SC@SDUSC(四)lvi-sam源代码阅读2lidar_odometryimuPreintegration.cpp本次分析主要是对imuHandler函数的分析。imu的回调函数 imuHandler根据上一次的odom和偏差,用gtsam来估计当下的odom作为imu的位姿,通过静态TF变换求得雷达的位姿,将其逐个发布。如图所示,由于 IMU 的频率比雷达高得多,因此在下一帧点云即时间戳到来之前,会有大量的IMU数据读入,如上图中紫色线条所示,则可以利用这段时间间隔内的IMU测原创 2021-10-17 13:44:25 · 785 阅读 · 0 评论 -
ROS-3DSLAM(三)lvi-sam源代码阅读1
2021SC@SDUSC(三)lvi-sam源代码阅读1lvi-sam项目的代码主要分为两大部分:lidar_odometry(雷达里程计系统)和visual_odometry(视觉历程计系统)。lidar_odometry雷达里程计文件夹下包含4个.cpp文件和1个.h头文件imuPreintegration.cpp头文件部分引用了gtsam库中的很多头文件,首先分析gtsam库。#include <gtsam/geometry/Rot3.h>...#include &原创 2021-10-10 17:04:47 · 1295 阅读 · 0 评论 -
ROS-3DSLAM(二)lvi-sam项目认识
2021SC@SDUSC(二)lvi-sam项目认识一、SLAM简介SLAM是Simultaneous Localization and Mapping(同时定位 + 建图)。独立的定位问题是建立在地图已知的情况下的,单独的建图问题也是建立在定位已知的情况下的。当机器人不能得到环境地图,也不知道自身位姿的时候,SLAM问题就出现了。也就是说SLAM要同时的进行机器人定位和建图,这个问题比单独的定位和单独的建图都要难得多。SLAM算法分为在线SLAM和全SLAM问题。在线SLAM的代表是EFK S原创 2021-10-10 16:52:51 · 3158 阅读 · 11 评论 -
ROS-3DSLAM --开篇:综述
2021SC@SDUSCROS-3DSLAM --开篇:综述文章目录ROS-3DSLAM --开篇:综述一、项目简介二、项目目录三、目标规划和分工四、部分项目的核心代码分析3-geometry-noetic-devel4-geometry2-noetic-devel7-robot_pose_ekf-master8-map_store-hydro-devel9-rivz-noetic-devel11-moveit_msgs五、参考资料六、环境配置和代码下载一、项目简介 ROS是一个开源的元操作原创 2021-09-29 19:16:15 · 868 阅读 · 0 评论 -
ubuntu安装ros系统及遇到的问题总结
2021SC@SDUSCubuntu安装ros系统及遇到的问题总结本次安装以ubuntu18.04安装ros melodic版本为例一、在虚拟机ubuntu18.04系统直接在官网上下载对应的镜像文件即可。二、安装ros具体流程在网站http://wiki.ros.org/melodic/Installation/Ubuntu,本文主要介绍安装过程中遇到的一系列问题以及解决方法。1、添加source.list设置你的电脑以从 packages.ros.org 接收软件。sudo sh -c原创 2021-09-27 13:23:55 · 1513 阅读 · 0 评论