- 博客(25)
- 收藏
- 关注
原创 串行通信协议
UART为异步串行通信,使用各自的时钟控制数据的发送和接受过程,不使用同步时钟,而是使用一些特殊位(起始位、停止位);SPI、IIC为同步串行通信,需要同步时钟。通信三种模式:1)单工:通信双方设备发送器和接受器分工明确,只能由发送器向接收器但一固定方向传输数据;2)半双工:两个设备均既是发送器也是接收器,某一时刻只能向一个方式传输数据;3)全双工:两个设备均既是发送器也是接收器,两台设备可以同时在两个方向上传输数据。一、UART。
2023-09-11 20:17:24
409
原创 Ubuntu18.04使用Systemback制作系统镜像并还原
在Ubuntu系统中开发项目时,有时会希望将项目移植到另外一台计算机(如工控机等)上进行部署,通常会在新计算机中安装Ubuntu系统,然后安装相关的依赖及功能包,此过程较为繁琐。针对上述问题,可以使用Systemback来制作系统镜像,可以在新计算机中安装一模一样的系统,下面为Systemback制作系统镜像及还原的流程。
2023-09-02 18:00:08
1683
1
原创 robot_upstart开机自启动
Ubuntu下可以设置rc.local和robot_upstart等多种自启动方式,这里我们是设置小车上电后,树莓派开机之后能够自己启动上位机中需要运行的launch文件,这里我们采用ROS下边的robot_upstart自启动方式。
2023-08-14 20:37:46
479
原创 4、Gazebo给予actor碰撞属性
Gazebo中的actor标签用来设置动态的行人或者动态的障碍物,使其按照我们预先设置轨迹来进行运动。但是添加actor的动态障碍物是没有碰撞属性的,因此需要给其设置碰撞属性。
2023-07-10 16:03:48
438
1
原创 3、移动机器人下位机软件
移动机器人的控制系统软件部分分为上位机软件与下位机软件两部分,二者之间通过串口进行通信,上位机主机树莓派中完成上位机软件设计,下位机STM32单片机中完成下位机软件设计。移动机器人下位机软件设计基于Keil5进行开发,主要完成与上位机树莓派之间的串口通信部分、PWM调速、PID速度控制、Encoder编码器数据获取以及里程计数据计算五部分。更多内容欢迎关注微信公众号:深度学习与路径规划。
2022-09-21 20:48:20
1333
1
原创 2、下位机环境配置
双击Keil uVision5的图标打开,然后点击“File”,找到下方的“License Management”进行激活。复制License Management中的Computer ID(CID),然后右键以管理员身份运行打开keygen.exe,拷贝到“CID”中,然后target选择“ARM”,点击“Generate”,将下方框的数据进行复制,最后拷贝到License Management中的“New License ID Code(LID)”中,点击“Add LIC”即可完成激活。
2022-09-21 20:24:03
431
原创 深度学习--优化器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1 随机梯度下降法2 Momentum3 AdaGrad4 RMSProp5 Adam前言优化器是引导神经网络更新参数的工具,深度学习在计算出损失函数之后,需要利用优化器来进行反向传播,完成网络参数的更新。在这个过程中,便会使用到优化器,优化器可以利用计算机数值计算的方法来获取损失函数最小的网络参数。在深度学习中,不同的优化器只是定义了不同的一阶动量和二阶动量,一阶动量是与梯度相关的函数,二阶动量是与梯度平方相.
2022-05-14 19:26:49
6011
原创 Ubuntu18.04安装ROS Melodic
前言提示:这里可以添加本文要记录的大概内容:本文主要是在Ubuntu18.04下安装ROS Melodic。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。1. 配置Ubuntu软件仓库我们需要勾选Ubuntu系统中Software & Updates中的“universe”、“restricted”和“multiverse”存储库选项。2. 设置sources.lis.
2022-03-15 16:59:38
1463
原创 Ubuntu18.04与RTX1080Ti安装深度学习框架
这里写自定义目录标题本文系统为Ubuntu18.04,显卡为RTX 1080Ti,之前主要在Windows下跑深度学习,后来因为需要用到ROS,故需要在Ubuntu下使用深度学习,因此记录一下在Ubuntu系统下安装深度学习框架的过程。首先,我们需要去官网下载cuda与cudnn,大家可以根据自己显卡的型号来选择相应的cuda版本,且cudnn下载时需要注册,这里提供cuda9.2及对应的补丁与cudnn版本。(如果下载需要积分,可以到微信公众号**“深度学习与路径规划”**回复“CUDA下载链接”进行
2022-03-09 16:04:39
1163
原创 路径规划算法
文章目录前言一、传统路径规划算法1.Dijkstra算法2.A*算法3.D*算法4.人工势场法二、基于采样路径规划算法1.PRM算法2.RRT算法三、智能仿生算法1.神经网络算法2.蚁群算法3.遗传算法前言随着机器人技术、智能控制技术、硬件传感器的发展,机器人在工业生产、军事国防以及日常生活等领域得到了广泛的应用。而作为机器人行业的重要研究领域之一,移动机器人行业近年来也到了迅速的发展。移动机器人中的路径规划便是重要的研究方向。移动机器人的路径规划方法主要分为传统的路径规划算法、基于采样的路径规划算法
2021-11-14 10:39:27
65637
4
原创 路径规划算法简介
文章目录前言一、传统路径规划算法二、图形学方法三、智能仿生算法四、其他算法总结前言移动机器人的自动探索需要对机器人进行路径规划,移动机器人的路径规划问题始于20世纪60年代。路径规划作为机器人导航最基本的环节之一,是目前很多技术领域研究的热点,具有广阔的应用前景和科研价值,而路径规划算法的研究是其中的核心内容。路径规划的主要任务是从一个初始点出发,然后按照特定的问题需求,寻找到一系列的动作在保证无碰撞、安全的情况下,到达任务的目标点为止。路径规划的核心就是算法的设计,根据对环境信息的把握程度可把路径
2021-07-28 17:16:33
8381
原创 深度学习--池化
文章目录前言一、最大池化二、平均池化池化的作用前言池化层是卷积神经网络中常用的一个组件,池化层经常用在卷积层后边,通过池化来降低卷积层输出的特征向量,避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。池化层一般没有参数,所以反向传播的时候,只需对输入参数求导,不需要进行权值更新。比较常用的池化层主要有最大池化与平均池化。一、最大池化最大池化就是选取图像区域中的最大值作为该区域池化后的值。在前向传播过程中,
2021-07-28 17:12:03
3652
原创 深度学习--损失函数
文章目录前言一、均方误差(mean squared error, MSE)二、平均绝对误差(mean Absolute error, MAE)三、交叉熵损失(Cross Entropy Loss)总结前言深度学习需要正向传播跟反向传播,为了更新参数w和b,我们需要设置一个损失函数loss function,通过损失函数来进行反向传播。损失函数 (Loss Function) 也可称为代价函数 (Cost Function)或误差函数(Error Function),损失函数就是用来表示神经网络的.
2021-07-28 17:07:28
1161
原创 Webots舵轮使用纯追踪算法
文章目录前言二、纯追踪算法三、Webots中对舵轮使用纯追踪算法前言对于AGV小车,利用路径规划算法在规划好路径以后,全局路径由一系列路径点构成,这些路径点只要包含空间位置信息即可,也可以包含姿态信息。在上一篇文章中,我们在webots中创建了舵轮小车,在本文中,我们将利用纯追踪算法(Pure Pursuit)来对舵轮小车进行路径点追踪。# 一、自行车模型上图为几何学自行车模型,假设我们的自行车模型仅在平面上行驶。我们将四轮模型简化为两轮模型,我们可以计算出前轮转向角度δ与轴距L之间的关系.
2021-07-28 16:16:42
1632
2
原创 Webots中创建舵轮模型
文章目录前言舵轮创建流程前言目前AGV小车主要是使用舵轮来进行行走,灵活性高,驱动轮能量利用率高。我们在webots中简单模拟一下舵轮,并用纯追踪算法对其路径点进行追踪。![舵轮](https://img-blog.csdnimg.cn/9bf36fabb0b8422d95e94179e3838b1d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ub
2021-07-28 16:06:38
1069
原创 深度学习--Batch Normalization
文章目录前言一、为什么要用BN?二、BN的本质及基本思想三、BN的具体流程四、BN的优点前言机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。BN层的主要作用就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布,加速网络的收敛速度。一、为什么要用BN?神经网络学习过程的本质是为了学习数据的特征分布,如果没有做归一化处理,那么每一批次训练数据的分布是不一样的。当训练数..
2021-07-27 17:12:01
371
原创 深度学习--激活函数
文章目录前言一、为什么要用激活函数?二、激活函数的种类1.Relu函数2.Leaky_Relu函数3.sigmoid函数4.tanh函数前言深度学习模型中网络层中经常会用的激活函数,是神经网络不可或缺的一部分。激活函数会影响输入节点的输出,激活函数的选择是非常重要的,极大的影响模型训练的好坏。一、为什么要用激活函数?神经网络的激活函数的主要作用就是将线性函数转换成非线性函数。神经网络都是由一系列的y=wx+b组成,y=wx+b是线性函数,不管采用多少个隐藏层其组合也都是线性函数,不能解决非线
2021-03-13 21:45:22
1055
原创 Webots构建四轮小车模型
文章目录前言一、机器人车身主体二、机器人车轮三、机器人控制器总结前言上篇文章简单介绍了一下webots这款机器人仿真软件,本篇文章结合官方文档中的tutorial简单构建一个四轮小车来学习一下webots的使用。四轮小车机器人的创建过程如下图所示。链接:webots构建简单的环境一、机器人车身主体首先需要添加一块地板,如果在构建项目的时候点击了Add a rectangle arena,则不需要添加地板。调整size的数值来改变地板的尺寸。然后添加一个Robot节点。将Robot下的t
2021-03-04 09:30:24
2387
2
原创 基于TF2的DQN算法详解与源码
文章目录前言一、DQN算法原理二、DQN算法代码部分1.网络结构2.经验存储函数3.动作选择函数4.DQN算法训练前言DQN算法是一种深度强化学习算法(Deep Reinforcement Learning,DRL),DQN算法是深度学习(Deep Learning)与强化学习(Reinforcement learning)结合的产物,利用深度学习的感知能力与强化学习的决策能力,实现了从感知到动作的端到端(End to End)的革命性算法。DQN算法由谷歌的DeepMind团队在NIPS 2013
2021-02-26 10:13:07
2155
4
原创 基于TF2的YOLOv3算法详解
YOLOv3算法的详细解释在上篇文章中已经详细介绍过,目前YOLO代码的TensorFlow版本大部分还是TensorFlow1的版本。但是在2019年10月,发布了TensorFlow2的版本,TensorFlow2的版本比TensorFlow1的版本更加易用、灵活和强大。所以我结合自己Tensorflow2的学习,结合代码部分来详细解释一下YOLOv3中的网络结构与损失函数。我们需要将自己的数据集或者VOC、COCO的数据集放在dataset的文件夹下面。如果是VOC或者COCO的数据集,我们可以直接
2021-02-24 18:09:56
565
原创 Webots中构建简单的环境
一、Webots是什么? Webots作为一款移动机器人的仿真软件包,它能够快速的原型制作环境。Webots的开源时间比较晚,因此国内关于Webots的学习资料比较少,只能通过官方文档来进行学习,官方文档提供了两个手册,一个是User Guide(用户指南),一个是Reference Manual(参考手册)。Webots由Cyberbotics公司开发,是一款开源的多平台机器人仿真软件,为机器人的建模、编程和仿真提供了完整的开发环境。目前,Webots已经开源,支持Windows、Linux、Ma
2021-02-23 19:40:27
1373
原创 YOLO算法详解
YOLO算法详解前言YOLOv1YOLOv2YOLOv3前言YOLO官网:https://github.com/pjreddie/darknetYOLO及You Only Look Once,是一种目标检测算法,目标检测任务的目标是找到图像中的所有感兴趣区域,并确定这些区域的位置和类别概率。目标检测领域的深度学习方法主要分为两大类(如图1):两阶段式(Two-stage)目标检测算法和单阶段式(One-stage)目标检测算法。两阶段式是先由算法生成一系列候选边界框作为样本,然后再通过卷积神经网络分类
2021-02-22 10:32:30
33398
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人