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

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)

 

 OSW-MMOS直驱方向盘DIY过程记录 - 简书 (jianshu.com)

        DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)  首先讲一下这个直驱系统大概的框架,首先是电脑,电脑里装MMOS的软件(这个软件国内高手把它汉化了的),电脑通过USB线,连接一个stm32板,这个stm 32板上刷MMOS的固件,这个STM32板再通过一根脉冲线,连接到电机驱动器上的CN 2接口,STM32板就作为电机驱动器的上位机,就是这根从stm32到电机驱动器的接线,也是我们这次自行组装需要接线最多的地方,然后电机驱动器再通过两根线与伺服电机相连(这两根线是电机厂商附带免费送的),这就是一个完整的流程,设置好后,我们就可以通过伺服电机来控制游戏里的汽车方向了。
首先就从最上面的ST M32板说起,原教程用的是一个原厂的ST M32开发版。而我这次用到的是一个比较小的ST M32核心板,芯片也和原厂的同样为STM32f407VGT6,这个核心板是不带下载组件的,要另外购买一个下载模块,而我这次是把这个MMOS固件,发给商家,让他帮忙给我下载(也叫刷)上去,晶振用8m的,(他这个晶振有的是25m的,有的是8m的),焊接好两排排针,调试好,他这个核心板是免费送miniusb线,和一组彩色杜邦线,(虽然我后来是自己买了一根绿联的MINIUSB线换上了,和几颗屏蔽磁环),下面有接线的对照图,他这个核心板,比起原厂的开发板,针脚的字母上前面少一个P字母,对应着接就行了是一样的,,他这个核心板我用了这么多天下来,是没什么问题的,可以用,唯一不好的地方,就是因为板子太小,这个地线GND 接口太少,有时候我不得不把两根或者多根地线缠绕在一起用,据说所有的地线在这个板子里,实际上是相通的,比如我这次就把这个com线,接到了SWD调试接口那里的地线上,还有一根地线也缠绕在了一起,,

 

1、电机准备

选择支持外部模拟转矩模式的伺服电机+配套伺服驱动器,注意看外部模拟转矩模式下是否支持指令换向

a.亿丰驱动器、时代超群等支持自定义IO输入控制换向的电机,力反馈使用PWM+DIR模式

b.华大、伊莱斯等转矩模式下只支持-10~+10v模拟信号输入控制,力回馈使用100%-50%-0PWM模式,需要使用运放添加减法电路控制

a类咸鱼较少,淘宝全新成套1200-1400左右,b类咸鱼二手较多,价格更低

交流伺服电机是目前性能最好的方案,普遍使用130电机,但130电机单电机就有11kg,家里小需要经常换地的话就很痛苦,于是选了110 6N电机,方便搬动的同时,转动惯量也更小,理论上响应速度也应该更快,伺服电机最高可以达到额定扭矩的3倍,18N应该可以稳稳的满足原G29选手,早期不了解具体特性,咸鱼选了一个伊莱斯电机,价格合适,成色漂亮,到手测了以后才发现不支持换向,来回折腾一个月,终于调试成功

伺服驱动
伺服电机是模拟方向盘最主要的部件,伺服电机要具有模拟量控制的转矩模式。推荐使用伺服电机驱动器:亿丰AASD,台达ASDA-AB,日鼎DCS。

1.  亿丰AASD接线及驱动器设置

 主控板上的电机信号控制线为DB9母头
恢复默认设置:

设置Pn000=2后可使用Fn004恢复出厂设置,具体方法请查看驱动器说明书。

参数设置:

Pn002=0  转矩模式。

Pn003=0  外部使能。

Pn018=0或1  当方向盘转向与游戏中相反时改动此参数。

Pn052=1  SigIn1设置为伺服使能。

Pn053=18  SigIn2设置为指令取反。

Pn188=5  设置值越大模拟量响应越慢,干扰噪声越小。

Pn189=30  模拟量与转矩的比例。

Pn191=0或1  反馈力方向不对时改动此参数。

Pn270=300  电机最大转速。

所有设置完成后重新上电。

