当前位置: 首页 > news >正文

基于STM32 + FPGA 的软体机器人的 CAN总线运动控制器的设计

针对在软体机器人控制时多电机协同控制过程中难度大通用性差协同性差等缺点设计了基于 ARMFPGA的软体机器人的控制器局域网络 ( controller area networkCAN) 总线运动控制器采用 ARMCortex-M4 为内核的 STM32F407 开发板和 AX7102 FPGA 开发板设计一种基于 CAN 总线的软体机器人运动控制器主要包括该系统的体系架构硬件设计和软件设计等该控制器利用 STM32作为控制核心和 FPGA 的高速处理能力来实现控制算法的运算并用 CAN 总线技术来实现与上位机通信经过试验操作该控制器可以满足预定要求。
软体机器人有别于传统刚体机器人其具有众多优点,具有生物柔性能够通过蠕动爬行扭动
穿过狭小的空间实现灵活避障或者实现柔顺抓取等操作,在非结构化环境中应用前景广泛
1于是 需要一种适用于软体机器人运动控制的运动控制器。 到目前为止,通用的运动控制器从结构上可分为以下 3 大类2-3
( 1) 标准总线式运动控制器这种运动控制器大多是基于计算机标准总线的,其相对于计算机是
独立的具有开放式体系结构其大多使用数字信号处理器( digital signal processorDSP) 芯片或微机芯片作为处理器,可实现运动规划高速插补、伺服滤波和电机驱动、I /O 通用接口等功能,并且用户可以使用其丰富的函数库,根据自己的需求,在不同平台下自行开发相应软件来组成控制系统。
( 2) 开放式运动控制器这种运动控制器灵活性好,将控制软件安装在计算机中再加上伺服驱
动器通用 I /O 接口等硬件电路就可以在操作系统支持下,利用开放式的运动控制器内核开发所需要的各种类型的高性能运动控制系统,因此它可以提供给用户更多的选择。其优点是开发设计成本相对较低,可以给用户提供更加个性化的开发平台
( 3) 嵌入式运动控制器这种运动控制器能够 独立运行,其特点是把计算机嵌入到运动控制器
而它们之间的通信则是依靠计算机总线,该总线实质上是计算机标准总线一种变化。对于标准
总线来说其采用了更加通用的总线连接方式在工业生产中有更广泛的应用。在实际使用中采用如控制器局域网络 ( controller area networkCAN) 总 线、以太网串口等现场通信接口来连接计算机或 控制面板以实现对该种运动控制器的上位机控制。 鉴于以 上 总 结 分 析,对 基 于 STM32 FPGA ( field-programmable gate array) 的嵌入式运动控制器 进行了研究和设计,该嵌入式硬件架构能充分发挥 它们的优点,可以同时控制多个电机目前很少应用在软体机器人控制中。对于二者之间的通信则 采用可变静态存储控制器 ( flexible static memory
controllerFSMC) 总线来实现数据信息的交换与传输,并采用 CAN 总线来实现与上位机通信该总线具有实现连接方便、灵活度高实时性强等特点
1 总体方案设计
控制 器 以 基 于 Cortex-M4 处理器为核心的STM32F407 芯片进行通信数据处理等操作它具
有多种集成功能满足系统的设计要求FPGA 作为该控制器的脉冲发生和数据采集机构,则利用其 高速性和并行性进行速度控制、位置确定和算法实现。控制器的总体构造如图 1 所示

