新闻详情

新闻详情

首页 / 资讯中心 / 详情

树莓派4B舵机控制全攻略:从PWM到串口,基于pigpio的Python实战

发布时间:2026/10/2 7:30:31来源:尧图网络
树莓派4B舵机控制全攻略:从PWM到串口,基于pigpio的Python实战
想把舵机接到树莓派4B上做一个小机械臂或者云台我在网上翻了大量教程发现资料特别碎片化有讲PWM舵机的有讲串口舵机的还有讲各种GPIO库的最要命的是很多人一上来就让你改配置文件、装库结果装完发现舵机压根不动连问题出在哪都不知道。这篇文章是我自己从零到一跑通整个过程的完整记录核心围绕树莓派4B的串口舵机控制展开重点讲pigpio库的安装、配置以及用Python脚本控制舵机的完整思路。我会把两种主流控制方式都覆盖到一种是用GPIO口的PWM信号直接驱动普通舵机另一种是通过树莓派的UART串口去控制总线舵机比如市面常见的串口总线舵机或者接一个舵机控制板。不管你是刚接触树莓派的小白还是已经会写几句Python想进阶的玩家这套流程只要你跟着走基本当天就能让舵机听话。1. 项目整体设计与技术选型思路1.1 先搞清楚你要控制的舵机类型很多人一上来就问“树莓派怎么控制舵机”但实际上这个问题要拆成两个方向因为市面上舵机本身分成两大类控制逻辑完全不同。第一类是传统PWM舵机也就是我们最常见的SG90、MG90S、MG996R这种。这种舵机内部有一个电机控制器你只需要给它一个周期为20ms也就是50Hz频率的脉冲信号其中高电平的时间宽度脉宽范围在0.5ms到2.5ms之间就能让舵机转到指定的角度。0.5ms对应0度2.5ms对应180度中间线性对应。这种方式只连接舵机的信号线到树莓派的GPIO引脚即可接线极简代码也简单。第二类是串口总线舵机也叫智能舵机或者数字总线舵机。这种舵机内部带有控制芯片通过一条半双工的串口总线常见的有TTL串口串联多个舵机。每个舵机都有自己的ID主机发送带ID的指令帧对应的舵机才会执行动作。这种舵机的优势是只需要一根信号线就能控制几十个舵机而且还能回读角度、温度、电压等参数非常适合机械臂、仿生机器人这类需要多自由度协调控制的场景。这两种方案我都实际测试过下面这张对比表可以帮助你快速决定走哪条路。对比项PWM舵机方案串口总线舵机方案典型型号SG90 / MG996RLSC-15 / LX-16A / 串口舵机控制板接线复杂度信号线直连GPIO单总线串接但可能需要独立电源控制精度约1度左右受脉宽精度限制可回读精度更高带反馈可扩展数量受GPIO引脚数限制同一条总线可挂几十个成本低十几块到几十块较高单个几十到上百调试难度简单几分钟能跑通需要理解协议但也不复杂我的建议是如果只是做个云台、小车转向这类简单动作直接买PWM舵机省心如果你想做多自由度的机械臂、六足机器人一步到位选择串口总线舵机后面会省去很多接线和电源布线方面的麻烦。1.2 为什么最终选择了pigpio库树莓派控制GPIO的Python库有好几个RPi.GPIO、gpiozero、pigpio、wiringPi现在基本不维护了。我全部试过一遍最终定下来用pigpio原因很简单——它解决了我用其他库时遇到的两个最大痛点。第一个痛点是PWM波形不稳定。RPi.GPIO和gpiozero的PWM是靠软件模拟出来的CPU负载稍微一高脉冲宽度就容易抖动舵机就会跟着出现肉眼可见的抖动、嗡嗡声、甚至到不了指定角度。而pigpio底层使用了树莓派硬件的DMA直接内存访问和PWM模块PWM波形生成不依赖CPU持续计算稳定性高了一个量级。我实测下来用pigpio驱动MG996R脉宽误差能控制在微秒级舵机运行特别平顺。第二个痛点是串口多路复用。树莓派的UART串口和蓝牙默认是会抢占同一个硬件资源的普通的库处理起来比较麻烦。而pigpio本身自带串口读写功能serial_open、serial_read、serial_write这些API你不需要额外安装pySerial直接用一套库就同时搞定GPIO和串口这对于串口舵机控制场景来讲非常顺手。此外pigpio还有一个特别方便的守护进程模式pigpiod启动后在命令行就能用pigs工具直接测试舵机动作写脚本之前先在终端验证硬件是否正常能省掉一大部分排错时间。这个设计在实际开发中真的非常实用我后文会专门演示。1.3 硬件准备与接线避坑正式动手之前先列一下我实际使用的物料清单供参考。树莓派我用的是4B4GB内存版本主板型号并不关键Pi 3B、3B也完全适用。舵机我准备了两个测试对象一个是MG996RPWM舵机另一个是LSC-15串口总线舵机。另外还需要杜邦线若干、一个5V/3A以上的外接电源USB电源也凑合但注意电流要够、一个USB转TTL模块调试串口舵机协议时用。接线方面有几个坑我认认真真强调一下。首先是供电问题。舵机启动和堵转时的瞬间电流非常大MG996R堵转电流能到2A以上如果从树莓派的5V引脚直接取电会让主板的电压瞬间掉下来轻则舵机无力乱抖重则导致树莓派重启甚至烧毁主板。所以舵机的电源线红色线务必接外置电源的正极黑色线同时接外置电源负极和树莓派的GND这个动作叫共地这样舵机的大电流走外置电源回路树莓派只负责提供信号。共地非常重要如果两边地线不连通信号电平就没有参考基准舵机完全不会动。其次是电平匹配问题。树莓派GPIO的IO电平是3.3V而很多串口舵机控制板是5V的TTL电平。如果控制板标称兼容3.3V输入可以直接连接如果明确要求5V电平最好加一个电平转换模块否则可能出现信号识别不稳定的问题。这一点容易被忽视我在后文的常见问题里还会再提一次。最后是接线顺序。稳妥的操作是把树莓派断电拔掉USB-C电源线再接所有的线缆确认无误后再上电。带电插拔GPIO线是新手烧板子比较常见的原因。2. 环境准备从串口开启到pigpio库安装2.1 开启树莓派UART串口并关闭系统串口终端默认情况下树莓派的串口是分配给Linux内核控制台用的也就是你通过串口线登录系统的那条路。我们必须把这个控制台功能关掉才能把串口完全释放给我们的Python脚本使用。有一条快捷路径在树莓派桌面终端里执行sudo raspi-config然后依次选择Interface Options → Serial Port。此时树莓派会问你两个问题回答方式如下第一个问题“Would you like a login shell to be accessible over serial?”选择No第二个问题“Would you like the serial port hardware to be enabled?”选择Yes。完成后重启。如果你和我一样喜欢直接改配置文件也可以手动编辑/boot/config.txt树莓派4B较新系统的路径可能是/boot/firmware/config.txt确保包含一行enable_uart1同时查看/boot/cmdline.txt如果里面有consoleserial0这样的内容把这一段删掉保留其余参数即可。这一步本质上是把串口从“系统登录终端”手里抢回来。改完重启后输入以下命令验证UART是否正常ls -l /dev/serial*如果你能看到/dev/serial0指向ttyAMA0或ttyS0说明串口设备已经就绪。顺便确认当前用户名在dialout组里否则后面访问串口会报权限错误sudo usermod -a -G dialout pi然后重新登录一次终端让组权限生效。2.2 安装pigpio两种方式任选pigpio的安装方式主要有两种我都试过第一种最省事第二种更保险。方式一是直接通过树莓派官方软件源安装。执行sudo apt update sudo apt install pigpio之后启动守护进程sudo systemctl enable pigpiod sudo systemctl start pigpiod用systemctl的好处是开机自动运行省得每次手动敲命令。需要注意如果用apt装完发现Python里import pigpio报错可能是Python版本对应的问题可以考虑用pip再装一遍Python绑定sudo pip3 install pigpio方式二是从源码编译安装适合软件源里版本较老、或者需要最新特性的场景。执行git clone https://github.com/joan2937/pigpio cd pigpio make sudo make install然后启动sudo pigpiod源码安装的好处是你可以自己指定编译参数比如把Python绑定一起编译进去。启动后用下面这条命令检查守护进程是否正常pigs t如果终端打印出类似“pigpio version 79”的版本号说明服务已经正常运行了。注意pigpio的Python库本质上是一个socket客户端它通过端口6241连接本机的pigpiod守护进程。因此使用前必须先确保pigpiod已经在后台运行这一点是最多人忽略的常见的报错“cant connect to pigpio daemon”十有八九就是忘了启动守护进程。2.3 硬件连通性测试不写代码先让舵机动起来我强烈建议在写Python脚本之前先用pigpio自带的pigs命令行工具验证硬件和接线是否正确。这一步能帮你把“硬件问题”和“软件问题”彻底分开后续排错会轻松非常多。先测PWM舵机。假设舵机信号线接在树莓派GPIO18物理引脚12执行sudo pigs s 18 1000这条命令的意思是让GPIO18输出脉宽1000微秒的PWM信号如果舵机正常它会转到约45度左右的位置。接着执行sudo pigs s 18 2000舵机应该转到约135度的位置。如果这两个指令都能让舵机转动说明硬件链路完全正常可以放心进入Python阶段。再测串口舵机。先确认串口设备编号用我们前面查到的/dev/serial0。执行sudo pigs serial_open /dev/serial0 9600这个命令会以9600波特率打开串口并返回一个句柄。然后你可以用serial_write往串口里写一串测试协议数据。由于不同品牌串口舵机的协议各不相同这一步的具体指令帧要先查舵机手册。通用的思路是先用USB转TTL模块在电脑上配合串口调试助手把协议和指令调通再把同样的指令通过树莓派发出去这样能最大程度减少树莓派侧的干扰因素。如果串口打不开大概率是权限问题确认当前用户真的在dialout组里或者干脆用sudo运行命令来临时绕过。3. Python脚本编写与调试全过程3.1 用pigpio驱动PWM舵机的完整脚本先看最经典、最基础的应用用Python让PWM舵机转到指定角度。我封装了一个简单但足够健壮的类。import pigpio import time class PWMServo: def __init__(self, pi, pin, min_pulse500, max_pulse2500, frequency50): self.pi pi self.pin pin self.min_pulse min_pulse self.max_pulse max_pulse self.cur_pulse 0 pi.set_mode(pin, pigpio.OUTPUT) pi.set_PWM_frequency(pin, frequency) pi.set_PWM_range(pin, 20000) # 20ms周期对应的占空比分母 def angle_to_pulse(self, angle): # 角度0~180线性映射到脉宽 pulse self.min_pulse (angle / 180.0) * (self.max_pulse - self.min_pulse) return int(pulse) def set_angle(self, angle, speed0.0): target self.angle_to_pulse(angle) if speed 0 or self.cur_pulse 0: self.pi.set_servo_pulsewidth(self.pin, target) self.cur_pulse target return # 慢速平滑过渡避免舵机瞬间甩头 step 10 if target self.cur_pulse else -10 while abs(target - self.cur_pulse) 5: self.cur_pulse step self.pi.set_servo_pulsewidth(self.pin, self.cur_pulse) time.sleep(speed) self.pi.set_servo_pulsewidth(self.pin, target) self.cur_pulse target def stop(self): self.pi.set_servo_pulsewidth(self.pin, 0) if __name__ __main__: pi pigpio.pi() if not pi.connected: print(无法连接pigpiod请检查服务是否启动) exit(1) servo PWMServo(pi, 18) try: servo.set_angle(0) time.sleep(1) servo.set_angle(90) time.sleep(1) servo.set_angle(180) time.sleep(1) servo.set_angle(90) finally: servo.stop() pi.stop()几个关键的写法说明如下。首先是set_servo_pulsewidth这个API。它是pigpio专门为舵机控制设计的单位是微秒直接控制高电平脉宽。相比自己组合set_PWM_dutycycle去换算这个API的语义更清晰容错性也更好。当脉宽设为0时PWM信号停止输出相当于舵机断电但实际只是没有控制信号了舵机还接着电源所以会保持当前位置。其次是set_PWM_frequency。标准舵机要求50Hz的PWM频率也就是20ms周期。有些高速数字舵机支持更高的频率比如333Hz但绝大多数舵机手册都会写明对应的PWM频率按手册来即可。我用set_PWM_range设了个20000这是为了让占空比计算更直观配合set_servo_pulsewidth使用时其实不必要但保留它给不熟PWM的读者一个清晰的参考。最后是慢速过渡逻辑。直接set_angle从0转到180舵机会用最快速度甩头如果机械结构上带负载瞬间冲击可能损坏齿轮。所以我加了一个简单的速度控制让脉宽逐步逼近目标。这里我没有用多线程或复杂插值用一个while循环逐步调整实际测试下来SG90和MG996R的表现都非常自然。如果你需要更精准的运动规划比如梯形加减速建议在这个基础上引入一个定时回调而不是单纯的sleep循环。3.2 串口舵机控制协议解析与Python读写串口舵机的控制逻辑稍微绕一点但搞清楚一条指令帧的结构就不慌了。我用自己手上这款LSC-15为例它的协议大概是这样的一帧由帧头、ID号、命令字、参数和校验和组成典型结构如下。帧头(0xFA 0xAF) ID(1字节) 命令字(1字节) 参数(N字节) 校验和(1字节)以转到指定角度为例命令字通常是0x01参数包含目标角度的低8位和高8位部分舵机还会加入转动时间的参数。校验和的计算方式一般是帧头ID命令字所有参数逐字节相加后取低8位。每一款舵机会有细微差别务必以你自己舵机手册为准。下面是一个使用pigpio串口接口发送指令到串口舵机的示例代码。import pigpio class SerialServo: def __init__(self, pi, device/dev/serial0, baud9600): self.pi pi self.handle pi.serial_open(device, baud) if self.handle 0: raise RuntimeError(串口打开失败) self.servo_id 1 def checksum(self, data): return sum(data) 0xFF def send(self, cmd, params): # 组装一帧帧头 ID 命令字 参数 校验和 frame [0xFA, 0xAF, self.servo_id, cmd] params frame.append(self.checksum(frame)) # pigpio的serial_write需要bytes类型 self.pi.serial_write(self.handle, bytes(frame)) print(发送:, frame) def set_angle(self, angle): # 示例假设角度范围0~240度参数为16位小端 a int(angle * 100) low a 0xFF high (a 8) 0xFF self.send(0x01, [low, high]) def read_pos(self): # 发送读取位置指令参数部分留空 self.send(0x02, []) # 串口舵机返回数据一般需要等待一段时间 time.sleep(0.02) recv self.pi.serial_read(self.handle, 16) if recv: print(收到:, list(recv)) return recv return None def close(self): self.pi.serial_close(self.handle) if __name__ __main__: pi pigpio.pi() servo SerialServo(pi) try: servo.set_angle(120) time.sleep(1) servo.read_pos() finally: servo.close() pi.stop()这段代码有几个非常容易踩的坑我一个个讲。pigpio的serial_write只接受bytes字节串所以要把列表先转换成bytes。如果直接传list进去会报TypeError我第一次写的时候就栽在这。同样的serial_read返回的是bytearray打印出来是一堆十进制数字要结合协议手册去解读。串口舵机的回读数据有一个时序问题。你发出读位置指令后舵机需要一点时间处理并回复如果不加sleep或等待直接去读往往什么都读不到。实际项目里更稳健的做法是循环等待某种超时机制启动一个时间戳在串口有可读数据且读取长度期望的情况下跳出等待超过比如50ms仍然无数据就放弃。另外要注意的是串口通信不存在“即发即收”的概念特别是串口舵机这种半双工总线发送和接收共用一根线千万不要在舵机还没有回复完毕之前就立刻发下一条指令否则总线上会冲突导致指令丢失。连续控制多个角度时两条指令之间至少间隔50ms具体值以舵机厂商的说明为准。3.3 从“脚本能跑”到“项目可靠”的调试思路很多人把脚本写出来、舵机动了就觉得大功告成。但真正把舵机控制模块集成到一个更大项目里时你会发现单纯的“动起来”还差得很远。这里我分享几个从实际项目里总结出来的调试心得。第一把“调试开关”做成全局的。我在脚本里习惯加一个DEBUG模式所有串口发送的数据帧以十六进制可读形式打印出来。因为串口舵机协议错误的概率很高尤其是校验和算错、高低位搞反这种问题光看现象根本无法定位。一旦把收发数据打出来对着手册逐字节核对几分钟就能找到问题。LOG_LEVEL DEBUG if LOG_LEVEL DEBUG: print([TX], .join(f{b:02X} for b in frame))第二串口收到乱码、错位优先排查波特率。不同厂家的串口舵机默认波特率不同常见的有9600、115200、38400等。波特率不匹配的典型现象是收到一串乱码或者字节数对不上。此外还要检查数据位、停止位、校验位是否与手册一致默认通常是8N18数据位、无校验、1停止位但也有例外比如某些总线舵机默认偶校验。第三串口舵机的调试尽量在PC上先做一轮。树莓派上环境变量多出了问题很难判断是硬件、系统还是代码。我的经验是先用USB转TTL模块接舵机在Windows或者Mac上用串口调试助手网上随便搜一个就行比如友善串口助手、XCOM都行手动发一帧数据确认舵机动作、回读正常再把这帧数据原封不动搬到树莓派脚本里。经过这一轮协议层面的问题基本就被筛掉了剩下在树莓派上调试时可以更聚焦于pigpio本身的问题。4. 常见问题与排查技巧实录4.1 串口打不开、权限报错与设备映射我在树莓派上遇到最多的问题第一类就是串口访问相关的。如果你在Python里执行serial_open后返回负数或者抛出类似“Permission denied”的异常排查路径很清晰。先确认用户权限。执行groups pi看看当前用户是否在dialout组里。不在就按前面的usermod命令加上重新登录。然后确认没有其他程序占用串口。pigpio的serial_open一旦打开一个串口设备同名设备在你close之前是不会让别的进程再打开的。如果你之前跑了某个脚本没有正常关闭串口会一直处于被占用状态。这种情况最简单粗暴的方法是重启树莓派或者重启pigpiod。还有一个容易让人困惑的映射问题。树莓派4B上的/dev/serial0有时候是ttyAMA0有时候是ttyS0而且与蓝牙的映射在默认配置下会影响你的串口能不能用。我的建议是在代码里统一使用/dev/serial0这个软链接而不是直接写死ttyAMA0这样无论系统怎么映射都能指向当前激活的那一个UART设备。注意如果你启用了蓝牙某些情况下硬件串口会被蓝牙占掉导致你的串口只能使用性能较差的迷你串口ttyS0。如果你发现舵机通信偶发超时、数据丢失可以检查/boot/config.txt里的dtoverlay是否设置了miniuart-bt或者disable-bt这样的参数。如果不需要蓝牙直接屏蔽蓝牙模块把硬件串口完全腾出来通信稳定性会有明显提升。4.2 舵机抖动、无力、不动作的硬件排查第二大类问题集中在舵机本身具体表现是信号线接了、代码跑了舵机要么不动要么抖得跟筛子似的要么转一下就软绵绵地“瘫”了。这种问题九成出在电源上。我前面强调过树莓派GPIO只能提供几十毫安的电流而一个MG996R正常工作就要几百毫安堵转瞬间能到2A。如果你发现舵机在空载时正常、一带负载就抖动或者卡顿赶紧检查供电外接电源的电流是否够大、电源线是否过长导致压降。我遇到过一种隐蔽的情况使用面包板供电时杜邦线接触不良导致舵机供电间歇性中断转起来一卡一卡的最后把电源线直接焊到舵机上才解决。另一部分原因是PWM信号本身的问题。检查GPIO引脚是不是选错了、有没有和其他外设冲突。树莓派GPIO口里有些引脚有上拉或下拉电阻某些引脚在启动时有特殊功能比如ID EEPROM虽然一般用不到但最好按照官方引脚功能图选用普通可用的GPIO口避免踩到这些特殊引脚。还有一个容易忽略的如果你用杜邦线连接信号线线太长了超过20cm或者接触不良也会导致PWM波形畸变舵机表现就是乱抖。如果是串口舵机完全不动作先检查总线接线方向。串口舵机组网是总线式的数据线需要从一个舵机串到下一个舵机但有些舵机的TTL接口是有方向区分的接反了可能导致后续舵机全部掉线。另外确认各舵机的ID是否冲突同一条总线上两个舵机ID一样会导致地址冲突指令完全乱套。4.3 pigpio连接失败与系统层面的坑第三大类问题是pigpio本身的使用环境问题。最典型的就是Python脚本报“cant connect to pigpio daemon”错误。这个报错我已经说过必然是没有启动pigdiod。检查一下ps aux | grep pigpiod如果没有任何进程启动它再说。如果你希望开机自启用systemctl enable pigpiod把它做成服务。还有一个周期性遇到的坑是树莓派重启以后pigpiod服务启动失败了原因往往是串口设备在开机阶段还没有完全初始化pigpiod启动时试图打开一个设备就失败了。如果在日志里看到类似的报错可以在/etc/systemd/system里给pigpiod服务加一个Restarton-failure和StartLimitIntervalSec相关的配置让它失败后自动重启实际项目中这项配置能省不少事。如果你是在非root用户下运行Python脚本注意pigpio连接守护进程也有权限差异。pigpiod服务默认以root权限运行管理GPIO不会有权限问题。但如果你的脚本想读取某些内核接口或者访问/dev/mem就需要sudo运行。这个根据实际报错判断即可。最后补充一个我在多线程场景下踩过的坑pigpio客户端操作不是线程安全的。如果你在主线程里set_servo_pulsewidth又在另一个线程里serial_write有概率导致数据错乱。稳妥的做法是所有pigpio相关操作统一放到同一个线程里执行或者使用pigpio官方推荐的callback机制而不是自己去起线程操作GPIO。4.4 常见问题快速速查表现象可能原因排查与解决Python连接pigpio失败pigpiod未启动或端口被占执行sudo systemctl start pigpiod检查6241端口占用串口打开返回Permission denied用户不在dialout组sudo usermod -a -G dialout pi 后重新登录舵机完全不动电源未共地或未接外置电源用万用表确认舵机供电电压正常检查共地线舵机抖动、嗡嗡响供电电流不足或PWM频率不对换上大电流电源确认频率是50Hz缩短信号线串口读到乱码波特率不匹配或数据位校验位不对对照手册检查9600/1152008N1是否匹配串口总线上多个舵机都乱动舵机ID冲突逐个舵机重新设置唯一ID发送指令后舵机没反应指令帧校验和错误开启DEBUG模式逐字节对比手册树莓派重启后pigpiod失效服务自启配置失败systemctl enable pigpiod加Restart策略舵机能动但角度不准确脉宽映射范围与舵机型号不匹配500/2500只是通用值按手册校准写在最后的一点体会这套从pigpio安装到Python脚本调试的整套流程我前前后后帮朋友和自己搭过好几遍过程中发现一个规律绝大多数人的问题不是树莓派本身也不是代码逻辑而是对硬件层面“供电、共地、电平、信号完整性”这些东西不够敏感。软件报错了还有日志可查硬件出问题往往是一脸懵然后怀疑自己的人品。我个人比较推荐的一个调试顺序是先把舵机接到电脑上用串口调试助手或者USB转TTL模块把协议层面调通再上树莓派先写一个只控制一个舵机的最小脚本跑通了以后再逐步加功能。如果你按这个节奏来基本上不会陷入那种“代码翻了半天最后发现是舵机电源线松了”的尴尬境地。另外再分享一个小技巧在树莓派上跑舵机控制脚本的时候我的习惯是每隔一段时间用pi.get_current_tick()和callback记录一下每次PWM更新的时间戳确保控制循环没有因为系统负载过高而卡顿。尤其是后续你要在这套系统上叠加摄像头识别、传感器采集等高负载任务时这种时间维度的监控能帮你一眼看出控制实时性有没有打折。希望这份攻略能让你少走点弯路。后面我还会继续整理串口舵机在机械臂项目里的运动规划、以及用树莓派做多路舵机同步控制的内容有兴趣的话可以持续关注。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

