尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
基于AT89C51的温度烟雾火灾报警实物设计详解(含DS18B20与MQ-2)
简介基于AT89C51单片机的温度烟雾火灾报警设计资源包面向电子、自动化等专业的课程设计、毕业设计以及单片机入门学习者。系统围绕火情探测与报警展开可实现温度、烟雾浓度的实时采集与超限告警。硬件上采用MQ-2烟雾传感器感知可燃气体与烟雾配合ADC0832完成模数转换温度采集选用单总线DS18B20数字传感器数据稳定准确数码管用于同步显示当前烟雾浓度与温度值蜂鸣器和LED组成声光报警模块三个按键自由调节报警阈值另设手动报警按键。整套设计覆盖传感器选型、信号转换、单片机控制、人机交互及报警执行等典型环节可作为环境监测类项目的参考模板。压缩包约4.93MB已有354人学习下载从资源描述中可梳理出从硬件搭建到程序逻辑的完整思路对理解火灾报警系统的工程实现有较高参考价值。该设计以模块化思路组织各功能单元便于调试与扩展既能帮助初学者理解单片机系统的软硬件协同也方便有基础的读者在此基础上加入无线通信、语音提示等更深入的二次开发。1. 为什么用AT89C51做温度烟雾火灾报警实物温度烟雾火灾报警这个设计很多初学者第一反应是选STM32或者ESP32因为资源丰富、例程多。但真正落到“可做实物”这件事上AT89C51反而更容易让你焊出一块能稳定跑起来的板子——它的逻辑电平是5V和大部分传感器、蜂鸣器、继电器直接匹配不需要电平转换引脚少布线清晰芯片手册几百页就能看完而且Proteus里老型号仿真模型成熟从仿真实物迁移时坑最少。这个系统不是算力问题而是“采集温度、检测烟雾浓度、按阈值输出报警信号”三个环节的配合问题AT89C51的35字节工作寄存器、两个定时器、4个I/O口完全够用。本文会给你一套能直接下单买元件的实物方案DS18B20测温MQ-2测烟雾ADC0832做模数转换LCD1602显示蜂鸣器加继电器输出再配上标定和防误报的思路。适合做课程设计、毕业设计硬件部分的工程师也适合想从仿真走向真实硬件的人。2. 硬件选型与AT89C51最小系统设计2.1 传感器选择DS18B20测温、MQ-2测烟雾温度检测有两个常见路线热敏电阻加ADC或者数字温度传感器DS18B20。热敏电阻需要自己搭桥式电路并标定曲线阻值随温度不是线性的后期校准很麻烦DS18B20直接输出数字温度值测温范围-55℃到125℃12位分辨率下精度0.5℃单总线协议只需要一根数据线接到P3.7程序里按时序读出来就是摄氏温度没有换算误差。做实物时注意DS18B20有三种封装TO-92三引脚的是最常见的拿到手后引脚朝上从左到右是GND、DQ、VCC别接反了很多实物烧传感器都是因为电源和地接反。烟雾检测几乎都用MQ-2气敏电阻它对丙烷、液化气、烟雾有较高灵敏度内部是一个加热电阻和一个二氧化锡半导体敏感层。工作时需要先给加热丝供电模块上通常有比较器电路可以直接输出数字量或者模拟量。这个设计里必须要测模拟量因为只有拿到连续的烟雾浓度电压值才能按照严重程度分两级报警。MQ-2模块的AOUT引脚输出电压随气体浓度升高而降低需要注意不是升高——很多人第一次用的时候以为浓度越高电压越高导致报警条件写反。模块在刚上电的30秒内输出飘得厉害那是预热过程软件里要做延时处理。2.2 ADC0832与LCD1602、蜂鸣器继电器的驱动电路AT89C51内部没有ADC所以需要外接一个串行ADC。常见的选择是ADC0832它只有8位精度两路单端输入或一路差分输入SPI时序简单Proteus里名叫ADC0832实物芯片也很好买。选它而不是ADC0809的原因时速引脚少0809要接8条数据线加ALE、START、EOC、OE占用的I/O口太多0832只有CLK、DI、DO三个控制脚我习惯把它接到P1.0到P1.3。这里给一个引脚连接表模块/芯片信号单片机引脚DS18B20DQP3.7ADC0832CLKP1.0ADC0832DI/DOP1.1ADC0832CSP1.2MQ-2AOUTADC0832 CH0LCD1602RSP2.0LCD1602RWP2.1LCD1602ENP2.2LCD1602D4~D7P2.4~P2.7蜂鸣器INP3.4继电器INP3.5蜂鸣器不能直接接在P3.4上I/O口高电平驱动能力只有几十毫安建议用三极管S8050做开关基极串一个1kΩ电阻蜂鸣器接在集电极和5V之间。继电器模块更简单买光耦隔离的5V继电器模块IN端接单片机VCC和GND接5V电源模块上已经带驱动三极管和续流二极管。继电器用来驱动排风扇或者电磁阀当温度或烟雾超限时吸合。注意单片机复位后所有I/O口输出高电平如果蜂鸣器高电平驱动会在上电瞬间误响一声所以我这里蜂鸣器用PNP三极管接法或者直接把有效电平设计成低电平有效程序里初始化时先把P3.4和P3.5置1。2.3 最小系统晶振、复位电路和5V电源AT89C51最小系统就是三件套40脚DIP封装的芯片、12MHz晶振两个30pF电容、复位电路。晶振接XTAL1和XTAL2两个电容一端各接晶振引脚另一端接GND。复位电路用10μF电解电容加10kΩ电阻电容正极接VCC负极接RST电阻一端接RST另一端接GND。这样上电时RST会短暂高电平然后拉低完成上电复位。同时给RST接一个按键到VCC可以手动复位。电源部分不要直接用USB线给整个系统供电因为MQ-2的加热丝电流约150mA蜂鸣器、继电器同时动作时峰值可能到400mA普通电脑USB口可能扛不住。建议用5V 2A的开关电源模块或者用7805稳压芯片做降压输入7~12V直流输出5V注意7805要加散热片。在芯片电源引脚VCC和GND之间并联两个电容104瓷片电容滤高频100μF电解电容滤低频纹波。这个系统对ADC基准电压很敏感如果需要更稳的参考可以用TL431做2.5V基准给ADC0832的REF端但一般5V供电时直接用VCC也可以。3. 程序设计DS18B20时序、ADC采样与报警逻辑3.1 软件结构的三个模块划分程序不复杂但建议用模块化写法便于调试时单独验证每一路。至少分三个文件main.c、ds18b20.c、adc0832.c显示和报警写在主循环里。主函数流程是初始化定时器和LCD然后进入大循环——每隔200ms读一次温度每隔100ms读一次烟雾ADC值两个值送到阈值判断函数最后刷新LCD显示。这里有一个关键点DS18B20的读取时序是微秒级的期间要关闭中断否则定时器中断插入会让时序错乱。所以建议用定时器做时间基准但要保证DS18B20读写期间EA0或者干脆不用中断只用查询方式做延时。3.2 DS18B20的ROM操作与温度读取C代码DS18B20的操作分三步初始化复位脉冲、跳过ROM因为一个总线上只接一个传感器、读取暂存器。温度转换指令是0x44读暂存器指令是0xBE。12位转换完成后温度值放在8字节暂存器的第0和第1字节高字节前5位是符号位负温度时取反加一。这里给出读取函数的完整代码#include reg52.h sbit DS18B20_DQ P3^7; void Ds18b20DelayUs(unsigned int n) { while(n--) { _nop_(); } } bit Ds18b20Reset(void) { bit presence; DS18B20_DQ 0; Ds18b20DelayUs(480); // 至少480us的复位脉冲 DS18B20_DQ 1; Ds18b20DelayUs(70); // 等待从机应答约60~240us presence DS18B20_DQ; Ds18b20DelayUs(410); // 剩下的复位时间周期 return presence; // 0表示存在1表示无应答 } void Ds18b20WriteByte(unsigned char dat) { unsigned char i; for(i 0; i 8; i) { DS18B20_DQ 0; Ds18b20DelayUs(10); DS18B20_DQ dat 0x01; // 先写低位 Ds18b20DelayUs(50); DS18B20_DQ 1; dat 1; } } unsigned char Ds18b20ReadByte(void) { unsigned char i, dat 0; for(i 0; i 8; i) { DS18B20_DQ 0; _nop_(); DS18B20_DQ 1; _nop_(); // 释放总线让从机输出 dat 1; if(DS18B20_DQ) { dat | 0x80; } Ds18b20DelayUs(50); } return dat; } int Ds18b20GetTemp(void) { unsigned char high, low; int temp; Ds18b20Reset(); Ds18b20WriteByte(0xCC); // 跳过ROM Ds18b20WriteByte(0x44); // 启动温度转换 Ds18b20Reset(); Ds18b20WriteByte(0xCC); Ds18b20WriteByte(0xBE); // 读暂存器 low Ds18b20ReadByte(); high Ds18b20ReadByte(); temp (high 8) | low; temp 4; // 去掉低4位小数只取整数 return temp; }说明一点这里把温度右移4位得到的是舍去小数的整数温度。如果要显示到0.5℃或0.1℃需要用低4位计算小数公式是小数部分乘以0.0625。但做火灾报警不需要那么精细取整数就够。_nop_()是C51空指令占用一个机器周期12MHz晶振下一个机器周期是1μs所以Ds18b20DelayUs(480)实际上大约延时480μs符合DS18B20时序要求。如果你的晶振是11.0592MHz机器周期是1.085μs延时比设计值长约8%仍在DS18B20允许的240~960μs窗口内所以不用改。3.3 ADC0832的SPI读通道函数ADC0832用软件模拟SPI时序片选拉低后在CLK上升沿把配置位发进去然后在下降沿读取数据。配置位是1开始位然后选中CH0模拟量输入对于单端模式发送0x98这样三个字节第一个起始位1第二个是通道选择CH0为1第三个是结束位0。这里直接给一个读CH0的函数sbit ADC_CLK P1^0; sbit ADC_DI P1^1; sbit ADC_DO P1^1; // 复用引脚读和写分时 sbit ADC_CS P1^2; unsigned char Adc0832ReadCh0(void) { unsigned char i, dat 0; ADC_CS 0; ADC_CLK 0; // 发送起始位1和通道选择高位在前 ADC_DI 1; ADC_CLK 1; ADC_CLK 0; ADC_DI 1; ADC_CLK 1; ADC_CLK 0; // CH0 为1 ADC_DI 0; ADC_CLK 1; ADC_CLK 0; // 结束位 ADC_DI 1; // 释放数据线切换为输入模式 // 读取8位数据下降沿采样 for(i 0; i 8; i) { ADC_CLK 1; ADC_CLK 0; dat 1; if(ADC_DO) { dat | 0x01; } } ADC_CS 1; return dat; }这个函数返回的dat是0~255对应0~5V电压。MQ-2模块的AOUT输出电压在洁净空气中大约0.4V在烟雾浓度高时可降到0.1V以下。所以后续判断时要注意数值越小表示浓度越大。有些资料把ADC值直接当作浓度显示方向搞反容易导致烟雾越浓报警越不动作。我习惯把ADC值做一次反转smoke_level 255 - Adc0832ReadCh0()这样smoke_level越大表示浓度越高更符合直觉。3.4 两级报警判定与LCD显示逻辑报警阈值设计成两级温度超过50℃或者smoke_level超过150时蜂鸣器慢速响500ms间隔温度超过60℃或者smoke_level超过200时蜂鸣器快速响并且继电器吸合。这个阈值不是拍脑袋定的后面第四章会讲标定方法。主循环里做显示刷新LCD1602第一行显示T:xxC W:xxx第二行显示ALARM: L/H。显示涉及字符转数字用sprintf在C51里很占代码空间建议用取余方法拆分数字。这里给一个判断并显示的片段unsigned char get_smoke_level(void) { return (255 - Adc0832ReadCh0()); } void main() { int temp; unsigned char smoke; Lcd1602_Init(); Lcd1602_ShowString(0, 0, T: C S: ); while(1) { temp Ds18b20GetTemp(); smoke get_smoke_level(); if(temp ALARM_TEMP_HIGH || smoke ALARM_SMOKE_HIGH) { relay 0; // 继电器低电平吸合 buzzer_fast(); } else if(temp ALARM_TEMP_LOW || smoke ALARM_SMOKE_LOW) { relay 1; buzzer_slow(); } else { relay 1; buzzer_off(); } display_update(temp, smoke); delay_ms(100); } }注意这里relay用低电平吸合是因为买的继电器模块一般是高电平触发但有些锅仔片反向所以实物要根据模块指示灯确认。buzzer_fast()和buzzer_slow()用定时器或者延时产生不同频率的方波蜂鸣器最好用有源蜂鸣器接单片机P3.4输出低电平就响定时翻转控制通断就能形成不同的报警节奏。4. 阈值标定与防误报参数调整4.1 MQ-2的预热、基线漂移与ADC读数反推MQ-2模块上电后第一分钟内ADC读数会缓慢漂移这是加热丝把敏感层工作温度加热到正常状态的过程不是故障。做实物的常规做法是程序启动后延时30秒再进入主循环或者在前30秒内只采集不做报警判断。我在实际工程里会在上电时连续采样20次取平均把这个值作为基线电压base_value存储起来然后把实时浓度定义为(base_value - current_value)这样能滤掉不同环境下基线不同的问题。ADC0832是8位分辨率的对应5V时量化间隔约19.6mVMQ-2的电压变化范围约0.1V~0.5V也就是5~25个量化台阶左右精度确实有限。如果你想提高分辨率可以把ADC0832的VCC接一个低噪声5V或者改用10位AD芯片如ADC0834/ADS7830但画PCB时需要改动。对于课程设计来说8位够用因为报警阈值一般留20%以上的余量。下面给一个标定的流程表步骤操作记录数据1上电等待30秒预热每秒读一次ADC原始值2洁净空气环境稳态值S0通常180~2203打火机气体短喷不点燃稳态值S1通常30~804点燃香烟等烟雾源稳态值S2通常0~505断电放置10分钟重新测S0确认无漂移注意打火机气体测试时不要让传感器过热保持距离10厘米以上防止损坏。标定环境不能有强风这会加速气体扩散导致读数反复跳变。4.2 温度阈值的采样位置与滤波温度传感器放在哪个位置直接决定报警阈值合不合理。很多人把DS18B20贴在单片机旁边结果测的是芯片发热温度不是环境温度。常见做法是MQ-2放在板子边缘DS18B20用双绞线引出探头朝下悬空10厘米左右不要紧贴外壳或地板。如果条件允许把DS18B20用热缩管包住头部只露出金属底座可以减缓微风对读数的影响。程序里对温度也要做滤波我一般用一阶低通滤波模板系数取0.8即result now * 0.2 old * 0.8。温度变化通常是缓慢的用这个可以滤掉空调启动、人体靠近带来的瞬时波动。系数不是固定的如果响应慢把系数改大比如0.4但会影响稳定时间。下面给一阶滤波的整数实现避免浮点运算int filter_temp(int new_value) { static int old_value 0; if(old_value 0) { old_value new_value; return new_value; } old_value (new_value * 2 old_value * 8) / 10; // 系数0.2/0.8 return old_value; }这个函数用移位或整数乘除模拟浮点C51里没有FPU浮点计算会带来几百微秒的额外开销而且代码体积增大。整数做法既快又省内存。滤波后的温度值再用来和阈值比较报警抖动会减少很多。4.3 防误报参数连续确认次数与迟滞区间烟雾传感器很容易误报警比如炒菜的油烟、蒸汽、电焊烟尘都会让MQ-2输出变化。缓解办法不是只靠单一阈值而是引入“连续确认次数”假设当前检测到超阈值状态必须连续5次采样每100ms一次都超阈值才真正触发报警。这样瞬时尖峰会被过滤。同时从报警态恢复到正常态需要“迟滞”即进入报警的阈值和退出的阈值不同。例如报警阈值设为150只有当烟雾值降到120以下才解除报警。这样避免在阈值边缘反复响。参数可以做成宏定义#define ALARM_SMOKE_LOW 120 #define ALARM_SMOKE_HIGH 180 #define RELAY_SMOKE_HIGH 200 #define CONFIRM_COUNT 5 #define HYSTERESIS 30实际判断逻辑是用一个全局变量smoke_over_count每次采样时若smoke_level ALARM_SMOKE_HIGH则自增否则清零当它达到CONFIRM_COUNT时置位报警标志。清除报警时需要smoke_level (ALARM_SMOKE_HIGH - HYSTERESIS)。温度报警也可以采用相同策略只是温度本身变化慢连续次数可以少一点比如3次。5. 实物联调从Proteus到面包板的验证技巧5.1 先用仿真跑通逻辑再上板子分模块测试手头如果没有仿真环境建议先在Proteus里把原理图画出来用虚拟终端或者存储示波器观察DS18B20的时序。Proteus 8.9以上自带DS18B20模型和ADC0832模型接线跟上面表格一一对应就能跑。仿真跑通后再在面包板上搭建实物但不要一次性把所有模块全插上去。我一个模块一个模块来先最小系统下载一个LED闪烁代码确认晶振起振和复位正常然后接LCD1602用写字库测试显示再接DS18B20串口打印温度值最后接MQ-2和ADC0832先不加蜂鸣器和继电器只把ADC值通过LCD显示出来验证数值变化方向。串口输出是实物调试中最重要的辅助手段。AT89C51只有一个UART你可以把温度值和烟雾值通过串口发到电脑用USB转TTL模块连接到P3.0(PXD)和P3.1(TXD)。注意USB转TTL模块的TXD接单片机的RXDRXD接单片机的TXDGND必须共地。波特率用960012MHz晶振下误差大建议用11.0592MHz晶振或者调整波特率分频数。如果不想改晶振可以直接把需要调试的变量显示到LCD1602的第二行。5.2 用万用表电压法验证ADC和三路传感器当你发现LCD上烟雾值一直固定不变时先不要怀疑单片机用万用表量MQ-2的AOUT引脚对地电压。正常时电压应在0.3V~5V之间变化若始终为0V或5V说明模块本身供电或接线有问题。然后用万用表量ADC0832的CH0输入电压应与AOUT一致再量芯片的VREF引脚是否稳定。很多实物问题是共地没做好模拟地和数字地之间存在压差导致读数跳变。对于DS18B20如果显示85℃——这是最经典的现象——说明时序读取失败或者传感器没有复位应答。85℃是芯片上电后的默认温度值只有复位并发出读命令后才被新值覆盖。这时候重点查数据线是否漏接上拉电阻。DS18B20的数据线在单片机高阻输入时需要外部上拉到VCC一般用4.7kΩ电阻。有些单片机端口默认准双向内有上拉但P3.7口外部加上拉更稳妥。用万用表量DQ引脚电压正常情况空闲时应为3.5V以上若为0V或接近VCC可能主从设备配置有冲突。蜂鸣器与继电器的验证可以在不烧录程序的情况下用杜邦线直接短接P3.4到GND如果蜂鸣器响说明驱动电路正常。注意这里用的是低电平触发短接后如果没反应检查三极管是不是接反了或者蜂鸣器是有源还是无源。无源蜂鸣器需要频率驱动才能响直流短接只会“嗒”一声有源蜂鸣器则长响。本设计建议用5V有源蜂鸣器引脚短直接驱动简单。5.3 在面包板上走线时如何避免引脚间短路AT89C51是DIP40封装插在面包板中央两侧各有20个引脚间距很小。建议使用镀金长面包板供电轨和地轨分开。每条跨接线用不同颜色区分红色是5V黑色是GND黄色是信号线。我见过很多人因为电源线从面包板这端拉到那端时路过多个芯片区域不小心碰掉一颗跳线导致芯片电源不稳定复位。所以电源线优先用面包板底部的供电轨信号线用上部区域上下留一格作为隔离带。如果系统复杂度超过30根跳线就不建议继续在面包板上堆积了直接转洞洞板焊接更可靠。焊接时先焊最小系统测试通过后再焊传感器接口和驱动电路。每个芯片的VCC旁都需要一个104瓷片电容而且要尽量靠近芯片引脚这个细节能解决大部分因为回路上ESL导致的高频噪声问题。最后给继电器驱动电路加续流二极管——注意很多集成模块自带但没有的话必须在电机或继电器线圈两端反并联一个1N4148否则断电瞬间会产生几十伏的反向尖峰可能击穿单片机I/O口。5.4 实测参数的一个调试用例假设你在洁净环境中测得原始基线ADC值是180浓度反转后smoke_level是75因为255-18075。你希望打火机气体喷一下时触发报警那标定值为40即原始ADC 215反转后是215。这时把ALARM_SMOKE_LOW设为150左右。温度和烟雾同时报警的条件需要联动吗我在实际测试中会写一个联动逻辑如果烟雾值超过120但未到180同时温度超过40℃也触发中间报警。火灾发生时烟雾和温度上升往往同时存在这种“与”条件能降低单一传感器误报的概率。实现时就是把两个条件用如下代码if((smoke 120 temp 40) || smoke 180 || temp 60) { buzzer_high_alarm(); relay 0; }把这条逻辑写在确认计数之后这样既不会忽略叠加情况又不会因为单一瞬时尖峰误动作。调好的参数建议用宏定义统一放在config.h里方便多次实验调整。当你在LCD上看到温度显示稳定烟雾值能随气体变化而反向移动并且继电器在两种报警等级下都能正确吸合这套实物设计就算地通过了。本文还有配套的精品资源点击获取
RELATED

