map_tp_map方法实现的回环检测
参考网址: A Triangle Feature Based Map-to-map Matching and Loop Closure for 2D Graph SLAM
步骤
建图步:通过csm于pl-icp建图
通过SIFT,SURF,ORB等方式对全局地图与子图选择特征角点
通过L1≥L2≥L3的方式设置三角形(L1=|x1-x2|,L2=|x2-x3|,L3=|x1-x3|) ,分别将全局地图与子图x1,x2,x3分别放入三个数组中备用,记为Tk(3)与Tl(3)
根据以下公式,筛选出合适的对应点,但实际上两个距离只能达到大致相等,因此需要加一个阈值,阈值函数如下,找出全等三角形$$dist^{k}\left ( t_{k}^{i}\left ( 1 \right ),t_{k}^{i}\left ( 2 \right ) \right )\approx dist^{l}\left ( t_{l}^{i}\left ( 1 \right ),t_{l}^{i}\left ( 2 \right ) \right );\
dist^{k}\left ( t_{k}^ ...
ubuntu18查看磁盘占用
参考网址: (121条消息) ubuntu查看磁盘占用和分配情况_forAllforMe的博客-CSDN博客_ubuntu 查看磁盘占用
df -hl12345678Filesystem Size Used Avail Use% Mounted onudev 978M 0 978M 0% /devtmpfs 200M 3.6M 197M 2% /run/dev/sda5 28G 12G 15G 45% /tmpfs 1000M 216K 999M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 1000M 0 1000M 0% /sys/fs/cgrouptmpfs 200M 52K 200M 1% /run/user/1000
sudo fdisk -l1234567891011Disk /dev/sda: 60 G ...
微雪树莓派安装ubuntu18_server
参考网址: CM4 Burn EMMC - Waveshare Wiki
步骤
安装 rpiboot 软件
将 BOOT开关拨至ON
打开 rpiboot软件,会出现如下,说明已经连接上树莓派
安装树莓派镜像烧录器
下载[ubuntu8_server]( Index of /ubuntu-cdimage/ubuntu/releases/18.04.5/release/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror )
使用树莓派烧录器安装ubuntu18_server
完成后重启树莓派,修改boot下network-config与user-data
1234567891011121314version: 2ethernets: eth0: dhcp4: false addresses: [192.168.8.110/24] eth1: dhcp4: false addresses: [192.168.8.111/24]wifis: wlan0: access-points: HUAWE ...
path_plan
参考网址: 运动规划_哔哩哔哩_bilibili
teamo1996/Motion-plan: 深蓝运动规划课程 (github.com)
机器人路径规划、轨迹优化系列课程_哔哩哔哩_bilibili
AtsushiSakai/PythonRobotics: Python sample codes for robotics algorithms. (github.com)
简介基于搜索
bfs/dfs
Djikstra
A*
jps
基于采样
dwa
RRT / RRT* / nformed RRT*
基于动力学约束
状态栅格搜索算法(State Lattice Search)
OBVP
虚拟力场
VFF
VFH / VFH+ / VFH*
图优化
参考网址: (116条消息) 图优化一_a4zhangfei的博客-CSDN博客_图优化
AtsushiSakai/PythonRobotics: Python sample codes for robotics algorithms. (github.com)
图优化理解通过顶点与边构成相互约束,从而构建残差方程,然后通过最小二乘求解坐标
代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314 ...
matlab中文乱码
参考网址 (116条消息) 解决matlab打开.m文件中文注释乱码问题_童童同学的博客-CSDN博客_.m文件中文乱码
步骤
查看当前matlab编码格式
123slCharacterEncoding()% 乱码一般显示为:ans = 'GBK'
打开matlab/bin文件夹,将 lcdata_utf8.xml 文件复制并重命名为 lcdata.xml ,若存在该文件,将其改名,保存,文件结构与如下
打开 新复制的lcdata.xml,并删除
123<encoding name=”GBK”> < encoding_alias name=”936”> </encoding>
修改并加入
123456789修改前<encoding name=”UTF-8”> <encoding_alias name=”utf8”/> </encoding> 修改后<encoding name=”UTF-8”> <encoding_alias ...
jps
参考网址: (116条消息) JPS算法_Jason.Li_0012的博客-CSDN博客_jps 算法
运动规划_哔哩哔哩_bilibili
YYRise/jps: python实现跳点寻路算法(JPS:Jump Point Search) (github.com)
最快速的寻路算法 Jump Point Search - 知乎 (zhihu.com)
算法流程
与A*算法流程完全一样,只是对于邻接节点的定义不同, A∗算法的邻居节点为几何意义上的邻居,而Jps算法的邻居节点为跳跃所得的邻居。
1234567891011开始 将起点放入open list中 while true if open list 为空 搜索失败,结束 取open list中最小节点 if 节点为终点 找到路径,结束 拓展该节点子节点 将节点放入closed list中结束
修剪邻居节点与跳转规则
jps代码123456789101112131415161718192021222324# 查找路径的入口函数def find_path(self, s_pos, e_pos): ...
线性二次型调节器(lqr)
参考网址 (116条消息) LQR 的直观推导及简单应用_白巧克力亦唯心的博客-CSDN博客_lqr算法
路径规划与轨迹跟踪系列算法学习_第12讲_线性二次型调节器(LQR)法_哔哩哔哩_bilibili
https://github.com/AtsushiSakai/PythonRobotics
解释
对于一个线性系统可以用x_dot = Ax +Bu表示,参考全反馈控制模型,我们需要设计一个状态反馈控制器,表示为
u = -Kx,使得闭环系统满足我们的期望性能.因此可以可得到状态方程为x_dot = (A-BK)x=Acx
通过设计一款能量函数,如下,希望最优的控制轨迹应该使得该能量函数最小
由于u = -Kx,我们可以得到,
为便于求解K,引入常矩阵P,最终化简可以得到
lqr求解流程
选择参数矩阵Q,R
求解Riccati 方程得到矩阵P
计算 : K = R*-1* BT P
lqr结构图
程序 倒立摆的状态变量为x=[p,p_dot,the,the_dot]T,其中p(t)是小车位置,θ是倒立摆的角度,这里直接 ...
path_tracking
参考网址 (116条消息) 智能驾驶车辆横向控制算法_肥嘟嘟的左卫门的博客-CSDN博客_汽车横向控制和纵向控制
(116条消息) 基于车辆模型的横向控制方法_氢键H-H的博客-CSDN博客_车辆横向控制
走进自动驾驶横向控制,你需要这篇超长综述 - 知乎 (zhihu.com)
忠厚老实的老王的个人空间_哔哩哔哩_bilibili
小黎的Ally的个人空间_哔哩哔哩_bilibili
机器人路径规划、轨迹优化系列课程_哔哩哔哩_bilibili
pure_pursuit
参考网址 路径规划与轨迹跟踪系列算法学习_第10讲_纯跟踪法_哔哩哔哩_bilibili
(116条消息) 无人车系统(五):轨迹跟踪Pure Pursuit方法_windSeS的博客-CSDN博客
AtsushiSakai/PythonRobotics: Python sample codes for robotics algorithms. (github.com)
算法流程:
代码1234567891011121314151617181920212223242526272829303132def search_target_index(self, state): # To speed up nearest point search, doing it at only first time. if self.old_nearest_point_index is None: # search nearest point index dx = [state.rear_x - icx for icx in self.cx] ...