邻接矩阵与邻接表:图的存储结构选型、C语言实现与避坑指南 2026/10/2 10:36:30

邻接矩阵与邻接表:图的存储结构选型、C语言实现与避坑指南

简介:这份资源面向正在学习数据结构中图结构的学生与开发者,聚焦图的两种核心存储方式——邻接矩阵与邻接表,帮助解决二者之间相互转换的实现难题。资源以C语言代码为主线,完整呈现了从邻接矩阵转换为邻接表、再由邻接表转回邻接矩…

阅读更多 →
OpenAI推理集群配置解析:基于AMD 9V74与vLLM的NUMA调优实操 2026/10/2 10:36:24

OpenAI推理集群配置解析:基于AMD 9V74与vLLM的NUMA调优实操

近期关于大型语言模型底层基础设施的讨论在技术社区持续升温。一份被标记为 OpenAI Dot 的虚拟机配置清单在开发者论坛中曝光,其中明确指出了 AMD 霄龙 9V74 处理器以及 9.7 这一关键版本参数。这一配置不仅揭示了大型语言模型在推理阶段的硬件选择倾向,…

阅读更多 →
Linux下npm start后台运行原理与生产部署方案 2026/10/2 10:36:24

Linux下npm start后台运行原理与生产部署方案

1. 项目概述:为什么“npm start”在Linux里一关终端就停?这根本不是bug,是Unix进程模型的天然设计 你刚在服务器上跑起一个Vue或React项目,执行 npm start ,浏览器能正常访问,一切OK。可一旦你关闭SSH终端…

