当前位置: 首页 > 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文件就包含了美国洛杉矶的时区信息。 你可以通过…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...