ros机器人和slam从入门到精通
文章平均质量分 50
从学习ros机器人 需要的数学(微积分,线性代数,概率论)基础,linux 基础开始,再到c++和python 的ros 编程,上升到激光slam 算法的学习,视觉slam算法学习
feidaji
这个作者很懒,什么都没留下…
展开
-
Eigen库学习
Eigen 基础部分Eigen 学习笔记(一)_逐梦者-CSDN博客_eigenEigen实现旋转矩阵、旋转向量(轴角)、四元数、欧拉角之间相互转换https://www.cnblogs.com/cc111/p/9354924.htmlEigen库中进行矩阵间的变换https://blog.csdn.net/wangxiao7474/article/details/103613334?utm_medium=distribute.pc_relevant.none-task-blog转载 2021-10-30 15:51:16 · 321 阅读 · 0 评论 -
ROS TF 常用接口函数
tf常见函数接口用法1.广播一个tf消息,transform旋转的组成,由欧拉角转到四元数,平移向量等。tf::TransformBroadcaster baselink_to_laserlink_broadcaster;geometry_msgs::TransformStamped bl_trans; //这个格式又是什么组成的bl_trans.header.stamp = ros::Time::now();bl_trans.header.frame_id = "base_link"原创 2021-09-13 09:52:04 · 2268 阅读 · 0 评论 -
gmapping源码分析2——粒子滤波
第一: 粒子定义/**所有粒子的滤波结构体数组*/typedef std::vector<Particle> ParticleVector; ParticleVector m_particles;/** 粒子滤波器中的粒子结构体 每个粒子有自己的地图、位姿、权重、轨迹* 轨迹是按照时间顺序排列的,叶子节点表示最近的节点*/ struct Particle{ //给定两个地图 一个高分辨率地图 一个低分辨率地图 Partic原创 2021-03-09 16:10:56 · 890 阅读 · 0 评论 -
teb_local_planner 参数调试
TEB参数调试:https://blog.csdn.net/Fourier_Legend/article/details/89398485原创 2020-03-28 09:56:17 · 3977 阅读 · 1 评论 -
cartographer_ros 代码分析1
cartographer ROS代码为两大部分:cartographer和cartographer_ros。cartographer主要负责处理来自雷达、IMU、里程计的数据并基于这些数据进行地图的构建,是cartographer理论的底层实现。cartographer_ros 则基于ros的通信机制获取传感器的数据并将它们转换成cartographer中定义的格式传递给cartographe...原创 2020-03-10 16:13:06 · 754 阅读 · 0 评论 -
机器人局部路径规划算法——动态窗口发dwa
原文地址:https://congleetea.github.io/blog/2019/09/05/motion-plan-dwa/概述动态窗口法(Dynamic Windows Approach) 有以下特点:考虑机器人动力学特性; 考虑机器人惯性; 可以实现高速行驶。根据运动方程的推导,可以把机器人的轨迹看成是两种形式:直线行走和弧线行走。前者 没有角速度,后者有角速度。...转载 2020-02-29 15:07:38 · 3028 阅读 · 0 评论 -
机器人全局路径规划算法——Dijk
原文地址:https://congleetea.github.io/blog/2019/09/06/dijkstra/概述单源最短路径法: 就是从某一个节点到 其他所有节点 的最短路径的计算。 不能处理负权边,但是可以将负权边全部加上一个数变成正数。 适合有向无环图。执行步骤需要的数据结构一个保存图的结构,用于保存节点的邻居关系; 一个保存节点是否已经得到最短路径,找到...转载 2020-02-29 14:53:27 · 1538 阅读 · 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 · 2956 阅读 · 0 评论 -
gmapping 学习1
1.里程计运动模型解析和gmapping中代码分析https://blog.csdn.net/u013019296/article/details/782652242.scanmatch 算法分析https://blog.csdn.net/m0_37350344/article/details/81159413https://blog.csdn.net/m0_37350344...原创 2020-01-08 09:55:10 · 393 阅读 · 0 评论 -
建图时,计算激光点在map坐标系下的坐标
如图所示p是机器人坐标,(x_s, y_s) 是激光雷达在全局坐标系的坐标,(x_zk,y_zk) 是第k束激光末端的坐标原创 2020-01-07 15:52:58 · 647 阅读 · 0 评论 -
gmapping 中一些关键定义
/**所有粒子的滤波结构体数组*/typedef std::vector<Particle> ParticleVector; ParticleVector m_particles;/** 粒子滤波器中的粒子结构体 每个粒子有自己的地图、位姿、权重、轨迹* 轨迹是按照时间顺序排列的,叶子节点表示最近的节点*/struct Particle{ ...原创 2020-01-04 14:57:49 · 429 阅读 · 0 评论 -
cmake 和cmakeList.txt, catkin_make ,catkin_make_isolated总结
cmake 和cmakeList.txt 总结参考网址:https://www.cnblogs.com/lsgxeva/p/9454443.htmlcmake 官网参考程序https://cmake.org/cmake/help/v3.16/add_dependencies为顶层目标引入一个依赖关系。 add_dependencies(target-name depend-t...原创 2019-12-19 15:45:30 · 946 阅读 · 0 评论 -
在ROS 中新添加msg ,但在引用消息msg.h 时编译报错无法找到头文件
首先在CMakeLists.txt,在find_package 中添加 message_generationfind_package(catkin REQUIRED COMPONENTS rviz std_msgs geometry_msgs message_generation)add_message_files( FILES MoveTo...原创 2019-12-18 17:31:20 · 7198 阅读 · 0 评论 -
图优化与g2o通用图优化库入门讲解
图优化与g2o通用图优化库入门图优化是指把一个常规的优化问题,以图(Graph)的形式来表述,图是由顶点(Vertex)和边(Edge)组成的结构,边也可以连接一个顶点(Unary Edge,一元边)、两个顶点(Binary Edge,二元边)或多个顶点(Hyper Edge,多元边)。当一个图中存在连接两个以上顶点的边时,称这个图为超图(Hyper Graph)。而SLAM问题就可以表示成一...原创 2019-12-04 17:44:18 · 1013 阅读 · 0 评论 -
costmap_2d 中计算footprint 的内切圆半径和外切圆半径的函数解析——点到线段的距离计算
计算footprint 的内切圆半径和外切圆半径,用到点到线段的距离,计算方法两个向量的点积等于一个向量在另一个向量的投影 乘以 另一个向量的模点到线段的三种情况如下:/*作用:计算点到线段的距离*参数:pX,pY 是中心点坐标* x0,y0,x1,y2 线段两端的坐标,求点到线段的距离*//**用向量点乘 来计算*/double distanceToLine(do...原创 2019-11-21 18:43:02 · 902 阅读 · 1 评论 -
costmap_2d详解7:costmap_2d.cpp分析
关键变量 unsigned int size_x_; //像素坐标系表示的坐标 unsigned int size_y_; double resolution_; double origin_x_; double origin_y_; unsigned char* costmap_; unsigned char default_value_;关键函数:...原创 2019-11-21 14:08:40 · 2399 阅读 · 1 评论 -
costmap_2d详解6:inflation_layer.cpp 分析
关键参数cell_inflation_radius_ //通过膨胀半径/分辨率得到的膨胀栅格数unsigned char** cached_costs_; double** cached_distances_;关键函数构造函数:void InflationLayer::onInitialize(){ matchSize();}void Inflation...原创 2019-11-21 12:06:32 · 2046 阅读 · 0 评论 -
costmap_2d详解5:static_layer.cpp分析
关键变量 std::string global_frame_; //global_costmap时为map, local_costmap时为odom_combined std::string map_frame_; bool subscribe_to_updates_; bool map_received_; bool has_updated_data_;/**在...原创 2019-11-21 11:52:33 · 1316 阅读 · 0 评论 -
costmap_2d详解4:layered_costmap.cpp 分析
关键变量class Layer;Costmap2D costmap_; //这里是指master costmap地图std::string global_frame_; //global_costmap时为map, local_costmap时为odom_combinedbool rolling_window_; //是否是滚动窗口,global_costmap时为false, lo...原创 2019-11-21 11:39:09 · 1003 阅读 · 0 评论 -
costmap_2d详解3:costmap_2d_ros.cpp
整体概述: Costmap2DROS类,它是move_base 调用costmap_2d 生成代价地图的入口,整体的逻辑都在这里面。Costmap2DROS构造函数,实例化LayeredCostmap的指针,根据yaml配置文件中plugins参数生成相应类型的各个层Layerplugin,并添加到LayeredCostmap的plugins_指针列表中后面使用,调用到各层的初...原创 2019-11-21 11:26:09 · 3378 阅读 · 3 评论 -
costmap_2d详解2:Costmap 代码整体分析
代码文件结构:costmap_2d├── plugins│ ├── beifen-virtualWall_layer.cpp│ ├── inflation_layer.cpp //膨胀层│ ├── obstacle_layer.cpp //动态障碍物层│ ├── simple_layer.cpp│ ├── static_layer.cpp //静态障碍...原创 2019-11-21 11:02:38 · 2192 阅读 · 0 评论 -
costmap_2d详解1:costmap设计理论
Costmap 代价地图设计理论使用gmapping 构建的地图为全局静态地图,要实现导航避障功能,单靠这一张地图是不够安全的,例如在导航过程中突然出现的障碍物(动态障碍物),因此需要对这张地图进行各种加工修饰,使导航避障更安全,而这功能在ROS中是由costmap_2d软件包实现的,该软件包在原始地图上实现了两张新的地图。一个是 local_costmap,另外一个就是global_...原创 2019-11-21 10:46:29 · 3829 阅读 · 0 评论 -
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 · 368 阅读 · 0 评论 -
ros 动态参数服务器和客户端
原文链接:http://www.guyuehome.com/1173ROS中的参数服务器无法在线动态更新,也就是说如果Listener不主动查询参数值,就无法获知Talker是否已经修改了参数。这就对ROS参数服务器的使用造成了很大的局限,很多场景下我们还是需要动态更新参数的机制,例如参数调试、功能切换等,所以ROS提供了另外一个非常有用的功能包——dynamic_reconfigure...转载 2019-09-16 14:48:16 · 1192 阅读 · 1 评论 -
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 · 792 阅读 · 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 · 294 阅读 · 0 评论 -
linux 软件安装及删除
dpkg 安装卸载软件关键目录/var/lib/dpkg 安装.deb 软件sudo dpkg -i test.deb删除卸载.deb软件sudo dpkg -r test//查看软件test 是否为rm删除状态dpkg -l test//把软件包的配置文件清除sudo dpkg -P test...原创 2019-09-12 16:10:58 · 346 阅读 · 0 评论 -
linux 常用命令
1.文件和目录的增删改查指令mkdir feidir //创建新目录touch newfile //创建新文件rm feidir -rf //删除目录rm newfile //删除文件mv feidir adir //修改目录名mv newfile afile //修改文件名cat newfile //查看文件内容gedit newfile //编辑器修改文件...原创 2019-09-12 12:20:00 · 194 阅读 · 0 评论 -
1.知识总纲
涉及的知识总纲:linux ubuntu 知识总结 1.linux 常用指令 2.linux 常用软件 安装及卸载 3.linux 常见问题及解决进阶篇: 4.linux c++ 知识总结 5.qt 开发总结ros 知识总结ros基础知识: 1.ros 发布器,订阅器 2.ros 服务 和客户端 ...原创 2019-09-09 15:15:38 · 145 阅读 · 0 评论