阅读更多 →
高情商沟通的底层逻辑与实战方法:从连接到表达 2026/10/2 10:36:11

高情商沟通的底层逻辑与实战方法:从连接到表达

1. 沟通的底层逻辑:先搞清楚“高情商”到底在解决什么问题 先说个真实感受。我在团队里带过不少人,发现一个特别普遍的误解:很多人觉得高情商沟通就是嘴甜、圆滑、会来事儿,说白了就是“哄人开心”。可真到了工作中你会发现&#…

阅读更多 →
找次品动画演示:HarmonyOS ArkTS状态管理与ArkUI动画实战 2026/10/2 10:36:11

找次品动画演示:HarmonyOS ArkTS状态管理与ArkUI动画实战

前阵子在 DevEco Studio 里刷华为官方示例集,按顺序整理到自己练习库里的时候,正好做到“HarmonyOS 应用实例 97:找次品动画演示”。这个题目一看就很戳我。名字里的“找次品”是小学数学里特别经典的逻辑题:一堆外观完全一样的球…

阅读更多 →
微信商城小程序毕业设计源码解析与前后端MySQL联调实战指南 2026/10/2 10:36:10

微信商城小程序毕业设计源码解析与前后端MySQL联调实战指南

简介:面向高校学生与初学者的微信商城小程序毕业设计源码包,整合了完整前后端、MySQL数据库、说明文档与LW论文,适合毕业设计、课程设计或小程序电商入门实践。项目覆盖商品展示、购物车、下单处理、支付对接与订单管理等核心功能&#xff0c…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