相关推荐

AI Agent设计面经(三)Context

AI Agent设计面经(三)Context

Instruction Context:指令上下文,包含了 System Prompt、业务 Spec、行业标准等内容,核心是用来限定 Agent 应该怎么思考、能做什么、不能做什么。Goal Context:目标上下文,包含了用户最终目标、当前子目标等&#xff…

📅 2026/9/11 18:05:30
TongWeb问题集2026年9月

TongWeb问题集2026年9月

问题:TongWeb8.0企业版是否支持Spring Boot1.5版本?回答:支持。注意点:1. 首先检查应用部署目录结构为合法的war包。2. 部署时显示Spring Boot1.5的logo则证明启动。. ____ _ __ _ _ /\\ / ____ __ _ _(_)_…

📅 2026/9/11 18:05:30
从源码拆解VC虚拟示波器:缓冲区、双缓冲与触发测量

从源码拆解VC虚拟示波器:缓冲区、双缓冲与触发测量

简介:一份基于C/VC开发的虚拟示波器完整源码资源,适合电子工程、物理及计算机专业学生,也适合希望深入理解上位机信号采集与波形显示的C开发者。项目利用MFC框架构建界面,涵盖数据采集、信号处理、波形绘制、触发同步、测量分析与…

📅 2026/9/11 18:05:30
MORE NEWS

