![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
slam
文章平均质量分 52
feidaji
这个作者很懒,什么都没留下…
展开
-
gmapping源码分析2——粒子滤波
第一: 粒子定义/**所有粒子的滤波结构体数组*/typedef std::vector<Particle> ParticleVector; ParticleVector m_particles;/** 粒子滤波器中的粒子结构体 每个粒子有自己的地图、位姿、权重、轨迹* 轨迹是按照时间顺序排列的,叶子节点表示最近的节点*/ struct Particle{ //给定两个地图 一个高分辨率地图 一个低分辨率地图 Partic原创 2021-03-09 16:10:56 · 897 阅读 · 0 评论 -
slam学习(1)——卡尔曼滤波
卡尔曼滤波作用 根据机器人上个时刻的状态估计出这个时刻的机器人状态(估计值)。然后根据在这一时刻传感器的观测值,来纠正更新估计值,等到更精准的置信值前提假设1. 卡尔曼滤波算法认为当前状态与上一时刻的状态是线性关系,即由于这个式子中包含噪声,所以无法准确的求出当前状态 ,但是我们可以求出 的概率分布,然后把这个概率分布的均值作为当前状态的估计,卡尔曼滤波就是根据这个思想,它算在当前的观测数据条件下的...原创 2020-08-07 15:19:45 · 1337 阅读 · 1 评论 -
cartograhper 中IMU 消息发布需要注意的东西
const imu_data_t* imu = &info->imu_data;//这里除以100 是由协议规定的,因为芯片为了防止传输浮点型数据,先乘以100后再传输的,//因此在stm32上获取数据后,需要除以100.0 才是真是的数据float yaw = imu->yaw/100.0f; float roll = imu->roll/100.0f;float pitch = imu->pitch/100.0f;//imu 芯片数据中的坐标系是左手定则,..原创 2020-06-17 19:32:59 · 815 阅读 · 2 评论 -
cartographer_ros 代码分析1
cartographer ROS代码为两大部分:cartographer和cartographer_ros。cartographer主要负责处理来自雷达、IMU、里程计的数据并基于这些数据进行地图的构建,是cartographer理论的底层实现。cartographer_ros 则基于ros的通信机制获取传感器的数据并将它们转换成cartographer中定义的格式传递给cartographe...原创 2020-03-10 16:13:06 · 762 阅读 · 0 评论 -
机器人局部路径规划算法——动态窗口发dwa
原文地址:https://congleetea.github.io/blog/2019/09/05/motion-plan-dwa/概述动态窗口法(Dynamic Windows Approach) 有以下特点:考虑机器人动力学特性; 考虑机器人惯性; 可以实现高速行驶。根据运动方程的推导,可以把机器人的轨迹看成是两种形式:直线行走和弧线行走。前者 没有角速度,后者有角速度。...转载 2020-02-29 15:07:38 · 3050 阅读 · 0 评论 -
机器人全局路径规划算法——Dijk
原文地址:https://congleetea.github.io/blog/2019/09/06/dijkstra/概述单源最短路径法: 就是从某一个节点到 其他所有节点 的最短路径的计算。 不能处理负权边,但是可以将负权边全部加上一个数变成正数。 适合有向无环图。执行步骤需要的数据结构一个保存图的结构,用于保存节点的邻居关系; 一个保存节点是否已经得到最短路径,找到...转载 2020-02-29 14:53:27 · 1551 阅读 · 0 评论 -
机器人全局路径规划算法——A*
A* 寻路算法原文地址:http://www.gamedev.net/reference/articles/article2003.asp概述虽然掌握了A*算法的人认为它容易,但是对于初学者来说,A*算法还是很复杂的。搜索区域(The Search Area)我们假设某人要从A点移动到B点,但是这两点之间被一堵墙隔开。如图1,绿色是A,红色是B,中...转载 2020-02-29 14:47:32 · 2982 阅读 · 0 评论 -
建图时,计算激光点在map坐标系下的坐标
如图所示p是机器人坐标,(x_s, y_s) 是激光雷达在全局坐标系的坐标,(x_zk,y_zk) 是第k束激光末端的坐标原创 2020-01-07 15:52:58 · 654 阅读 · 0 评论 -
泰勒公式,雅可比矩阵,海塞矩阵,牛顿法
泰勒公式泰勒公式是一个在函数上取某点的近似值,如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的近似值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差泰勒公式是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)的n次多项式来逼近函数的方法。若函数f(x)在包含x0的某个闭区间[a,b]上具有...转载 2019-12-04 14:10:43 · 4105 阅读 · 1 评论 -
ros 有用的调试指令
1. 往move_base 中发布目标点坐标,导航rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped \ '{header: {frame_id: "map"},pose: {position:{x: -1.28911646366 ,y: 1.25881594308 ,z: 0.138},orientation: {x: ...原创 2019-09-16 15:28:28 · 379 阅读 · 0 评论 -
ros 动态参数服务器和客户端
原文链接:http://www.guyuehome.com/1173ROS中的参数服务器无法在线动态更新,也就是说如果Listener不主动查询参数值,就无法获知Talker是否已经修改了参数。这就对ROS参数服务器的使用造成了很大的局限,很多场景下我们还是需要动态更新参数的机制,例如参数调试、功能切换等,所以ROS提供了另外一个非常有用的功能包——dynamic_reconfigure...转载 2019-09-16 14:48:16 · 1222 阅读 · 1 评论 -
mrpt slam 安装编译
原文:https://blog.csdn.net/shanpenghui/article/details/79259794 过程有些细节要注意,还是记录一下吧。1.先安装cmake非常重要,否则如果用Ubuntu 14.04.5 的sudo apt-get install cmake 只能是3.2.2版本,会有点旧导致编译不过,要重装的话会导致indigo重装。安装高版本的cmake要...转载 2018-11-16 11:57:37 · 734 阅读 · 0 评论 -
ros navigation 导航框架简介
各功能包介绍 amcl:amcl的作用是根据机器人自身的里程数值以及地图特征,利用粒子滤波修正机器人在已知的地图内的位置 base_local_planner: 局部路径规划器 dwa_local_planner:也是局部路径规划器,使用动态窗口法 carrot_planner: 很简单的全局路径规划器,生成的路径为目标点到机器人当前点的连线上的点 cle...原创 2019-02-27 09:17:11 · 3401 阅读 · 0 评论 -
cartographer 安装编译
Ubuntu16.04 环境依赖sudo apt-get install -y \clang \g++ \git \google-mock \libboost-all-dev \libcairo2-dev \libcurl4-openssl-dev \libeigen3-dev \l...原创 2019-03-13 09:42:49 · 1156 阅读 · 0 评论 -
cartographer 代码分析
5.1激光数据处理流程1.入口文件:node_main.cc入口函数main,如下图: ::ros::init(argc, argv, "cartographer_node"); ::ros::start(); cartographer_ros::ScopedRosLogSink ros_log_sink; carto...原创 2019-03-13 09:43:44 · 804 阅读 · 0 评论 -
4.Cartographer ros配置参数介绍
map_frame用于发布submaps的ROS坐标系ID,位姿的父坐标系,通常使用“map”tracking_frame由SLAM算法追踪的ROS坐标系ID,如果使用IMU,应该使用其坐标系,通常选择是 “imu_link”published_frame用于发布位姿子坐标系的ROS坐标系ID,例如“odom”坐标系,如果一个“odom”坐标系由系统的不同部分提供,在这种情况下...原创 2019-03-13 09:45:56 · 2100 阅读 · 0 评论 -
robot_pose_ekf 代码流程详解
odom_estimation_node.cpp中步骤1: main.cpp 中OdomEstimationNode my_filter_node;步骤2:构造函数OdomEstimationNode 中 //ekf filter,OdomEstimation,创建系统模型和测量更新模型my_filter_.setOutputFrame(output_frame_);my_fil...原创 2019-03-30 10:40:29 · 2544 阅读 · 3 评论 -
NVIDIA显卡驱动安装和ZED摄像头驱动安装及使用
ZED驱动安装及使用说明步骤1:安装nvidia 显卡驱动1).到英伟达官网搜索,下载电脑相应的显卡驱动.run文件https://www.nvidia.com/Download/index.aspx?lang=en-us2).卸载原先的所有驱动:#for case1: original driver installed by apt-get:sudo apt-get remo...原创 2019-06-18 10:52:44 · 2796 阅读 · 0 评论 -
ros 发布器和订阅器
发布器节点:talker.cpp#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv){/**初始化ROS。它允许ROS通过命令行进行名称重映射。同样,也在这里指定节点的名称——必须唯一。这里的名称必须是一个base n...原创 2019-09-16 11:34:55 · 303 阅读 · 0 评论 -
ros 动作服务器和客户端
编写服务端ActionServer(响应)节点vim fibonacci_server.cpp添加内容如下#include <ros/ros.h>/*用于实现简单操作的操作库*/#include <actionlib/server/simple_action_server.h>/*这是从FibonacciAction.msg文件自动生成的标头*/#in...原创 2019-09-16 14:39:55 · 803 阅读 · 0 评论 -
激光slam 理论详解(一)
什么是slam 技术 slam (Simultaneous Localization and Mapping)叫即时定位与建图,它主要的作用是让机器人在未知的环境中,完成定位(Localization),建图(Mapping)和路径规划(Navigation)。激光slam简要介绍 主流的slam技术应用有两种,分别是激光slam(基于激光雷达lidar 来建图导航)和视觉sla...原创 2018-11-12 15:51:30 · 19151 阅读 · 2 评论