控制器主要由上位机STM32 开发板控制模块、FPGA 开发板脉冲发生模块伺服驱动器等部分
组成其中每个部分的组成和相应的作用是: 上位机具有信息传输和 CAN 通信的作用CAN 通信具 有大量 数 据 高 速 通 信 的 优 点,通过上位机可向STM32 开发板发送指令如实现电机的启动停止、 正反转等; STM32 开发板控制模块与 FPGA 开发板脉冲发生模块,通过 I /O 接口来进行两者之间的数 据发送和读取,STM32 开发板根据上位机传输过来 的的不同命令和相关数据进行对应的数据分析和 处理,然后传输给 FPGA 开发板与此同时也要从FPGA 开发板上依次读取直流伺服电机在运动过程当中相应的速度和位置等参数; 伺服驱动器通过脉冲宽度调制来实现直流伺服电机的精确控制,如正反转、加减速启动停止等。控制器采用直流有刷伺服电机,其具有成本较低、结构简单、控制方便、 启动转矩大、调速范围宽等优点,因此适合作为控制器的运动执行部分[4-5]。
2 硬件设计
在对控制器进行硬件设计时其核心器件有 STM32 开发板FPGA 开发板伺服驱动器CAN 通 信模块和外围电路等。考虑到在制作和使用过程 中的成本和性能方面,现对各个模块进行选型以 达到合理与合适的效果。其中 STM32 开发板选择 基于 Cortex-M4 内核STM32F407IGT6FPGA 开发 板则选用 Xilinx 公司的 AX7102直流伺服电机选择
MAXON MOTOR RE30。 每个开发板的最小系统能够正常运行是硬件
设计的基础而每个最小系统都是由很多模块组成 的,且都有对应的功能电源模块为该系统提供电 源,晶振模块为该系统提供基本的时钟信号下载 模块则负责将程序下载到该系统中,I /O 接口模块 是为了进行数据的输入和输出,复位模块的作用是 使 CPU 恢复到原始状态等等不同的是FPGA 的 最小系统中芯片外围滤波电路模块的功能是滤去 电压中的纹波、配置电路模块以达到实现相应的功 能、存储模块用以数据存储等STM32 的最小系统 则还有通信模块以实现上位机与开发板之间的通 信。下面就下载模块接口模块通信模块进行详 细描述[6]
2. 1 STM32 模块电路
2. 1. 1 仿真器接口模块
STM32 2 种 下 载 模 式分别是串行调试( SWD) 模式和联合测试工作组( JTAG) 模式本文
设计的系统采用 JTAG 模式如图 2 所示JTAG 作 为一种边界扫描技术,主要被用来做芯片内部测 试。控制系统设计时选用的 JTAG 调试口针数为 20 针由于开发板预留的是 SWD 接口则通过 STLink 实现 JTAG SWD 的转换这里 SWD 接口的 频率使用 4 MHz在进行代码调试时通过 ST-Link 将上位机与 STM32 微控制器开发板相连进而烧写 程序。
2. 1. 2 CAN 通信模块
CAN 是一种异步通信只有 CAN_High CAN _Low 两条信号线共同构成一组差分信号线以差 分信号的形式进行通信。由于上位机与 STM32 通 过 CAN 进行通信需要 USB CAN 模块
7这里选 用若比特公司的 USB2CAN 适配器 V2其工作原理
如图 3 所示
STM32 开 发 板 具 有 内 置 的 CAN 控 制 器,即bxCAN,它支持 CAN 协议 2. 0A 和 CAN 协议 2. 0B,具有 3 个发送邮箱,2 个 3 级深度的接收 FIFO( firstinput first output,先进先出) ,14 个可变位宽的过滤器组,波特率最高为 1 Mbit / s[8]。CAN 通信模块如图 4 所示。
2. 2 STM32 FPGA 接口模块
STM32 开发板与 FPGA 开发板的接口电路的作 用是实现二者之间的通信以及数据传输。在控制
器设计过程中控制信号地址信号和伺服电机运 行参数是 STM32 开发板与 FPGA 开发板之间相互 传输的主要数据。在输入/输出端口中有 4 组引脚 被使用到,分别是 PDPEPFPG 中的部分引脚接口模块的具体设计如图 5 所示
在该设计中FSMC 总线用来实现 STM32 开发板和 FPGA 开发板之间数据的传输所以 PE0PE1

