- 博客(54)
- 收藏
- 关注
原创 Day5:强化学习之Qlearning走迷宫进阶
2.奖励条件:如果碰到障碍物得到-1分,如果到达终点,得到10分。1.迷宫状态:起点已知,终点已知,障碍物随机分布。3.Q值更新规则与上一篇文章一致。4.动作选择仍旧采用贪心策略。
2025-02-19 11:55:19
931
原创 Day3:强化学习之Q-Learning代码例程
一、机器人多步决策过程用Qlearning算法思路:一、机器人多步决策过程用Qlearning算法思路:1.问题说明:机器人随机位于某个位置,需要到达位置6即为赢得游戏。2.奖励政策:机器人走迷宫一共有6个位置,6个位置的地图如下,给定奖惩规则为:不能通过给-1分,走到终点给100分。例如:如果机器人位于位置1,则该位置不能通过位置0(此时会给个-1分),走到了终点6就给一个100分。3.得到奖惩表格。
2025-02-17 12:03:21
459
原创 Day2:强化学习之TD learning
1.为什么要用梯度下降梯度的方向是函数上升最快的方向,沿着梯度方向对参数做更新,就可以使的目标函数增大。如图所示,对于函数y=f(x), 在A点的导数是大于零的,也就是增大x,f(x)也会增大。所以,我们沿着梯度方向前进,就可以找到目标函数的最大值。而我们的进行神经网络学习的时候,目标让预测值与真实值的误差之和最小,也就是是MSE(平均平方误差)最小:由于我们的优化目标是最小化目标函数(损失函数),所以是沿着梯度的负方向更新参数,也就是梯度下降。2.梯度下降的参数更新方法:其中,α为学习率。
2025-02-14 16:00:28
645
原创 Day1:强化学习基本概念
1.Agent 智能体:执行动作的对象2.State 状态:对当前环境的概括3.Action 动作:智能体基于当前状态做出的决策4.Reward 奖励:智能体执行完一个动作后,环境反馈给智能体的一个数值。(由程序编写者定义)5.State transition 状态转移:智能体从当前t时刻的状态s转移到下一时刻的状态s'的过程。注:状态转移是随机的,其随机性来自于环境。
2025-02-13 20:43:01
1148
原创 小米电机与STM32——CAN通信
背景介绍:为了利用小米电机,搭建机械臂的关节,需要学习小米电机的使用方法。计划采用STM32驱动小米电机,实现指定运动,为此需要了解他们之间的通信方式,指令写入方法等。花了很多时间学习,但网络上相关资料很少,且对于我这类基础一般的同学,注释不够详细。为此,我认真研读了电机的说明书,参考相关的博文,实现了电机的CAN通信,特作此记录。
2024-10-12 22:35:47
6400
2
原创 STM32的GPIO使用
2.使用GPIO_Init 函数初始化GPIO。3.使用输出或输入函数控制GPIO口。1.使用RCC开启GPIO时钟。
2024-09-07 23:18:50
980
2
原创 STM案例一:灯闪烁
选择魔术棒按钮,单击Debug,选择ST-link Debug,选择setting,选择Flash Download,勾选Reset and run,单击确定。建立一个library文件夹,将相应的库函数文件添加进去,对应的文件夹可以从资源获取。4.添加system文件夹和Delay.h和Delay.c文件。添加方法与之前都是一致的,相关文件可以从资源下载。注意,要将相应的路径进行添加,添加方法如下图。上述1,2两步做完后,显示如下图。
2024-08-26 21:04:23
538
原创 STM32新建项目
右击start文件夹,选择add existing files to group start,进入start文件夹,选择all files,添加图片中的所有文件。新建main文件,然后编译,我编译的时候一开始有报错,后面添加了一个ARMCC后,就没有报错了,具体添加方法可以参考博文。硬件:STM32F103;点击新建按钮——点击...按钮——选择相应的start路径——即可对工程的头文件路径进行添加。打开keil5——选择项目——选择新的μVision项目——命名新建工程——选择板子型号。
2024-08-21 13:20:56
631
原创 SW导出URDF文件,并用ROS验证模型准确性
1.首先需要安装一个sw_urdf_exporter插件插件地址如下2.sw建立机械臂三维模型后,再建立各关节的转轴、原点和坐标系,建立时需要参考DH系建系的规则:(注意,建系前要将机械臂固定在初始位置,避免建系过程中位置不小心发生变化1).建立转轴Zi 2).确定原点:如果Zi与Zi+1相交,则交点就是原点;如果Zi与Zi+1不相交,则公垂线与Zi交点为原点 3).确定Xi:Zi与Zi+1相交,则Xi垂直于Zi与Zi+1所在平面;
2024-08-19 21:57:33
1203
原创 6自由度机械手DH坐标系建立
位置——某个点P在坐标系{A}下的矢量表示,可以理解为三维坐标;姿态——在物体上固定一个坐标系,该坐标系相对于基座标系的描述,就是物体的姿态。机器人的每个连杆可以用4个运动学参数表示,DH法建立坐标系,xi-1同时垂直于Zi-1与Zi。当机器人的两个关节轴线平行或重合时,就会出现局部退化的现象,这种现象就是由奇异点造成的。其中单位向量的点积,表示前一向量在后一向量的投影。用一个简单的矩阵表示一般变换的旋转和平移,根据每个关节的关节角计算末端执行器的位姿。坐标系{B}相对于坐标系{A}的表达,
2024-08-09 22:44:17
2677
原创 利用YOLOv8识别自定义模型
最近项目需要识别自定义物品,于是学习利用YOLOv8算法,实现物品识别。由于物体类别不再常规模型中,因此需要自己训练相应的模型,特此记录模型训练的过程。
2024-07-04 16:37:51
1172
原创 深度相机识别物体——实现数据集准备与数据集分割
1.安装labelimg——pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple2.建立相应的数据集存放文件夹3.打开labelimg,直接在命令行输入labelimg即可,并初始化4.开始标注,设置标注好后自动保存view——Auto Save mode。
2024-06-28 22:57:22
798
原创 使用深度相机D435i+YOLOv8实现物体三维坐标实时显示
下列指令为获取相机内参指令,输入此指令前需要获得相机的深度帧和彩色帧数据。显示结果为:其中:640x480是像素宽度x像素高度;p[322.02 236.768]为主点(镜头光轴与图像平面的交点)的坐标;f[391.288 391.288]为焦距参数;Brown Conrady [0 0 0 0 0]分别表示畸变模型与畸变系数。
2024-06-24 21:35:34
7726
38
原创 双目相机测距原理
普通双目相机具有如下特点:左右两个相机位于同一平面(光轴平行),且相机参数(焦距f)一致。其原理图如下:如图所示,P点为相应的物体位置,CL和CR为左右相机光心位置,PL和PR分别为左相机和右相机拍摄的P点成像结果。f为相机焦距,Z为物体距相机的深度距离,b为左右相机基线距离根据几何关系有:则相应的深度信息计算公式为:(1)其中XL-XR为视差。其余在两侧的情况同样可以用几何关系分析得到该表达式(1),即对于普通双目相机测距可以直接通过公式(1)得到深度结果。
2024-06-24 12:52:18
1723
原创 YOLOV8识别物体,并返回物体的像素坐标
C:\Users\82370\.conda\envs\Ayolo8\Lib\site-packages\ultralytics\engine\result.py(此处路径为你的anacod安装的虚拟环境Ayolo8位置)
2024-06-18 11:24:29
4806
1
原创 VScode+YOLOv8+深度相机D435i实现物体追踪
这里当人或者物体移动的时候,相应的识别框和标识也会跟着动。此外,如果采用了-Pose还可以识别人的姿态。D435i相机+VScode+YOLOv8视频识别追踪。通过导入相关的检测模型后,就可以实现物体追踪与识别。
2024-06-12 20:46:23
1435
原创 Anacode+YOLO识别图片
因为我原本是已经安装了python,后面直接卸载了,然后安装了最新版的anacoda下载网址为:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror下载版本是:按照安装教程直接安装即可:史上最全最详细的Anaconda安装教程-CSDN博客创建完成后显示的内容命令行输入该代码,如果无报错,表示虚拟环境创建成功(ultralytics是一个功能强大且易于使用的YOLO实现,适用于需要在计算机视觉任务中进行目标
2024-06-03 10:45:24
649
原创 如何使用vsCode打开intel D435i深度相机
命令行输入:pip install D:\安装文件夹\pyrealsense2-2.55.1.6486-cp311-cp311-win_amd64.whl 即可实现pyrealsense文件本地安装。3)在系统变量里面,单击path,添加环境变量:C:\Program Files (x86)\Intel RealSense SDK 2.0\bin\x64。打开cmd命令提示符窗口,输入pip install opencv-python,即可实现openCV的自动安装。2)选择高级,选择环境变量。
2024-06-01 16:33:17
2024
2
原创 matlab的solve函数解方程组
上述函数中的第一变量为方程组,第二个为待求变量。其中eqn表示方程组的表达式,var表示变量。用于求解方程组或者方程的符号解。一、solve函数的用途。2.建立方程组再调用。
2023-12-21 14:27:34
11254
原创 关于matlab控制arduino板实现电机正反转控制
以下程序为驱动电机正反转,由于我的驱动器采用的是双脉冲模式,即PUL为顺时针旋转IO口,DIR为逆时针旋转IO口,所以正反转只需要对不同引脚进行脉冲输出即可。writePWMVoltage(a,'D3',4) %在数字引脚3上产生4V的PWM信号,一般arduino uno的电压为0-5V。2.writePWMDutyCycle() 在PWM引脚上产生具有指定电压的PWM信号。
2023-07-28 10:55:16
959
8
原创 Ardunio建立电机类控制步进电机转角与转向、转速
通过驱动细分,一般会有不同的细分结果,以下程序为200/转,表示每转对应200个脉冲。//一个脉冲转一个步长 总步数为200步/圈 循环一次实现一个脉冲 总计转三圈。//一个脉冲转一个步长 总步数为200步/圈 循环一次实现一个脉冲。#define STE 9// 脉冲位。
2023-07-27 12:35:16
4120
原创 Ardunio实现PWM舵机驱动
/将角度转化为500-2480的值 1980/180=11 1980是总脉宽变量 180是总角度 11是单位角度对应的脉冲量。//将舵机接口电平置高。//将舵机接口电平置低。//设定舵机接口为输出接口。//设置波特率为9600。//将0~9的数字转化为0~180 并让LED闪烁相应的次数。//设置舵机驱动口为数字3。//将数值转化成角度。//设置电机转角变量。
2023-07-19 16:57:46
664
3
原创 LED数字显示板单片机程序
如果要显示数字1,则需要b,c输入高电平,如果要显示数字3,则需要a,b,g,c,d输入高电平,根据这个原理,可以知道每个数字对应的a,b,c,d,e,f,g,h应该输入高电平还是低电平。2.再根据每个数字的a~h的引脚应该是高电平还是低电平,定义一个二维数组,每行对应一个数字中各引脚的电位,0代表低电位,1代表高电位。3.定义一个数字显示函数,输入为需要点亮的number,输出为空。即,a接数字口7,b接数字口6,具体如下代码。一、数字显示板(共阴极,即输入高电平点亮对应位置)的引脚与位置关系图如下。
2023-06-26 19:47:21
1197
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人