自动校准模拟量(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,进入Fn007,长按SET后显示donE,完成模拟转矩指令校正。如方向盘还会自行转动,可用Pn190进行微调。

使用亿丰伺服电机的设置


2.  台达ASDA-AB接线及驱动器设置

接线如下图

 主控板上的电机信号控制线为DB9母头

 

恢复默认设置: 

 

P2-08=10  恢复出厂配置,完成后重新上电。

参数设置:

P0-02=09  可以在伺服驱动器上看到模拟量电压的大小。

P1-01=03  设定伺服扭矩模式。

P1-46=12500  编码器一圈输出的脉冲数为2500。

P1-55=200  最大转速,根据实际使用情况设置。

P2-10=01  DI1-设置为使能接口。

P2-13=06  DI4-设置为命令输入反向控制。

所有设置完成后重新上电。

自动校准模拟量(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,P2-08=20,P4-10=2

如果有报警:

ALE14(逆向极限异常)解除方法P2-16参数值设为0。

ALE15(正向极限异常)解除方法P2-17参数值设为0。

使用台达伺服电机的设置


3.   日鼎DCS接线及驱动器设置

 主控板上的电机信号控制线为DB9母头
恢复默认设置:

按MOED/ESC到Fn-01,按向上键到Fn-06,长按SHIFT/ENT出现LoAD后放开,出现donE,初始化成功,重新上电。

参数设置:

Pn-09=2 转矩模式。按MOED/ESC到Pn-01,按向上键到Pn-09,长按SHIFT/ENT数值闪动后放开,按向上/向下键调数值为2(转矩模式),长按SHIFT/ENT出现Pn-09,设置完成。

Pn-10=1       COUNT1设置为使能。

Pn-11=2       COUNT2设置为复位。

Pn-19=2500    编码器单圈脉冲数。

Pn-34=300     最大转速,根据实际使用情况设置。

Pn-54=0.01    VREF电压滤波。

Pn-70=1到1.5  扭矩倍数。

Pn-74=15  15:正向力反馈,14或16:反向力反馈。

所有设置完成后重新上电。

模拟量调零(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,运行Fn07,查看ON-10是否为0+/-0.02V,打开电机使能,查看方向盘是否转上一边,Pn-71可进行微调。

 作者:fred_wu_xs https://www.bilibili.com/read/cv10344806/ 出处:bilibili

 

2、STM32控制板

MMOS方案使用stm32f4作为主控板,淘宝上STM32F407普遍50左右,512K的版本就可以,mini的版本体积更小,引脚也够,就选用了这个

使用usb转TTL串口烧录固件后,通过usb连接电脑,启动MMOS软件,可以识别并进行设置

3、扩展输入输出电路

MMOS固件是读取电机编码器数据作为方向盘角度输入,游戏里力回馈数据转换为PWM+方向输出控制电机转动实现力回馈,伺服电机转矩模式支持模拟输入,用pwm当做模拟信号直接输入,电机会有震动,体验并不好,所以需要添加外围电路转换为模拟信号,

编码器信号输入:

便宜的电机都是增量式编码器,ABZ三路信号,每路差分输出,A+A-B+B-Z+Z-,总共6路信号,差分信号可使用单路直接输入,但容易受到干扰,因此使用AM26LS32或sn75175对差分信号进行采集,转换为单路ABZ方波信号,输入至STM32,波形更稳定,方向识别也更精准

力回馈pwm输出:

a.支持指令换向的电机,使用pwm转0-10v模块转换为模拟量后输入,dir作为单独指令输入

b.只支持-10v~+10v的电机,使用pwm转0-10v转换为模拟量,再使用运放减法电路,得到-5v~+5v的模拟输出(https://www.jianshu.com/p/9f9480f7aaca)

-5~+5V的信号可以直接输入至伺服驱动器,驱动器中模拟信号增益可调,将原增益参数调大即可达到300%的转矩控制

pwm转电压目前有两种方案,LTC2644芯片-延迟低速度快价格高,GP8108芯片-价格低速度一般,引脚简单够用

运放减法使用OP07芯片

驱动器使能信号:

驱动器可以设置为通电使能,或IO引脚控制使能,使用控制使能,可以单独外接紧急切断按钮更加安全

无方向控制的-10v~+10v方案中,使用GP8101 pwm转模拟信号模块输出需要10ms左右稳定,未稳定前模块输出为0,通过减法电路后,输入到模拟引脚为-5v,此时如果先伺服电机已经通电,会有一下大幅度反转,比较危险,因此需要添加RC延时导通电路,控制使能信号延时200ms发送(https://www.jianshu.com/p/98396fd67af3)

4、方向盘部分电路连接

电机编码器  ——  驱动器编码器接口CN1(伺服电机成套匹配)

电机动力 —— 驱动器动力接口U V W PE(伺服电机成套匹配)

220V交流电—— 电源滤波器 —— 驱动器rst输入,地线 —— 驱动器外壳或单独接地引脚(地线十分重要,必须接,电机对电网有干扰,会影响踏板的模拟量的输入,可以使用电源录波器来进行隔离,效果显著)

驱动器控制接口CN2 —— STM32控制及板外围电路 (编码器ABZ、驱动器模拟输入、模拟地、方向指令,驱动器使能)

伊莱斯电机编码器为2500线,mmos转数设置10000,勾选反向编码器,PWM设置100.50.0,频率8.2KHz

5、方向盘机械部分组装

电机轴去掉定位梢后,使用张紧套连接方向盘或快拆,张紧套与快拆见需要一个转接法兰连接固定,可3D打印或淘宝CNC定制,竞技方向盘孔距一般为70mm,快拆分70mm和75mm两种

电机本身需要对应尺寸的基座,固定至方向盘支架,淘宝有成品伺服电机支架,孔距需要和游戏支架匹配

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY) | MR (mr-cn.net)

MMOS软件界面

 

控制方案

所谓的力反馈其实就是扭矩控制。游戏将相应的力反馈信号发送给外设的驱动程序,驱动程序通过USB传输给主控后,主控产生一个PWM信号,其占空比对应游戏的力反馈力度;PWM信号再传输给PAC(PWM-Analog Converter)芯片,PAC芯片按其占空比产生对应幅度的模拟量给伺服驱动器,驱动器将控制电机产生对应扭矩的力。

Manaul-1.png

具体如何设置为扭矩模式需要阅读伺服的说明书。以我的台达为例,扭矩模式下扭矩值通过T_REF的电位控制,所以我们需要PAC芯片根据占空比产生-10~10V的电压信号。要产生正的的模拟量简单,但是负的会麻烦许多,但我们又肯定是需要不同方向的扭矩的。

Manaul-2.png

所以阅读说明书,发现我们可以通过输入一个开关量,控制扭矩的方向。也就是所谓的指令取反功能。这下就简单了,我们将DI4设置为方向取反,之后只需要管扭矩的绝对值,方向通过设置一根单独的方向信号线就可以解决。这也就是所谓的PWM+DIR模式。

不同的伺服有着不同的控制功能和要求,比如日鼎用的是H桥模式,那么我们就需要产生两组PWM信号,用以控制H桥等等。具体的情况需要具体分析,也需要仔细阅读说明书。相对来讲,PWM+DIR是比较简单的一种。

summary.png

我们使用的是MMOS这一闭源方案,作者提供的固件是没有源码的,因此我们的芯片型号、引脚定义都已经固定好了,我们直接套用即可。如果是日鼎的方案,PE11就是另外一个PWM,仿照PE9串接一个PAC芯片即可。

Manual-3.png

Manual-4.png

还需要注意的是,DI-默认是上拉使能的,接在COM-上才是失能。此外,在设计时应该按照说明书的要求,严格区分模拟电与数字电,不同的部分使用不同的电源。使用了差分驱动的信号线,应将差分信号双绞成对传送到光耦。PAC芯片前的光耦,因为传送的是PWM信号,我们需要使用高速光耦,在选型时应注意相关参数。

之后按照说明书,将信号线焊接在相应的引脚上。

参考资料

国内中文资料较多的是哔哩哔哩各个作者的专栏。

DIY伺服直驱方向盘试玩神力科莎 @pkintel DIY伺服直驱方向盘试玩神力科莎_哔哩哔哩_bilibili

这里要特别感谢 @pkintel 前辈,他在视频评论区分享了完整的资料,包括MMOS固件、驱动、设置指南、接线指南以及他设计的多种方案的控制板图纸。

(待完善)台达ASDA-AB伺服器DIY MMOs 直驱力回馈方向盘教程 @极速外卖 (待完善)台达ASDA-AB伺服器DIY MMOs 直驱力回馈方向盘教程 - 哔哩哔哩

该贴内有正确的台达伺服的连接以及设置方法。

MMOS FFB伺服直驱方向盘主控板DIY @fred_wu_xs MMOS FFB伺服直驱方向盘主控板DIY - 哔哩哔哩

该贴内有多种品牌的伺服的连接及设置方法。

【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos @辅助全关 【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos - 哔哩哔哩

该作者提供了详细的伺服设置方法以及接线方法(不止台达一种,同作者还分享了多种其他伺服的教程)。

 DIY国产伺服方向盘完成,教程,MMOS汉化 (stmicroelectronics.cn)

DIY国产伺服方向盘完成,教程,MMOS汉化 (stmicroelectronics.cn)


                这次DIY未用到12-24V电源,是直接去电STM32不知道对此有什么影响(后期看是否能慢慢调整)
                具体参数设置:1丶驱动器设置Pn02设置为0  (转矩模式)
                                                         Pn03设置为0  (外部使能)
                                                         Pn53设置为58 (指令取反)用于接PWM&DIR中的DIR
                                                         Pn161自定义设置(这个是设置接收型号的区间:自己理解的undefined )
                                                         Pn162同上
                                                         Pn190模拟转矩指令偏移调整:自定义设置(受STM32影响)

输出的DAC电压值大小
                                                         Pn191模拟转矩指令方向:这个也要用到,当方向反转时伺服停止使能,设置本参数(1-2)具体看自己之前设置,然后
                                                                                             调转A.B相
                                                         驱动器参数设置到这里基本上就可以了,其他关于刚性等需设置Pn190往下的参数,详情请自己研究说明书
                                      2丶接线:本次接线CN2公用了8根线算上外接使能那根一共10根  (抱歉接线错了,上班整的怕领导发现,现在更新下)                                                   
                                                        驱动器     连接线     STM32
                                                           6-----------红-----------使能
                                                           9-----------蓝-----------电源(12-24V这里我用了5Vundefined )
                                                         10-----------白-----------COM(应该是12-24V的地线)                                                  
                                                         13-----------黑-----------地AGND模拟量输入地线    接STM32地
                                                         15-----------黄-----------编码器Z+      对应stm32的PA2
                                                         18-----------橙-----------编码器B+      对应stm32的PA1
                                                         20-----------清-----------编码器A+      对应stm32的PA0
                                                         25-----------紫-----------Vref模拟量输入     对应stm32的PE9
                                                           7 -----------绿-----------指令取反             对应stm32的PE11
                                               链接线只做参考,具体颜色请自己区分

哔哩哔哩几个UP的视频参考

超详细低成本自制模拟器教学 教程向!_哔哩哔哩_bilibili

OSW MMOSFFB 多功能自制主控板调试_哔哩哔哩_bilibili

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程_哔哩哔哩_bilibili

MMOS FFB伺服直驱方向盘主控板DIY - 哔哩哔哩 (bilibili.com)

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程-硬件综合区-外设天下-电脑外设发烧友聚集地 (wstx.com)

 

有的方向盘会在正中位置来回左右摆动,的这样一个问题,我们今天来解决一下

这是通过调整三个参数来解决的,一个是电脑上mmos软件的“最小力反馈”,另外两个是电机驱动器上面的pn159和 pn190,调整pn159用dn017观察,而调整pn190是用dn016观察。

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程

      先说说mmos软件的“最小力反馈”这个参数,首先这个参数不要设置过大,我一般用都是3%到5%,其次,比较有意思的一点,这个参数一变动的话,电机驱动器上面的pn159和 pn190的数值也要相应的重新调整才匹配。

    而调整pn159和pn190,我不建议用自动调整的方法,因为方向盘来回左右摆动,无法读准数值。

    注:这次电机驱动器调整的这些参数都是即时生效的,不用断电重启都可以。

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程

   
       下面详解一下我的实战例子,电机驱动器上电,打开电脑的mmos软件,(因为这个软件经常不能保存参数,我们稳妥一点),先点安装,把电机的“设备设置”参数设置好,再点保存,关闭,然后把软件的“最小力反馈”设置到3%,这时发现方向盘有来回左右摆动现象,调整电机驱动器pn 190参数,我的pn 190默认参数是24,我们先把它归0,然后观察dn 016参数,(因为方向盘来回左右摆动的原因,这个数值是不停跳动的,需要我们用手扶住方向盘,把它固定在正中央位置),这时读得它的数值是0.19,经过单位换算,我们就把pn190的参数给设置成-190(负数),这时候我们发现方向盘已经不摆了,我们再用同样的方法,同样的步骤,通过观察dn 017把pn 159的参数也给改一下,我这里这两个参数也基本上是一样的,到这里基本大功告成。(感觉主要起作用的还是pn190,调好以后,方向盘不来回摆动正常了以后,就把pn159的数值也调到和pn190一样的就行了)


 

      接下来我们再折腾一下,验证一下,我们把mmos软件里的“最小力反馈”设置到5%,这个时候发现方向盘又开始摆动了,观察dn 016的参数,(当然还是要用手扶正盘子),读数为0.11,再次调整pn 190参数,因为这次没有归0,上面的数值已经是负190了,我们累加在一起,直接设置成负300,好了,又搞定了,pn159也一样的。


 

      就是说我们电机驱动器调好一个数值后,就可以不动了。由于mmos的参数经常不能保存,每次打开就只需要改mmos里面软件的参数,(改成和你电机驱动器相对应的那个数值),就行了。

 

【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos - 哔哩哔哩 (bilibili.com)

 

 【一张图】配置台达伺服diy osw ffb mmos力反馈直驱台达方案_哔哩哔哩_bilibili

 

相关文章:

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)

OSW-MMOS直驱方向盘DIY过程记录 - 简书 (jianshu.com) DIY 一个汽车方向盘游戏外设(MMOS OSW DIY) 首先讲一下这个直驱系统大概的框架,首先是电脑,电脑里装MMOS的软件(这个软件国内高手把它汉化了的),电脑通过USB线&a…...

校园网络技术需求分析

路由技术: 路由协议工作在 OSI 参考模型的第 3 层,因此它的作用主要是在通信 子网间路由数据包。路由器具有在网络中传递数据时选择最佳路径的能力。 除了可以完成主要的路由任务,利用访问控制列表(Access Control List&#x…...

计算机网络(二):TCP篇

文章目录 1. TCP头部包含哪些内容?2. 为什么需要 TCP 协议? TCP 工作在哪一层?3. 什么是 TCP ?4. 什么是 TCP 连接?5. 如何唯一确定一个 TCP 连接呢?6. UDP头部大小是多少?包含哪些内容&#xf…...

测试登录界面:Python

import unittest from selenium import webdriver class LoginTest(unittest.TestCase): def setUp(self): self.driver webdriver.Chrome() def test_login(self): # 打开登录页面 self.driver.get("http://example.com/login") # 输入用户名和密码 user…...

Rust踩雷笔记(7)——两个链表题例子初识裸指针

目录 leetcode 234leetcode 19 leetcode 234 题目在这https://leetcode.cn/problems/palindrome-linked-list/,leetcode 234的回文链表,思路很简单,就是fast和slow两个指针,fast一次移动两个、slow一次一个,最后slow指…...

用什么命令看Linux系统的体系架构

要查看Linux系统的体系架构,可以使用uname命令。在终端中运行以下命令: uname -m该命令将返回系统的体系架构,例如x86_64表示64位系统,i686表示32位系统。 uname 使用方法 uname命令用于获取操作系统的相关信息。它可以用于显示…...

消息中间件大揭秘:选择之前你必须知道的关键信息

Hello大家好!我是小米,很高兴再次和大家见面!今天的话题非常精彩,我们将深入探讨消息中间件,并了解一些常见的消息队列:RabbitMQ、RocketMQ、Kafka以及Redis。如果你正在准备面试,或者只是对这些…...

【Unity基础】4.动画Animation

【Unity基础】4.动画Animation 大家好,我是Lampard~~ 欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 (一)Unity动画编辑器 (1)Animation组件 这一张我们要学习如何在unity编辑器中&…...

FreeRTOS移植以及核心功能

文章目录 freertos和ucos区别,优缺点比较移植步骤核心功能内存管理(5种内存管理策略)FreeRTOS任务调度算法有三种时间管理通信管理 栈管理 freertos和ucos区别,优缺点比较 FreeRTOS(Free Real-Time Operating System&…...

重装系统(配置环境)

这里写目录标题 0.重装系统1.python1.1 anaconda1.2 pycharm1.3 深度学习环境配置 2.java2.1.安装JDK2.2.配置JDK环境变量2.3IDEA2.4 Maven 3.大数据3.1 虚拟机3.2 Hadoop平台3.3 存储3.4 采集3.5 计算3.6 查询3.7 可视化 0.重装系统 // An highlighted block var foo bar;1.…...

docker系列-报错以及解决指南

1. windows运行docker报错Windows Hypervisor is not presentDocker Desktop is unable to detect a Hypervisor.Hardware assisted virtualization and data execution protection must be enabled in the BIOS. Docker Desktop - Windows Hypervisor is not presentDocker D…...

Vue3快速上手

1.Vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:Release v3.0.0 One Piece vuejs/core GitHub 2.Vue3带…...

二叉搜索树(BST,Binary Search Tree)

文章目录 1. 二叉搜索树1.1 二叉搜索树概念1.2 二叉搜索树的查找1.3 二叉搜索树的插入1.4 二叉搜索树的删除 2 二叉搜索树的实现3 二叉搜索树的应用3.1二叉搜索树的性能分析 1. 二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树&#xf…...

分析key原理

总结: key是虚拟dom对象的标识,当数据发生变化时,vue会根据新数据生成新的虚拟dom,随后vue进行新虚拟dom与旧虚拟dom的差异比较 比较规则: ①旧虚拟dom中找到了与新虚拟dom相同的key 若虚拟dom中的内容没变&#xff0c…...

[CISCN2019 华东南赛区]Web11 SSTI

这道SSTI 差点给我渗透的感觉了 全是API 我还想去访问API看看 发现这里读取了我们的ip 我们抓包看看是如何做到的 没有东西 我们看看还有什么提示 欸 那我们可不可以直接修改参数呢 我们传递看看 发现成功了 是受控的 这里我就开始没有思路了 于是看了wp 说是ssti 那我们看…...

百度春招C++后端面经总结

这次的面经,主要都是问操作系统、网络编程、C++ 这三大方向。 能明显感觉到,C++面试和Java或者Go面试重点,Java/Go主要是问MySQL、Redis。 一、介绍一下webserver项目 服务器开始运行,创建(初始化)线程池(IO密集型,线程数n+1); 创建 epoll 对连接进行监听 监听到连…...

小程序开发一个多少钱啊

在今天的数字化时代,小程序已经成为一种非常流行的应用程序形式。由于它们的便捷性、易用性和多功能性,小程序吸引了越来越多的用户和企业。但是,很多人在考虑开发一个小程序时,都会遇到同一个问题:开发一个小程序需要…...

C# 随机数生成 Mersenne Twister 马特赛特旋转演算法 梅森旋转算法

NuGet安装MathNet.Numerics 引用: using MathNet.Numerics.Random; /// <summary>/// 包括lower&#xff0c;不包括upper/// </summary>/// <param name"lower"></param>/// <param name"upper"></param>/// <para…...

C++进阶(二)

目录 1、Vector2D 默认构造、重载 2、char 深度理解 3、深度理解简单的类操作 1、Vector2D 默认构造、重载 #include <iostream> #include <cmath>class Vector2D { private:double x; // X坐标double y; // Y坐标public:// 默认构造函数&#xff0c;将向量初…...

zoneinfo

在Linux系统中&#xff0c;zoneinfo是一个包含了世界各地时区信息的目录&#xff0c;通常位于/usr/share/zoneinfo。这个目录下的子目录和文件名对应了各个时区的名称。例如&#xff0c;/usr/share/zoneinfo/America/Los_Angeles文件就包含了美国洛杉矶的时区信息。 你可以通过…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...