- 博客(28)
- 收藏
- 关注
原创 无人驾驶-规划-混合A*
一、混合A*算法变更了连通图结构。与A算法在网格上搜索相比,混合A算法额外考虑了θ这一维度,从而将连续的三维(x, y, θ)状态空间网格化。且混合A*使用车辆后轴中心点坐标,使用θ代表车辆位姿。二、混合A*更改了节点拓展方式。假设当前节点Nodecurrent中具体记录着车辆位姿(x, y, θ),混合A算法要求在v, Φ在单位时间1.0秒内采样为某常值,是的车辆以初始状态在单位时间内1.0秒内按照v, Φ行驶,通过前向模拟获得一段始于起点位姿的符合车辆运动学的行车路径,且路径末端位姿落入的三位网格
2022-03-04 22:02:45 2045
转载 无人驾驶-控制-UDP和TCP协议
https://blog.csdn.net/qq_45605223/article/details/105776141
2022-02-28 12:35:15 490
转载 无人驾驶-控制-LQR(运动学)
无人驾驶-控制-LQR(运动学)一、车辆建模二、参考轨迹利用泰勒展开,进行线性化:离散化处理对离散后的式子进行处理,得到X(k+1)的表达式综上:由于系统矩阵A和输入矩阵B的元素随时间变化,所以上述系统是一个线性时变系统。三、LQR控制律设计(1)设计代价函数其中,Q、R就是需要设计的半正定矩阵和正定矩阵。为什么这么设计代价函数?代价函数J 需要达到最小值,那么在t 趋近于无穷时,状态向量x(t)肯定趋近于0,即是达到了系统稳态;同理,t 趋近于无穷时,控制向量u
2022-01-19 23:41:10 2695
转载 无人驾驶-CPP-共享指针
无人驾驶-CPP-共享指针共享指针的用法共享指针 (shared_ptr) 是现在的 Boost 库中提供的,并且应该是将来 C++1x 的标准库中提供的一个模板类。在此之前,ISO/IEC 14882:2003 标准库 中的“自动指针 (auto_ptr)”也有类似的功能。显然 shared_ptr 要比 auto_ptr 从功能上来说应该强大一些。这篇文章主要介绍 shared_ptr 的用法及注意事项。1. shared_ptr 的功能shared_ptr 主要的功能是,管理动态创建的对象的
2022-01-14 01:49:56 214
转载 无人驾驶-规划-深度优先搜索和广度优先搜索
无人驾驶-规划-DFS和BFS一、深度优先搜索1.1 概念深度优先搜索和广度优先搜索,都是图形搜索算法,它两相似,又却不同,在应用上也被用到不同的地方。这里拿一起讨论,方便比较。深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一
2021-12-19 23:22:55 308
转载 无人驾驶-框架-Autoware与Apollo
无人驾驶-框架-Autoware与Apollo一、简介1.1 Apollo介绍Apollo自动驾驶开放平台是一个开放的、完整的、安全的自动驾驶开源平台。代码已经跑通了园区物流、自动泊车、园区接驳、智慧农业、高速物流、健康养老等场景,并稳步面向量产和运营。Apollo推出面向量产的人工智能车联网系统解决方案小度车载OS,具备开放语音、语义、多模交互、车载信息安全、驾驶员检测五大核心能力,可根据需求定制化,实现“千人千面”。1.2 Autoware介绍Autoware是世界上第⼀款⽤于⾃动驾驶汽⻋的“
2021-12-17 11:36:28 2306
转载 ROS-建图-栅格坐标系
ROS-建图-栅格坐标系一、栅格地图参数1.1 像素坐标系下图是一个机器人在实际环境中绘制的二维地图,图片中左下角是地图原点(map.info.origin),在原点上已经标明了这个地图的三维坐标轴,其中红色的代表x轴方向,绿色代表y轴方向。// 此时栅格地图原点为(0, 0)grid_map.info.origin.x = 0;grid_map.info.origin.y = 0;在ROS的地图中,地图是以像素标记的,每一个像素(map.info.resolution)代表0.05m,即
2021-12-12 12:55:04 4890
原创 无人驾驶-建图-坐标系转换
无人驾驶-建图-坐标系转换一、判断三维坐标系旋转正方向的简单方法判断正方向二、二维平面内的坐标旋转变换坐标旋转变换三、姿态旋转矩阵中的正负号和旋转方向正负号和旋转方向四、坐标系之间的旋转平移变换与对应变换矩阵的关系旋转平移转换...
2021-12-07 19:11:17 245
原创 无人驾驶-控制-PID
无人驾驶-控制-PID一、PID简介1.1 详解PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节,它实际上是一种算法。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控
2021-11-22 15:46:34 1798
转载 无人驾驶-建图-Breseham画线算法
无人驾驶-建图-Breseham画线算法一、算法原理DDA算法和Bresenham算法是计算机图形学中绘制直线的两种常用算法。本文具体介绍一下DDA算法和Bresenham算法实现的具体思路。1.1 DDA算法DDA算法主要是根据直线公式y = kx + b来推导出来的,其关键之处在于如何设定单位步进,即一个方向的步进为单位步进,另一个方向的步进必然是小于1。算法的具体思路如下:...
2021-11-16 13:52:39 534
转载 无人驾驶-SLAM定位-GPS+IMU
无人驾驶-定位-GPS+IMU第一章 导航定位技术分类第二章 导航参考坐标系第三章 GPS全球定位系统第四章 惯性导航系统第五章 惯性导航系统模型第六章 惯性导航误差建模第七章 卡尔曼滤波第八章 INS/GPS组合导航第九章 三维简化的INS/GPS组合导航系统参考链接https://blog.csdn.net/saluzi2017/article/details/119753955...
2021-11-14 20:00:11 209
转载 无人驾驶-ROS-message
无人驾驶-ROS-messageros消息类型,即是ros话题的格式,可视为ros的数据类型,基本上是指同一个意思。ros消息类型是基于C++基本类型封装为.msg文件实现,rosmsg指令用于消息管理。一、ros预定义的消息类型所谓预定义消息类型是可以直接引用,不需要自己实现,ros自定义数据类型通常包括两类,一类是在 std_msgs 包下,包含基本数据类型,例如字符型、整型以及浮点型等;一类是在 common_msgs 包下,包含常用的数据类型、例如传感器数据类型、导航数据类型以及几何数据类
2021-11-12 13:25:52 228
转载 无人驾驶-ROS-TF坐标系变换
ROS | TF坐标系变换一、创建功能包在ROS工作空间ROS_ws的src文件夹目录下创建一个功能包,命名为tf_lidar_task,并编译完成。二、节点编程2.1 案例说明广播并监听机器人的坐标变换,已知激光雷达和机器人底盘的坐标关系,求解激光雷达数据在底盘坐标系下的坐标值。2.2 TF坐标系广播器编程在功能包下面的src文件夹目录下创建一个空文件lidar_broadcaster.cpp,并打开所创建的文件,输入以下代码。#include <ros/ros.h>#
2021-11-05 00:01:28 607
转载 无人驾驶-ROS-launch文件
无人驾驶-ROS-launch文件一、launch文件功能之前运行ROS节点都需要先使用roscore命令启动ROS Master,并且单独rosrun命令启动各个ROS节点,而使用launch文件可以大大地简化这些步骤,只需要一个roslaunch命令,就可以同时启动ROS Master和多个节点程序。二、launch文件语法2.1 < launch>标签< launch>是launch文件的文件标签,是必须要有的。其中< launch>表示文件的起始,&l
2021-11-04 23:20:21 143
转载 无人驾驶-ROS-ros::spin/spinOnce
ros::spin()和ros::spinOnce()详解一、函数意义1.1 简介ros::spin()和ros::spinOnce()叫ROS消息回调处理函数。它俩通常出现在ROS的主循环中,程序需要不断调用ros::spin() 或 ros::spinOnce(),两者区别在于前者调用后不会再返回,也就是你的主程序到这儿就不往下执行了,而后者在调用后还可以继续执行之后的程序。具体介绍可以看:ROS官方基础教程链接 如果程序写了相关的消息订阅函数,那么程序在执行过程中,除了主程序以外,ROS还会自
2021-11-04 16:36:37 189
转载 无人驾驶-ROS-rosbag
无人驾驶-ROS-rosbag详解一、常用操作1.1 录包(1)录制所有话题:rosbag record -a(2)录制指定话题,设置 bag 包名:rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx(3)录制包不设置名称,默认按照录制结束时间命名:rosbag record /topic1_name /topic2_name /xxx1.2 回放(1)以暂停的方式启动,防止跑掉数据:rosbag play -
2021-11-04 15:06:40 732
原创 无人驾驶-控制-Stanley
无人驾驶-控制-Stanley一、模型介绍1.1 简介关于无人车追踪轨迹,目前的主流方法分为两类:基于几何追踪的方法和基于模型预测的方法,其中几何追踪方法主要包含纯跟踪和Stanley两种方法,纯跟踪方法已经广泛应用于移动机器人的路径跟踪中,网上也有很多详细的介绍,本文主要介绍斯坦福大学无人车使用的Stanley方法。前面介绍的Pure Pursuit方法利用无人车的横向跟踪误差来设计控制器。本篇介绍的Stanely方法就结合横向跟踪误差ey与航向角偏差eθ来设计控制器。值得注意的是,Stan
2021-11-04 13:13:54 1855
原创 无人驾驶-控制-横向跟踪误差
无人驾驶-控制-横向跟踪误差本篇利用无人车的横向跟踪误差作为控制器的反馈,因此首先介绍计算横向跟踪误差的公式。一、横向跟踪误差横向跟踪误差(cross track error, 简称CTE)为前轴中心点(rx,ry) 到最近路径点(px,py) 的距离,具体如下图所示以上图为基础进行简略分析,如果参考轨迹点在无人车的左边θe ∈ [ 0 , π ] ,则应该向左打方向盘;反之θe ∈ [ 0 , − π ] ,则向右打方向盘。经分析可得横向跟踪误差(CTE)计算公式如下:ey = ld
2021-11-04 10:37:36 3790
原创 无人驾驶-控制-阿克曼模型
阿克曼模型推导一、序论1.1 研究目的运动学是从几何学的角度研究物体的运动规律,包括物体在空间的位置、速度等随时间而产生的变化,因此,车辆运动学模型应该能反映车辆位置、速度、加速度等与时间的关系。在车辆轨迹规划过程中应用运动学模型,可以使规划出的轨迹更切合实际,满足行驶过程中的运动学几何约束,且基于运动学模型设计出的控制器也能具有更可靠的控制性能。1.2 自行车模型车辆控制研究中,建立模型应尽可能使模型简单易用,且能真实反映车辆特性,搭建车辆模型多基于单车模型,使用单车模型需做如下假设:不考
2021-11-02 13:26:16 25860 4
原创 无人驾驶-控制-自行车模型
无人驾驶-控制-自行车模型一、综述1.1 简介在了解高级的车辆控制算法之前,掌握车辆运动模型是非常有必要的。车辆运动模型就是一类能够描述我们的车辆的运动规律的模型。显然,越复杂的模型就越接近现实中的车辆运动规律,本节我们一起了解一下两个广泛使用的车辆模型——运动学自行车模型和动力学自行车模型。无人驾驶系统往往分成感知,决策和控制三个模块,其中无人车的路径规划和底层控制是工作在不同的层的,路径规划层往往会基于更加高层的(感知层,定位层)的信息和底层的(控制层)的实时信息指定行驶的路径,那么从路径
2021-11-02 01:33:54 6481
原创 无人驾驶-SLAM-栅格地图
激光雷达建图一、前言1.1 Gmapping算法1.1.1 简介1.1.2 话题订阅发布1.1.3 TF变换详解1.1.4 Gmapping伪代码1.1.5 Gmapping源码1.2 栅格地图创建1.2.1 地图分类1.2.2 栅格地图构建算法1.3 激光雷达建栅格地图1.3.1 算法核心1.3.2 算法输入数据1.3.3 算法流程1.3.4 栅格地图构建代码二、参考链接一、前言1.1 Gmapping算法1.1.1 简介本篇文章以激光SLAM算法gmapping为例,向大家介绍移动机器人构建环境
2021-10-29 11:49:38 3276
原创 无人驾驶-控制-线性时不变
线性非线性-时变非时变一、线性非线性1.1 线性系统1.2 非线性系统二、时变非时变2.1 时变系统2.2 时不变系统三、线性时变组合3.1 线性时不变一、线性非线性1.1 线性系统线性,指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数;线性系统有两种定义:(1)根据系统的输入和输出关系是否具有线性来定义,满足叠加原理的系统具有线性特性。即若对两个激励x1(n)和x2(n),有T[ax1(n)+bx2(n)]=aT[x1(n)]+bT[x2(n)],式中a、b为任意常数。
2021-10-28 11:40:19 312
转载 无人驾驶-规划-多项式拟合
多项式拟合一、前言二、最小二乘法三、最小二乘法推导3.1 代数法3.2 矩阵法3.2.1 误差平方和S矩阵表示3.2.2 最优函数的系数求解3.2.3 代数法与矩阵法对比四、代码实现4.1 函数声明4.2 函数实现4.3 主函数五、参考链接一、前言自动驾驶开发中经常涉及到多项式曲线拟合,本文详细描述了使用最小二乘法进行多项式曲线拟合的数学原理,通过样本集构造范德蒙德矩阵,将一元 N 次多项式非线性回归问题转化为 N 元一次线性回归问题,并基于线性代数 C++ 模板库——Eigen 进行了实现,最后,比较
2021-10-27 21:03:58 715
原创 无人驾驶-控制-坐标系转化
无人驾驶-坐标系转化一、坐标系概念1.1 WGS-84坐标系1.1.1 简介1.1.2 角度范围1.1.3 基本参数1.1.4 坐标系图示1.2 ECEF地心坐标系1.2.1 简介1.2.2 坐标系图解1.3 ENU东北天坐标系1.3.1 简介1.3.2 坐标系图解1.3.3 UTM坐标系1.4 载体坐标系1.4.1 简介1.4.2 车辆坐标系1.4.3 S-L坐标系二、坐标系转化2.1 WGS84(LLA)-ECEF-ENU2.1.1 WGS84转ECEF2.1.2 ECEF转ENU2.2 ENU-ECE
2021-10-27 13:54:11 4658 2
原创 无人驾驶-控制-框架
自动驾驶控制CAN通信横向控制纵向控制CAN通信一、收发测试1、CAN卡开启与通道开启(1)测试的时候,先用windows软件测试收发(2)匹配设备的波特率(3)确定CAN_Message的ID,是标准帧还是扩展帧2、CAN消息的解析与编码(1)can协议分为motorola和intel,bit位放置顺序不同(2)can_decode和can_encode的函数实现3、数据接收是否正常(1)进入自动驾驶【驱动类、转向类、制动类、档位、使能位、计数器】(2)车辆底层数据【车速、方向盘转
2021-10-26 16:21:44 341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人