自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

☜@_@达奚黑雁的博客

怕什么真理无穷,进一寸有一寸的欢喜!

  • 博客(60)
  • 资源 (4)
  • 收藏
  • 关注

原创 perf性能分析

Perf 是Linux kernel⾃带的系统性能优化⼯具, Perf的优势在于与Linux Kernel的紧密结合。Perf 可以 计算每个时钟周期内的指令数, 还可以对程序进⾏函数级别的采样,从⽽了解程序的性能瓶颈究竟在哪 ⾥。

2022-11-23 11:33:42 315

原创 opencv图像形态学运算

【图像处理】轻松搞懂形态学处理(腐蚀、膨胀、开闭运算) - 知乎图像的腐蚀与膨胀 - 简书图像膨胀&腐蚀 - outthinker - 博客园图形算法与实战:3.图像最大连通域_进击的CV的博客-CSDN博客_最大连通域学习opencv: 获取图像最大连通域 c++和python版_此人姓于名叫罩百灵的博客-CSDN博客_opencv连通域提取opencv-最大连通域_榴莲小怪兽的博客-CSDN博客_最大连通域OpenCV connectedComponentsWithStats函数获取最大连通域_

2022-07-12 16:28:19 644

原创 Primitive Function 归一化方向角

归一化方向角:double MoveBase::normalizeAngle(double val, double min, double max){ float norm = 0.0; if(val >=min) norm = min + fmod((val - min), (max - min)); else norm = max - fmod((min - val), (max - min)); return

2022-07-06 09:24:38 28

原创 【无标题】llllllll

全局路径规划(例如A*算法)算法计算路径完毕后,其路径点时一串左边点Points, 但这样的路径通常是有“锯齿” 形状的,并不符合实际需求,因此需要进行平滑处理。路径平滑处理的相关算法有:贝塞尔曲线 、B样条曲线路径规划后对路径进行平滑处理_原来的1024的博客-CSDN博客_路径平滑处理Hybrid A*路径规划器的代码注释_teddyluo的博客-CSDN博客...

2022-04-23 20:06:49 39

原创 IMU是什么

自动驾驶硬件系统(十)- Inertial Measurement Unit (IMU) - 知乎知乎作者:半杯茶的小酒杯

2022-03-29 17:35:27 165

原创 算法杂谈 How are you? I‘m fine Thank you ,and you?

覆盖规划算法 (Updating) - 知乎二值化处理 threshold边缘检测 canny图像提线 houghlinesP图像旋转与平移 warpAffine

2022-03-09 19:41:49 3265 1

原创 矩阵变换矩阵变换

旋转变换(一)旋转矩阵 - 莫水千流 - 博客园

2022-02-14 10:37:49 212 3

原创 Git的日常

git修改远程仓库地址-嗨客网

2021-11-03 16:05:25 26

原创 TEB算法

听说现在自动驾驶很火,所以我也做了一个 | 雷锋网TEB算法流程_陈_呵呵的博客-CSDN博客Category: TEB算法 | 沉默杀手TEB轨迹优化算法-代码解析与参数建议_zz123456zzss的博客-CSDN博客_teb算法浅谈Time Elastic Band - 知乎...

2021-10-21 10:30:32 4498

原创 C语言和C++的区别在哪

一、面向过程语言和面向对象语言我们都知道C语言是面向过程语言,而C++是面向对象语言。说C和C++的区别,也就是在比较面向过程和面向对象的区别。1. 面向过程和面向对象的区别面向过程:面向过程编程就是分析解决问题的具体步骤,然后把这些步骤一步一步实现,使用的时候就一个一个的依次调用就可以了。 面向对象:面向对象编程就是把问题分解成不同对象,建立对象的目的不是为了完成一个步骤,而是为了描述该对象在整个解决问题过程中的角色和行为。2. 面向过程和面向对象的优缺点面向过程:优点:性能高(比面向

2021-05-17 10:12:57 44

转载 卡尔曼滤波

最简单的话来说,卡尔曼滤波是来帮助我们做测量的,大家一定不明白测量干嘛搞那么复杂?测量长度拿个尺子比一下,测量温度拿温度表测一下不就完了嘛。的确如此,如果你要测量的东西很容易测准确,没有什么随机干扰,那真的不需要劳驾卡尔曼先生。但在有的时候,我们的测量因为随机干扰,无法准确得到,卡尔曼先生就给我们想了个办法,让我们在干扰为高斯分布的情况下,得到的测量均方误差最小,也就是测量值扰动最小,看起来最平滑。举例说明栗子1——感性认识:每天给兔子拔草,看她香甜地吃啊吃地,就忍不住关心一下她的体重增长情况。

2021-04-07 10:21:48 65

原创 docker网络连接

宿主机上访问容器,需要有对应的宿主机和端口之间的映射。宿主机和容器之间通过桥接模式连接。 宿主机——>-p 8081:8080——>容器网络连接的两种方式:桥接模式: docker run -di --name mytomcate1 -p 8085:8080 tomcat:lastest host模式 docker run -di --name mytomcat3 --net=host tomcat:lastest 桥接模式,可以在容器中生成网卡信息gat...

2021-04-02 10:30:42 96

原创 使用docker容器化应用程序

使用Dockerfile定制镜像Dockerfile必须在应用的根目录下 指令不区分大小写 新建层的指令:from、run、copy 新增元数据的指令:expose(暴露端口)、workdir、env、entrypoint(入口点) 第一行必须是FROM img - 基础镜像层 LABEL指定标签,key value形式 RUN执行命令 shell 格式:RUN <命令>,就像直接执行在命令行中一样 exec格式:RUN [“可执行文件”,“参数1”,“参数2”]

2021-04-01 18:17:26 48

原创 docker文件拷贝和目录挂在(卷Volume)简介

指令 描述 docker cp 需要拷贝的文件或者目录 [容器名称|ID]:容器目录 将文件拷贝到容器内所在目录 docker cp 容器名称:容器目录 需要拷贝的文件或者目录 将文件从容器中拷贝出来 目录挂在docker安装的根目录 /var/lib/docker/(类似于宿主机和容器之间的目录共享)宿主机上创建一个volume目录,命名为mytomcatvol$ docker volume create mytomcatvol查看创建了多少个v...

2021-04-01 15:02:37 282

原创 docker容器的创建、启动、运行、暂停和删除

docker镜像与容器的区别。镜像可以派生出许多容器(该容器包含微型机和运行在微型机上的对应服务) docker run -it --name 容器名称 镜像名:标签 /bin/bash -it 表示以交互式方式创建容器并进入容器, 退出用exit。 e.g: docker run -it --name mytomcat tomcat:tag /bin/bash docker run -di --name 容器名称 镜像名:标签 /bin/bash -di 表示以守...

2021-04-01 14:11:23 46

原创 docker镜像相关命令

docker官网:https://hub.docker.com指令 描述 docker images 查看系统中现有镜像 docker pull + 镜像 从官网拉去镜像 docker rmi + 镜像 从系统中删除镜像 docker histroy + 镜像 查看镜像层(系统层/微型机 环境变量 卷轴 工作目录 监听端口 启动服务命令) docker inspect + 镜像 显示镜像详细信息 ...

2021-04-01 11:50:04 30

原创 ubuntu环境下的docker安装

docker安装最好通过非 root 用户来使用 Docker。这时需要添加非 root 用户到本地 Docker Unix 组当中。使用wget从 https://get.docker.com 获取并运行 Docker 安装脚本,然后采用 Shell 中管道(pipe)的方式来执行这个脚本$ wget -qO- https://get.docker.com/ | sh下面的命令展示了如何把名为 clf 的用户添加到 Docker 组中,以及如何确认操作是否执行成功。$ sudo.

2021-04-01 11:26:33 62

原创 经典算法之动态规划(零钱找零)

/* 暴力递归 // 状态 目标金额 // 选择 coins数组中所有的硬币面额 // 函数定义 凑出总数为amount,至少需要coinChange(coins, amount)枚硬币 // base_case: amount==0时,需要0枚硬币 // amount<0时,不可能凑出*/// coinChange([1,2,5], 11) = 1 + min(coinChange([1,2,5],10), coin.

2021-03-31 16:23:48 111

原创 经典算法之动态规划(按摩师问题)

/***************************//* 按摩师问题按摩师不能连续接单,至少需要间隔一位客人计算出按摩师最多能接单多少/***************************/#include <stdio.h>#include <algorithm>int yuyue[] = {2,1,4,5,3,1,1,3};int message(int *num, int numsize) { int dp[numsize +1.

2021-03-31 15:45:12 181

原创 经典算法之动态规划(背包问题)

题目:现有四个物品,背包总容量为8,背包最多能装入价值为多少的物品物品编号:1 2 3 4物品体积:2 3 4 5物品价值:3 4 5 6编号\容量 0 1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0 0 0 1 0 0 3 3 3 3 3 3 3 2...

2021-03-31 15:40:09 118

原创 经典算法之动态规划(斐波那契数列)

适用场景:子问题与原问题性质相同子问题相互关联(区别于分治算法)求最优解,核心是穷举动态规划特点:重叠子问题 状态转移方程(最关键) 最优子结构动态规划Dynamic program解题框架base_case 穷举状态 状态转移经典案例一:斐波那契数列f[1] = 1f[2] = 2f[n] = f[n-1]+f[n-2]斐波那契额数列并不是一个正宗的动态规划问题,至少不是求最优解问题。代码实现——递归法(暴力递归)/* 斐波那契数列

2021-03-31 11:51:43 353

原创 经典算法之快速排序

适用场景:子问题与原问题性质相同子问题相互独立(区别于动态规划)经典案例一:二分查找基本思想:前提是给定一个有序数组,然后进行二分查找。经典案例二:快速排序基本思想:选择一个基准元素pivot(第一个元素) 两个指针front/rear,分别指向开头和末尾 移动rear查找第一次出现小于基准元素pivot的值 移动front查找第一次出现大于基准元素pivot的值 调换两元素值,继续挪动指针,目的旨在让最后重叠的指针左半部分全部小于基准元素pivot,有半部分全部大于基准

2021-03-31 10:31:30 50

原创 P11 发布单目camera图像

硬件连线使能摄像头树莓派使能摄像头将树莓派连接HDMI显示器,并运行指令 "sudo raspi-config"。打开摄像头接口,先【enable】,再重启。获取驱动包编译驱动包

2021-03-22 08:51:03 29

原创 P8 ROS节点编程发布订阅TF

查找wiki demo样例:wiki主页的Core Libraries。直接在launch中启用坐标系发布节点,在command tool栏通过编程实现坐标系发布节点,在参考api栏

2021-03-20 19:14:21 79

原创 P7 TF空间描述与变换

为什么要坐标变换?什么是TFtf能根据时间缓冲,维护多个参考系之间的坐标变换,可以在任何时间,将坐标数据进行转化,完成坐标变换。TF包内的指令工具TF功能包API激光雷达坐标TF变换坐标变换的形式一般有两种:欧拉角、四元数代码解释:type:tf功能包中的广播节点args:前三个元素分别对应 (x,y,z)上的误差,后三个是(x,y,z)方向的夹角。弧度表示。 父级坐标系,自己的坐标系,广播时间间隔(ms)。...

2021-03-20 18:34:06 70

原创 P10 ROS节点编程——机器人底盘base节点

ROS机器人底盘base节点base节点的作用:为move_base准备好里程计消息 为move_base转发cmd_vel消息 广播tfbase节点需要整合什么样的消息:整合 线速度 和 角速度 消息 发布 tf ,通过计算发布odom move_base slam_gmapping...

2021-03-20 18:10:29 201

原创 P9 ROS节点编程serial节点

ROS节点编程serial连接小脑usb接口名称和权限问题不同的usb设备接入计算机,usb的编号会改变。就如同usb转串口接入win的时候,com号也会变一样。rplidar下有个script目录。里面有个固定usb编号的一个软连接usb权限的问题:sudo chmod 666 ttyUSB0不同的usb设备的硬件编码和产品编码是不一样的,可以用指令 “lsusb -vvv” 查找 “idVendor”和“idProduct”创建rplidar.rules文件,输入以下命令。然后把

2021-03-20 15:58:06 77

原创 P5 roboware创建ROS工程编译激光雷达

获得激光雷达SDK包slamtek公司的rplidar A1激光雷达的RPLIDAR SDK包和ros包下载。RPLIDAR SDK包内部含有win驱动程序和测试demoros包用于cp到ros工程中进行编译Roboware studio创建工程创建工程把ros开发包放入空工程中的src目录下编译ros包修改主目录 .bashrc文件把“source ~/catkin_ws/devel/setup.bash”加入.bashrc文件中roslaunch启动激光雷达查看r

2021-03-20 15:02:20 47

原创 P3 激光雷达SLAM建图导航的ROS机器人项目介绍

项目描述显示急需使用的项目运输机器人 叉车机器人 服务机器人移动机器人项目的主要核心点主要是激光雷达的导航、视觉避障。本课题实现一个基于激光雷达导航的轮式ros机器人:cmd_vel话题消息可控 相机话题发布 激光雷达SLAM建图 slam_gmapping move_base路径避障 amcl导航软件需求:...

2021-03-20 14:28:17 231

原创 10 模拟SPI驱动PS2无线手柄

ROS机器人工程PS2手柄驱动移植什么是驱动移植?不同平台,端口的初始化、配置、数据的读/写 都不一样。改成平台所需格式、用PS2手柄控制你的机器人用PS2手柄调节最大速度用PS2手柄复合键调节PID...

2021-03-20 14:08:51 177

原创 如何将ROS应用于机器人的学习和开发

机器人系统的构成机器人是什么?机器人并不全像人形的机器。机器人是如何组成的?知道机器人的组成,我们才能知道怎么去做一个机器人。知道各模块需要做那些工作。1. 从控制角度:执行机构、驱动系统、感知系统、控制系统。内部传感系统:机器人在什么位置,速度感知,加速度感知。外部传感器: 摄像头、激光雷达、gps ...。(Ros中针对大部分外部传感器,都有内置的驱动功能包)控制系统:人类大脑,协调各部分有机执行。树莓派、Mini PC、执行机构:轮子、舵机、直流电机、步进电机.....

2021-03-18 16:30:01 132

原创 Ros中动态参数的配置与应用——dynamic reconfigure

创建配置文件1. 首先通过以下命令行创建一个功能包dynamic_tutorialscatkin_create_pkg dynamic_tutorials rospy roscpp dynamic_reconfigure2. 实现动态参数配置需要编写一个配置文件。在功能包中创建一个放置配置文件的cfg目录,然后在其中创建一个配置文件Tutorials.cfg#!/usr/bin/env pythonPACKAGE = "dynamic_tutorials"from dynam

2021-03-17 17:38:31 343

原创 ROS中如何快速实现plugin插件

wiki百科:plugin插件步骤:step1:创建基类#ifndef PLUGINLIB_TUTORIALS__POLYGON_BASE_H_#define PLUGINLIB_TUTORIALS__POLYGON_BASE_H_namespace polygon_base{ class RegularPolygon { public: virtual void initialize(double side_length) = 0; virtu

2021-03-15 19:28:20 94

原创 09 差速2轮运动学算法整合

ROS机器人工程电机驱动算法整合编码器 PWM PID rpm差速2轮运行学线速度 m/s 角速速 rad/s 转弯控制

2021-03-08 09:54:40 518

原创 08 TIM输出PWM_PID控制算法

TIM输出PWM控制电机PS:所有的芯片端口,最多耐压5V打开PWM波,设定一个波形作为PWM波的输出。300设为100,转速从111将为30rpmPID算法为什么有PID算法?在电机体质不可能相同 相同的pwm加在多个电机,怎么保持相同转速 外力作用,负载变化问题 闭环控制电机转速 测速->误差计算->pwm调整缺点:没有明确的优化准则,基本用经验进行调试。比例(P)控制:力度值积分(I)控制:响应速度微分(D)控制:达到目标值的时候,抑制惯性过调例...

2021-03-06 16:00:06 448

原创 07 TIM编码器和AB相电机测速

AB相编码器编码器分为光学和磁极。编码器的性能指标单位:分辨率(转一圈输出多少个信号值)精度390线的编码器:A相390个方波,B相390个方波。相位相差90°,实现4倍频,所以实现390*4=1560个tick的输出如下图所示:编码器方向判断以A相为参考点,A相跳高的时候,B相为高电平,视为正转(或者翻转)以A相为参考点,A相跳高的时候,B相为低电平,视为反转(或者正转)同理,以B相为参考点也是一样编码器转速判断以390线为栗:转速公式:rpm = tick/390*4/

2021-03-06 15:14:31 530 2

原创 06 串口DMA_终端_超级终端_数据协议

Ros移动机器人工程整个工程代码架构 TTL串口DMA发送debug信息 超级终端显示 serial数据协议 TTL串口DMA发送数据 TTL串口IRO接收协议TTL串口DMA发送debug信息为什么要通过串口打印信息到超级终端?MCU(STM32)没有显示屏MCU 外设 Tx Rx Rx Tx GND GND serial数据协议为什么要有数据协议 同步码起什么作用 定长接收,不定长接收为保证数据的准确性,需要采取协议的限定。同步.

2021-03-06 12:16:48 212

原创 05 ROS移动机器人MDK5工程创建

Ros移动机器人工程创建端口规划配置 STM32CubeMX生成MDK工程电机驱动芯片6612(可接两组电机) 和 电动机(带编码器)AIN1和AIN2:控制正反转A01和A02:输出引脚,直接输出电机线的正负一组电机需要消耗MCU(STM32)芯片的5个引脚。如果是四驱的话,就要消耗20个引脚。端口划分:40KHZ的输入。采取64分频,那么数 625 = 40K/64 个频段就会复位。...

2021-03-06 10:51:53 107

原创 Qt入门极简教程(三)

《Qt中的鼠标事件》事件简称QEvent对一些控件做一些构造、析构、捕捉。那么 需要基于现有的控件,做一些自定义的控件。鼠标进入事件:enterEvent(QEvent *event);鼠标离开事件:leaveEvent(QEvent *event);virtual关键字,代表可以在子类中重写该成员函数。使用案例:PS:把UI界面上拖拽好的Label控件的类型,右击“提升为..."myLabel自定义类型/* 自定义空间类 实现鼠标进入/离开事件的捕捉。*

2021-03-05 14:42:15 212

原创 04 STM32开发环境

开发环境的搭建STM32CubeMX开发工具-下载 -安装 -配置(另外需要安装与芯片相关的软件包pack) 该工具用于图形化配置芯片管脚,配置完后自动打开MDK5 MDK5开发环境-下载 -安装 -配置 安装J-Link驱动、USB2TTL驱动闪烁开发板上的LED灯生成一个MDK5工程编写代码配置J-Link仿真器,刷入程序到芯片中c/c++混合编程...

2021-03-03 19:13:45 64 2

.bashrc~~~~~~~~~~~~~~~

ubuntu16.04 .bashrc

2021-02-24

启动盘、U盘 制作工具

rufus作为制作启动U盘的工具,功能很强大,具有U盘格式化和系统烧写的一键功能。

2021-02-22

超详细的cmake教程(去糟粕-重实践-学以致用).pdf

以通俗化的语言,深入浅出的介绍了程序构建原理以及cmake的编写方法,使我们能知其然并知其所以然。摒弃长篇大论的一贯作风,去除糟粕,提炼精髓,学以致用是本门教程最大的特点。入门即上手,上手即封神

2021-02-17

超详细的cmake教程(去糟粕-重实践-学以致用).pdf

以通俗化的语言,深入浅出的介绍了程序构建原理以及cmake的编写方法,使我们能知其然并知其所以然。摒弃长篇大论的一贯作风,去除糟粕,提炼精髓,学以致用是本门教程最大的特点。入门即上手,上手即封神

2021-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除