更多资讯

📰

Java聊天系统设计与实现:Socket多线程并发编程实战

简介:面向需要学习 Java 网络编程、完成课程设计或毕业设计的开发者,这一基于 Java 的聊天系统设计与实现资源提供了从客户端到服务器端的完整方案。资源包大小约 518KB,内含源代码、系统运行截图、项目报告和使用说明文档,覆盖用…

📰

DouK-Downloader 完整教程:三步快速批量下载抖音和 TikTok 作品

DouK-Downloader 完整教程:三步快速批量下载抖音和 TikTok 作品 【免费下载链接】TikTokDownloader 抖音 / TikTok 平台作品下载/数据采集工具 项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader 从一个真实需求说起 假设你现在有个任务&…

📰

Spring Boot外卖点餐系统实战:角色权限、订单状态机与部署排错全解析

简介:这是一份面向毕业设计场景的Spring Boot外卖点餐系统完整项目,适合计算机相关专业学生用于课程设计、毕业设计或项目答辩参考。后台采用Spring Boot框架,前端页面使用Vue,数据库为MySQL,运行环境JDK1.8&#xff0…

📰

G-Helper 完全指南:华硕笔记本性能控制如何做到轻量又够用

G-Helper 完全指南:华硕笔记本性能控制如何做到轻量又够用 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook…

📰

YOLO-IOD: Towards Real Time Incremental Object Detection——迈向实时增量目标检测

论文针对增量目标检测任务,提出了一个基于YOLO框架的实时解决方案。以下是其核心研究内容的全面总结: 一、研究背景与问题 任务定义:增量目标检测要求模型在持续学习新类别时,不遗忘旧类别知识。 现有局限:主流IOD方…

📰

第六篇:Sim2Real 深度解析——如何让仿真中的智能体走进现实

第六篇:Sim2Real 深度解析——如何让仿真中的智能体走进现实 一、为什么仿真成功不代表现实可用 机器人在仿真环境中完成任务,到了现实环境却可能立即失败。这种差异称为 Reality Gap。 其来源至少包括六类: 1. 视觉差异 光照和阴影&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