PD4PD5PG10 作为 FSMC 总线端口除此以外, STM32 还将部分端口配置为步进电机驱动器方向信号的输出端口,FPGA 的脉冲输出信号输入至步进电机驱动器。
2. 3 伺服驱动器
作为自动调速系统中的一部分伺服驱动器是用来调节电动机的转速的[9]采用的是 COPLEY 公司的 Accelnet 型伺服驱动器该驱动器的组成部 分有电源电路、继电器板主控板驱动板及功率器 件。伺服驱动器的工作原理如图 6 所示 电源电路通过把外部输入的 20 ~ 55 V 直流电 转换为相应的直流电,为继电器板主控板驱动板 和功率器件提供直流电源。继电器板的作用包括 两个方面,一方面是提供相应的直流电另一方面 是完成控制信号、转速检测信号和转子位置检测信 号之间的传递。该伺服驱动器的核心部分是主控 板,主控板则采用数字信号处理器作为控制核 心[10功率器件采用智能 功率模块 ( intelligent power module,IPM) 为核心的驱动电路即主电路, 采用三相全控桥式逆变电路,在主回路中还加入软 启动电路,以减小启动过程对驱动器的冲击

 

 

3 软件设计
在软件设计部分主要涉及 3 个模块分别是STM32 与上位机通信模块FPGA STM32 通信模
块和直流电机运动中的加减速模块如图 7 所示
3. 1 STM32 与上位机通信模块
关于 STM32 与上位机的 CAN 通信在硬件设计部分已经介绍过了,这里只对软件设计进行详细介
软件部分是基于 CAN 总线来实现 STM32 与上 位机的通信,主要任务是只要进行 CAN 初始化和数 据发送即可。本设计初始化模块中只需要对 CAN 工作方式进行配置,而不需要对过滤器进行特殊的 配置,部分初始化程序如下
/ * CAN register init( CAN 寄存器初始化) * /
CAN_DeInit( ) ;
CAN_StructInit( &CAN_InitStructure) ;
/ * CAN cell init( CAN 单元初始化) * /
CAN_InitStructure. CAN_TTCM = DISABLE;
……
CAN_InitStructure. CAN_Mode = CAN_Mode_Normal; / /工作模式
选择
CAN_InitStructure. CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure. CAN_BS1 = CAN_BS1_5tq;
CAN_InitStructure. CAN_BS2 = CAN_BS2_1tq;
CAN_InitStructure. CAN_Prescaler = 6; / /波特率的设定
CAN_Init( &CAN_InitStructure) ;
/* CAN filter init( CAN 过滤器初始化) * /
CAN_FilterInitStructure. CAN_FilterNumber = 0;
……
CAN_FilterInitStructure. CAN_FilterActivation = ENABLE;
CAN_FilterInit( &CAN_FilterInitStructure) ;
其中波特率的配置在工作方式配置中是最主
要的设计中使用的开发板中 CAN 是挂 APB1 时钟
上的其频率为 42 MHz由波特率的计算公式
特率 = 1 /正常的位时间正常的位时间 = 1tq + tBS1 +
tBS2但是这样计算的为理论值且难以计算和理
在实际设置中有简单公式( 1) ,现欲得到 1 Mbit /
s 的波特率计算如下:
( 1) : CANclock APB 总线频 率; prescler
APB 总线时钟6 分频; tq
tBS1
tBS2分别对应1
5
1 tcan时钟周期
3. 2 FPGA STM32 通信模块
在硬件设计中已经介绍了 STM32 FPGA 使
I /O 口连接软件设计采用 FSMC 总线实现二者
的数据信息的交换
STM32 FPGA 的通信既要完成 STM32
FPGA 下传数据的工作还要达到 STM32 FPGA
中回读数据的目的所以两者的通信包含了接收
数据和传送数据两个部分在本文所设计的控制
系统中为了能够实现同步控制多台步进电机使
用了 FSMC 来 实 现 STM32 FPGA 两 者 之 间 的
通信
ST 公司为用户开发提供了完整高效的工具和
固件库STM32 固件库中拥有 FSMC SRAM 控制
器相应的操作固件其中含有 1 个数据结构和 3
函数
FSMC_NORSRAMInitStructure; / /调用库函数;
RCC_Configuration( ) ; / /时钟选择;
NVIC_Configuration( ) ; / /中断优先级;
FSMC_GPIO_Configuration( ) ; / /连接 IO 口初始化;
FSMC_SRAM_Init( ) ; / /FSMC 配置;
USART_Initial( ) ; / /UART1 端口配置
本设计初始化模块中只需要对 FSMC 工作方式
进行配置部分 STM32 初始化程序如下:
FSMC _ NORSRAMInitTypeDefFSMC _ NORSRAMIni-tStructure; / /
定义 FSMC 初始化的结构体变量
FSMC _ NORSRAMTimingInitTypeDefreadWrite-Timing; / /用 来 设
FSMC 读时序和写时序的指针变量
GPIO _ InitTypeDefGPIO _ InitStructure; / /初 始 化 FSMC 总 线 的
IO
部分 FPGA 程序如下:
assign rd = ! ( csn & rdn) ; / /获取读脉冲
assign wr = ! ( csn & wrn) ; / /获取写脉冲
assign db = rd? indata: 16' hzzzz; / * 当不进行读写操作时 db =
indata;
当进行写操作时 db = 16'hzzzz; 当进行读操作时 db = indata* /
4 实验验证
为验证该运动控制器的控制效果和控制精度
现对其控制进行实验验证实验验证是在自行设
计制作的运动平台上进行的该运动实验平台运动
执行部分采用的是弹性比较好的弹簧中间则是支
撑弹簧其中 3 个电机与 3 根缆绳相连缆绳的另一
端则连接在软体机器人的单个关节上通过控制器
控制不同电机的启停运转来实现该节弹簧的弯
并可以实现弹簧在不同方向的运动控制器以
基于 Cortex-M4 处理器为核心的 STM32F407 芯片和
Xilinx 公司的 AX7102 FPGA 开发板进行通信
数据处理位置确定和算法实现等操作软体机器
人运动平台如图 10 所示
通过控制算法和对应的数据计算在运动平台
按照预先设定的运动方式进行运动通过同时控
制多个电机进行协同运动其中电机转速为 2 r /
min以中间支撑轴为原点可以得到在最终运动状
态下机器人弯曲了约 45°缆绳缩短约 5 cm具体
运动实验过程如图 11 所示
11 仅展示机器人首节运动其中图 11( a)
为机器人起始状态11( b) 11( c) 11( d)
分别对应 51530 s 时运动状态其中图 11( d) 即为
最终运动状态由运动状态结果可以得到开发板
在控制电机运动过程中整体运行平稳运动速度有
变化在按照设定的轨迹运动时运动精度较高
本实现了设想的功能使得该实验成功实现

5 结论
对于目前软体机器人运动控制难度大精度
协同控制多电机难以实现同步性等问题提出
采用基于 ARM FPGA 的软体机器人的 CAN 总线
运动控制器得到以下结论
( 1) 实现 STM32 FPGA 接口通信STM32
发板根据上位机传输过来的不同命令和相关数据
进行对应的数据分析和处理然后传输给 FPGA
发板与此同时也要从 FPGA 开发板上依次读取直
流伺服电机在运动过程中相应的速度和位置等参
; 伺服驱动器通过脉冲宽度调制来实现直流伺服
电机的精确控制
( 2) 实现 STM32 开发板与上位机之间的通信
这里采用 CAN 总线因为 CAN 总线可以进行大量
数据的高速通信适合对多电机进行协同控制
可大量传输下位机采集到的数据
( 3) 在加减速模块中采用 S 型曲线加减速法
有利于减小电机的冲击实现机器人整体平稳运
作用方法是通过改变运动过程中加速度的大
使其在不同阶段拥有不同的加速度来大幅度
减小冲击力
( 4) 根据自行设计加工的运动对软体机器人的
运动控制进行了实验验证实验结果表明该控制
器整体协同控制性能较好能比较理想地实现预期
的运动
由于控制算法部分并没有介绍在实际控制过
程中与控制算法中的仿真存在误差所以下一步会
对控制算法和机械结构进行优化以期望实现更理
想的运动
信迈提供STM32+FPGA运动控制器定制化解决方案。

相关文章:

基于STM32 + FPGA 的软体机器人的 CAN总线运动控制器的设计

针对在软体机器人控制时,多电机协同控制过程中难度大、通用性差、协同性差等缺点,设计了基于 ARM和 FPGA的软体机器人的控制器局域网络 ( controller area network,CAN) 总线运动控制器,采用 ARMCortex-M4 …...

ROC曲线和AUC值

ROC曲线(Receiver Operating Characteristic,受试者工作特征)评价分类模型的可视化工具,是一条横纵坐标都限制在0-1范围内的曲线横坐标是假正率FPR,错误地判断为正例的概率纵坐标是真正率TPR,正确地判断为正…...

【vue.js】在网页中实现一个金属抛光质感的按钮

文章目录前言效果电脑效果手机效果说明完整代码index.html前言 诶?这有一个按钮(~ ̄▽ ̄)~,这是一个在html中实现的具有金属质感并且能镜面反射的按钮~ 效果 电脑效果 手机效果 说明 主要思路是使用 navig…...

android实现评论区功能

效果 activity_detail.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http…...

Java每日一练(20230319)

目录 1. 最大矩形 &#x1f31f;&#x1f31f;&#x1f31f; 2. 回文对 &#x1f31f;&#x1f31f;&#x1f31f; 3. 给表达式添加运算符 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练…...

Redis缓存双写一致性

目录双写一致性Redis与Mysql双写一致性canal配置流程代码案例双写一致性理解缓存操作细分缓存一致性多种更新策略挂牌报错,凌晨升级先更新数据库,在更新缓存先删除缓存,在更新数据库先更新数据库,在删除缓存延迟双删策略总结双写一致性 Redis与Mysql双写一致性 canal 主要是…...

【2023-Pytorch-检测教程】手把手教你使用YOLOV5做交通标志检测

项目下载地址&#xff1a;YOLOV5交通标志识别检测数据集代码模型教学视频-深度学习文档类资源-CSDN文库 交通标志的目标检测算法在计算机视觉领域一直属于热点研究问题&#xff0c;改进的优化算法不断地被提出。国内外许多学者针对现有的目标检测方法中网络结构、目标定位、损…...

Java中的二叉树

文章目录前言一、树形结构&#xff08;了解&#xff09;1.1 概念1.2 概念&#xff08;重要&#xff09;1.3 树的表示形式&#xff08;了解&#xff09;1.4 树的应用二、二叉树&#xff08;重点&#xff09;2.1 概念2.2 两种特殊的二叉树2.3 二叉树的性质2.5 二叉树的存储2.5 二…...

基于 gma 绘制古代洛阳 5 大都城遗址空间分布地图

了解 gma gma 是什么&#xff1f; gma 是一个基于 Python 的地理、气象数据快速处理和数据分析函数包&#xff08;Geographic and Meteorological Analysis&#xff0c;gma&#xff09;。gma 网站&#xff1a;地理与气象分析库。 gma 的主要功能有哪些&#xff1f; 气候气象&a…...

分析 Spring 的依赖注入模式

一、依赖注入二、Field Injection优点缺点三、Constructor Injection优点1. 容易发现 code smell优点2. 容易厘清依赖关系优点3. 容易写单元测试优点4. Immutable Object缺点&#xff1a;循环依赖四、总结一、依赖注入 依赖注入 &#xff08;Dependency Injection&#xff0c;…...

IntelliJ IDEA创建Servlet

目录 ——————————————————————————————— 一、创建Java项目 1、创建java项目 2、选择java 3、next 4、给项目命名 5、新创建完java项目的目录结构 二、变java为servlet项目 1、变servlet项目 2、选择Web Application 3、更新完成后的目录…...

Spring Boot如何让自己的bean优先加载

背景介绍 在一些需求中&#xff0c;可能存在某些场景&#xff0c;比如先加载自己的bean&#xff0c;然后自己的bean做一些DB操作&#xff0c;初始化配置问题&#xff0c;然后后面的bean基于这个配置文件&#xff0c;继续做其他的业务逻辑。因此有了本文的这个题目。 实现方法…...

LeetCode分类刷题----动态规划

动态规划509.斐波那契数列70.爬楼梯746.使用最小花费怕楼梯62.不同路径63.不同路径||343.整数拆分96.不同的二叉搜索树01背包问题416.分割等和子集1049.最后一块石头的重量||494.目标和474.一和零完全背包问题518.零钱兑换||377.组合总和IV322.零钱兑换279.完全平方数139.单词拆…...

今年好像没有金三银四了?

大家好&#xff0c;我是记得诚。 金三银四&#xff0c;是换工作的高峰期&#xff0c;新的一年结束了&#xff0c;在年前拿完年终奖&#xff0c;在年后3月和4月换个满意的工作。 单从我公司来看&#xff0c;目前还没有一个人离职&#xff0c;往年离职率是要高一些的。 还有我…...

【C++】入门知识之 函数重载

前言提到重载这个词&#xff0c;我们会想到什么呢&#xff1f;重载有一种一词多义的意思&#xff0c;中华文化博大精深&#xff0c;之前有一个笑话&#xff0c;中国的乒乓球谁都打不过&#xff0c;男足谁都打不过&#xff0c;哈哈哈这也是非常有意思的&#xff0c;但是今天我们…...

文心一言发布,你怎么看?chatGPT

百度全新一代知识增强大语言模型“文心一言”于2021年3月16日正式发布&#xff0c;作为一款自然语言处理技术&#xff0c;它引起了广泛的关注和讨论。 首先&#xff0c;文心一言是一款具有重大意义的自然语言处理技术。在人工智能领域&#xff0c;自然语言处理技术一直是一个难…...

字符函数和字符串函数【上篇】

文章目录&#x1f396;️1.函数介绍&#x1f4ec;1.1. strlen&#x1f4ec;1.2. strcpy&#x1f4ec;1.3. strcat&#x1f4ec;1.4. strcmp&#x1f4ec;1.5. strncpy&#x1f4ec;1.6. strncat&#x1f4ec;1.7. strncmp&#x1f396;️1.函数介绍 &#x1f4ec;1.1. strlen …...

list的模拟实现(模仿STL)

目录 一、模拟实现前的准备 1.list结构认识 2.迭代器的实现不同 3.如何实现需要的功能 二.结点类实现 三.迭代器实现 1.实现前的问题 2._list_iterator类的成员变量和构造函数 3.*和->运算符重载 4.前置和后置的实现 5.前置--和后置-- 6.和!运算符重载 四.list类的实现 1.li…...

05-STM32F1 - 串行通信SPI

SPI STM-SPI作为主机&#xff0c;从机 SPI的时钟&#xff0c;最高为Pclk/2&#xff0c;SPI1最高为36Mhz&#xff0c;SPI2最高为18Mhz。 SPI的四种模式 CPOL CPHA&#xff0c;数据帧8~16位&#xff0c;LSB,MSB 全双工&#xff0c;双向单线&#xff0c;单线 物理层 接口标准…...

【Pytorch】Tensor的分块、变形、排序、极值与in-place操作

本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 这是目录Tensor的分块Tensor的变形Tensor的排序Tensor的极值Tensor的in-place操作Tensor是PyTorch中用于存储和处理多维数据的基本数据结构&#xff0c;它类似于NumPy中的ndarray&…...

数组栈的实现

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 目录所有接口函数栈的初始化在栈顶放数据释放数据删除数据取栈顶的数据判断栈取区是否为…...

*p++,*(p++),*++p,(*p)++区别?

*p++:等同于:*p; p += 1; 解析:由于和++的运算优先级一样,且是右>结合。故p++相当于*(p++),p先与++结合,>然后p++整体再与结合。前面陈述是一种最 常见的错误,很多初学者也是这么理解的。 但是,因为++后置的时候,本身含义就是先 运算后增加1(运算指的是p++作为…...

又一个线上偶发问题-系统短暂无法获取到Redis连接

概述 最近不知道咋回事&#xff0c;老是在线上遇到偶发的故障&#xff0c;它突然出现&#xff0c;又很快消失了。 在2023年3月11下午差不多六点左右&#xff0c;我正在工位上喝着香味扑鼻的金骏眉红茶&#xff0c;突然接到了一个电话&#xff0c;拿起手机一看&#xff0c;是阿里…...

[ 系统安全篇 ] 拉黑IP - 火绒安全软件设置IP黑名单 windows使用系统防火墙功能设置IP黑名单

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

MongoDB【部署 01】mongodb最新版本6.0.5安装部署配置使用及mongodb-shell1.8.0安装使用(云盘分享安装文件)

云盘分享文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11sbj1QgogYHPM4udwoB1rA 提取码&#xff1a;l2wz 1.mongodb简单介绍 MongoDB的 官网 内容还是挺丰富的。 是由 C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&…...

算法竞赛必考算法——动态规划(01背包和完全背包)

动态规划(一) 目录动态规划(一)1.01背包问题1.1题目介绍1.2思路一介绍(二维数组)1.3思路二介绍(一维数组) 空间优化1.4思路三介绍(输入数据优化)2.完全背包问题2.1题目描述&#xff1a;2.2思路一(朴素算法)2.3思路二(将k优化处理掉)2.4思路三(优化j的初始条件)总结1.01背包问题…...

基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)

摘要&#xff1a;农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况&#xff0c;自动化标注、记录和保存病害位置和类型&#xff0c;辅助作物病害防治以增加产值。本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统&#xff0c;在介绍算法原理的同时&#…...

QT入门Item Views之QListView

目录 一、QListView界面相关 1、布局介绍 二、代码展示 1、创建模型&#xff0c;导入模型 2、 设置隔行背景色 3、删除选中行 三、源码下载 此文为作者原创&#xff0c;创作不易&#xff0c;转载请标明出处&#xff01; 一、QListView界面相关 1、布局介绍 先看下界面…...

GEE:计算1990-2021年的指数最大值和最小值,并根据最大最小值对每一副影像归一化

本文记录了在GEE平台上计算影像集合中所有像素的最大值和最小值。并且根据该最大最小值对所有影像进行最大最小值归一化。以SAVI为例,记录了主要函数的使用方法和代码。 结果如图所示, 文章目录 一、计算每一副影像的最大值或者最小值,并将最值保存在 List 中二、计算 Lis…...

LeetCode KMP 算法

可以参考https://www.bilibili.com/video/BV1AY4y157yL/kmp 主要做的就是子串匹配&#xff0c;类似C程序的 strstr() 函数记录一下&#xff0c;也防止我自己忘记传统暴力求解算法是源串 ssssssssa 子串 sssa&#xff08;下面暴力求解&#xff09; 先 (子串从 0 位置匹配&#x…...