嵌入式视觉IMU姿态检测:从IIO驱动到互补滤波与晃动识别的工程实践
1. 项目缘起为什么要在嵌入式视觉项目中关注IMU数据最近在折腾一个基于reCamera Pro的嵌入式视觉项目遇到了一个挺有意思的挑战如何让设备“感知”自身的物理姿态变化。比如摄像头被意外碰歪了或者设备在移动中产生了剧烈晃动系统需要能立刻知道并做出相应处理——可能是触发告警、暂停录制或者启动图像稳定算法。reCamera Pro这块板子本身集成了IMU惯性测量单元这无疑是个现成的解决方案但怎么把IMU的原始数据流转化成可靠的“倾斜”与“晃动”事件信号这里面门道不少。IMU尤其是消费级的数据噪声大直接读出来的加速度计和陀螺仪数值没法直接用。你可能会想不就是判断个角度和震动吗但实际做起来从数据采集、滤波、姿态解算到事件阈值的设计每一步都有坑。网上关于“IMU姿态解算”、“四元数”的讨论很多但具体到reCamera Pro这块板子在Linux IIO框架下怎么玩如何设计一个既灵敏又抗扰的检测逻辑相关的完整实践分享却不多见。这正是我想通过这篇文章梳理清楚的内容。无论你是做安防监控、机器人导航还是任何需要设备姿态感知的项目这套从硬件数据到上层应用的完整链路都有直接的参考价值。2. reCamera Pro的IMU硬件与Linux IIO驱动基础reCamera Pro采用的IMU型号通常是诸如MPU6050、ICM-20948之类的常见芯片。它们能提供三轴加速度计和三轴陀螺仪的数据有些高级型号还包含磁力计。在Linux系统下这些传感器通常通过IIOIndustrial I/O子系统来暴露给用户空间。这是理解一切的基础。2.1 IIO子系统概览与设备探查IIO为传感器提供了一套统一的框架。对我们开发者而言最直接打交道的是位于/sys/bus/iio/devices/和/proc/bus/iio/devices取决于内核版本和配置下的文件系统接口以及/dev/iio:deviceX字符设备。首先我们需要找到IMU对应的设备节点。登录到reCamera Pro的Linux系统执行以下命令# 查看系统识别到的IIO设备 ls /sys/bus/iio/devices/ # 或使用iio_info工具如果已安装 iio_info输出可能会显示类似iio:device0的目录。进入该目录查看name文件以确认设备cat /sys/bus/iio/devices/iio:device0/name # 输出可能为 “mpu6050” 或 “icm20948” 等关键的文件包括in_accel_{x,y,z}_raw: 加速度计三轴原始数据。in_anglvel_{x,y,z}_raw: 陀螺仪角速度三轴原始数据。in_accel_scale和in_anglvel_scale: 数据缩放因子用于将原始整数值转换为物理量如 m/s², rad/s。sampling_frequency或in_accel_sampling_frequency: 设置采样频率。注意不同内核版本和驱动sysfs接口路径和文件名可能略有差异。务必以你实际系统为准。iio_info工具能提供更友好、更标准化的信息展示建议通过包管理器如apt安装libiio-utils。2.2 数据读取的基本方式与量纲转换读取数据不是简单cat一个文件就行。IIO的raw值是一个整数需要结合scale和offset通常为0转换为物理值。转换公式物理值 (raw值 offset) * scale例如读取X轴加速度并转换# 1. 读取原始值和缩放因子 ACCEL_X_RAW$(cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw) ACCEL_SCALE$(cat /sys/bus/iio/devices/iio:device0/in_accel_scale) # 2. 计算物理值单位通常为 m/s² ACCEL_X_PHYSICAL$(echo $ACCEL_X_RAW * $ACCEL_SCALE | bc -l) echo X轴加速度: $ACCEL_X_PHYSICAL m/s²陀螺仪数据同理其物理单位通常是 rad/s 或 °/s注意scale因子对应的单位。为什么不能直接使用原始值因为原始值只是一个ADC读数其大小和正负与传感器芯片的设计、驱动实现有关。scale因子是由驱动根据芯片数据手册提供的灵敏度例如MPU6050加速度计常用±2g量程灵敏度为16384 LSB/g计算得出的。使用物理值才能进行跨平台、跨型号的算法设计。2.3 采样频率设置与数据流模式对于动态检测采样率至关重要。太低了会丢失高频晃动信息太高了会增加处理负担和噪声。查询当前采样率cat /sys/bus/iio/devices/iio:device0/sampling_frequency设置采样率echo 100 /sys/bus/iio/devices/iio:device0/sampling_frequency(例如设为100Hz)实操心得对于倾斜和晃动检测50-200Hz的采样率通常足够。更高的采样率对捕捉瞬时冲击有益但需要评估你的应用处理器能否实时处理。在reCamera Pro上建议从100Hz开始测试。除了轮询sysfs更高效的方式是使用IIO的缓冲区Buffer接口或libiio库进行连续的数据流读取。这对于需要实时处理的应用是必须的。这涉及到配置触发器trigger、创建缓冲区、然后从/dev/iio:deviceX读取数据块。这部分代码稍复杂但能极大提升效率并降低CPU占用。下文在算法实现部分我们会假设你已经能够以稳定的频率如100Hz获取到加速度和陀螺仪的物理值数组。3. 从原始数据到姿态估计滤波与解算核心拿到“干净”的物理值数据流只是第一步。加速度计对震动极其敏感陀螺仪存在漂移。直接使用它们进行判断会导致检测结果抖动严重或长期不准。3.1 传感器噪声与初始校准IMU数据天生带有噪声和误差主要包括零点偏置Bias即使静止陀螺仪和加速度计输出也不为零。比例因子误差Scale Error实际灵敏度与标称值有偏差。非正交误差Non-orthogonality三轴不完全垂直。随机游走噪声。上电初始校准是必须的。方法是将设备水平静止放置数秒采集这段时间内加速度计和陀螺仪的数据平均值。# 伪代码示例简单的静止校准 def calibrate_imu(imu_reader, calib_duration5.0, sample_rate100): accel_sum [0.0, 0.0, 0.0] gyro_sum [0.0, 0.0, 0.0] sample_count int(calib_duration * sample_rate) for _ in range(sample_count): accel, gyro imu_reader.read() # 获取物理值 accel_sum[0] accel[0] accel_sum[1] accel[1] accel_sum[2] accel[2] gyro_sum[0] gyro[0] gyro_sum[1] gyro[1] gyro_sum[2] gyro[2] time.sleep(1.0/sample_rate) accel_bias [s / sample_count for s in accel_sum] gyro_bias [s / sample_count for s in gyro_sum] # 静止时加速度计理论输出应为 [0, 0, g] (g为重力加速度) # 但我们的板子坐标系可能不同。通常我们校准的是零偏。 # 对于加速度计更常见的做法是计算静止时的模长用于后续倾角计算。 accel_static_norm math.sqrt(accel_bias[0]**2 accel_bias[1]**2 accel_bias[2]**2) # 理想情况下应等于当地重力加速度g (~9.8 m/s²)可用于验证。 return gyro_bias, accel_bias, accel_static_norm后续所有读数都应先减去这个校准得到的零偏Bias。3.2 互补滤波简单有效的姿态融合我们的目标之一是得到设备的倾斜角度俯仰角Pitch和横滚角Roll。仅用加速度计可以计算静态倾角但对动态加速度晃动无法区分仅用陀螺仪积分可以得到角度变化但会随时间漂移。互补滤波Complementary Filter是一种巧妙且计算量小的融合方法。基本原理利用高通滤波器提取陀螺仪积分结果中的高频部分响应快但长期漂移利用低通滤波器提取加速度计计算角度中的低频部分长期稳定但短期受运动干扰然后将两者按一个权重系数α融合。# 伪代码示例一维互补滤波以俯仰角Pitch为例 def complementary_filter_pitch(accel_x, accel_y, accel_z, gyro_y, dt, alpha0.98): accel_x, y, z: 校准后的加速度值 (m/s²) gyro_y: 校准后的Y轴角速度 (rad/s)对应俯仰角速度 dt: 采样时间间隔 (秒) alpha: 滤波系数通常0.95-0.99越大越信任陀螺仪 # 1. 从加速度计计算俯仰角-90° 到 90° # 注意此公式假设设备初始水平且坐标系为X-前Y-左Z-上 pitch_acc math.atan2(-accel_x, math.sqrt(accel_y*accel_y accel_z*accel_z)) # 2. 从陀螺仪积分得到角度变化 pitch_gyro pitch_prev gyro_y * dt # pitch_prev 是上一次滤波后的角度 # 3. 互补滤波融合 pitch alpha * pitch_gyro (1.0 - alpha) * pitch_acc # 4. 更新历史值 pitch_prev pitch return pitch参数α的选择α越接近1结果越依赖陀螺仪响应快但可能漂移越接近0越依赖加速度计抗漂移但容易受运动加速度干扰。对于reCamera Pro这类可能偶尔移动的设备α0.98是一个不错的起点。你需要根据实际场景微调。3.3 晃动检测基于加速度计模长与方差倾斜检测关注的是角度而晃动检测更关注高频的、非重力方向的加速度变化。一个经典且有效的方法是分析加速度计向量模长的变化。重力加速度是恒定的约9.8 m/s²。当设备静止或匀速运动时加速度计测得的向量模长应约等于g。当发生晃动、冲击或振动时附加的加速度会使模长显著偏离g。算法步骤计算加速度模长accel_norm sqrt(ax^2 ay^2 az^2)去除重力基准delta_norm abs(accel_norm - GRAVITY)。这里的GRAVITY可以用校准阶段得到的accel_static_norm。滑动窗口方差/峰值检测计算delta_norm在一个短时间窗口如0.1秒对应10个采样点100Hz内的方差或者直接检测其峰值是否超过阈值。方差法对窗口内数据求方差。方差大说明晃动剧烈。峰值法判断delta_norm是否连续超过阈值例如 0.5 m/s²。# 伪代码示例基于滑动窗口方差的晃动检测 class ShakeDetector: def __init__(self, window_size10, variance_threshold0.2): self.window [] self.window_size window_size self.variance_threshold variance_threshold # 这个阈值需要实测调整 def update(self, delta_norm): self.window.append(delta_norm) if len(self.window) self.window_size: self.window.pop(0) if len(self.window) self.window_size: variance np.var(self.window) if variance self.variance_threshold: return True # 检测到晃动 return False为什么用模长而不是单轴因为晃动可能来自任何方向。使用模长可以检测任意方向的冲击且对设备旋转不敏感只要不是高速旋转导致离心力。4. 在reCamera Pro上构建完整的检测系统理论清楚了现在我们来搭建一个在reCamera Pro上实际运行的系统。我们将设计一个简单的守护进程持续读取IMU数据计算倾斜角度和晃动强度并通过阈值判断触发事件。4.1 系统架构与模块设计我们设计一个多线程的Python程序考虑到原型开发效率数据采集线程负责以固定频率如100Hz从IIO接口读取加速度计和陀螺仪数据进行初步的校准减偏和物理值转换放入一个线程安全的队列Queue。数据处理线程从队列中取出数据执行互补滤波计算当前姿态角Pitch, Roll同时计算加速度模长变化用于晃动检测。事件判断与输出线程根据计算出的角度判断是否超过“倾斜阈值”如15度根据晃动检测算法判断是否发生“晃动”。将事件通过日志、Socket、或者reCamera Pro的GPIO/LED等方式输出。# 简化的主程序结构示例 import threading import queue import time import math class IMUReader(threading.Thread): def __init__(self, data_queue, sample_rate100): super().__init__() self.data_queue data_queue self.interval 1.0 / sample_rate self.running True # 初始化IIO获取scale进行校准等此处省略硬件操作细节 self.gyro_bias, self.accel_bias self.calibrate() def run(self): while self.running: raw_accel, raw_gyro self.read_raw_iio() # 读取原始值 accel self.convert_to_physical(raw_accel, accel) - self.accel_bias gyro self.convert_to_physical(raw_gyro, gyro) - self.gyro_bias timestamp time.time() self.data_queue.put((timestamp, accel, gyro)) time.sleep(self.interval) class IMUProcessor(threading.Thread): def __init__(self, data_queue): super().__init__() self.data_queue data_queue self.pitch 0.0 self.roll 0.0 self.alpha 0.98 self.shake_detector ShakeDetector() self.tilt_threshold math.radians(15) # 15度阈值 def run(self): while True: try: timestamp, accel, gyro self.data_queue.get(timeout1) # 1. 更新姿态角 self.update_attitude(accel, gyro, 0.01) # dt0.01s (100Hz) # 2. 检测晃动 accel_norm math.sqrt(accel[0]**2 accel[1]**2 accel[2]**2) delta_norm abs(accel_norm - 9.81) is_shaking self.shake_detector.update(delta_norm) # 3. 判断倾斜 is_tilted abs(self.pitch) self.tilt_threshold or abs(self.roll) self.tilt_threshold # 4. 触发事件 if is_tilted: self.on_tilt_detected(self.pitch, self.roll) if is_shaking: self.on_shake_detected() except queue.Empty: continue def update_attitude(self, accel, gyro, dt): # 实现互补滤波更新self.pitch和self.roll # ... (代码参考前面章节) pass def on_tilt_detected(self, pitch, roll): print(f[TILT] Pitch: {math.degrees(pitch):.1f}°, Roll: {math.degrees(roll):.1f}°) # 可以在这里触发GPIO、发送网络消息等 def on_shake_detected(self): print(f[SHAKE] Detected at {time.strftime(%H:%M:%S)}) # 同上触发相应动作4.2 阈值调优与防误报策略阈值tilt_threshold,variance_threshold不是拍脑袋定的需要结合具体应用场景实测。倾斜阈值对于安防摄像头可能5-10度的无意触碰就需要告警对于车载记录仪可能阈值要放到30度以上以避免正常转弯误报。建议策略设置一个“持续时长”门槛例如角度连续超过阈值2秒以上才判定为有效倾斜事件避免瞬时干扰。晃动阈值方差阈值variance_threshold对震动强度敏感。可以在设备安装好后模拟几种典型场景如风吹、人为碰撞、车辆经过引起的震动来采集数据观察delta_norm的方差范围从而确定一个能区分“正常环境振动”和“异常晃动”的值。建议策略结合峰值检测只有方差高且出现超过较大阈值的峰值时才判定为剧烈晃动。一个更健壮的检测函数可能如下def check_tilt(pitch, roll, threshold, history_queue, hold_time2.0, sample_rate100): history_queue: 一个保存布尔值的历史队列记录最近是否超阈值 hold_time: 需要持续超阈值的时间秒 is_over (abs(pitch) threshold) or (abs(roll) threshold) history_queue.append(is_over) # 保持队列长度对应hold_time max_len int(hold_time * sample_rate) if len(history_queue) max_len: history_queue.pop(0) # 只有当历史队列中所有记录都为True才判定为持续倾斜 if len(history_queue) max_len and all(history_queue): return True return False4.3 性能优化与资源考量在资源受限的嵌入式设备如reCamera Pro上运行需要注意采样率与计算负载100Hz的采样率意味着每10ms就要执行一次完整的滤波和检测算法。确保你的Python代码足够高效或者考虑用C语言重写核心算法模块。IIO读取效率如前所述使用sysfs轮询效率最低。强烈建议使用libiio的异步缓冲区模式。libiio提供了C和Python的绑定可以高效、低延迟地获取传感器数据流。电源管理持续高频采样会消耗更多电量。如果设备是电池供电可以考虑动态调整采样率在静止时降低采样率如10Hz当检测到微小振动通过一个低灵敏度的晃动检测器时再切换到高采样率模式。日志与调试在生产环境中频繁打印日志到控制台会影响性能。建议将事件记录到内存缓冲区或轻量级的系统日志中。5. 进阶话题从检测到应用实现基础的倾斜和晃动检测后你可以将其作为触发器集成到更广阔的应用中。5.1 与视觉任务联动这是reCamera Pro作为视觉平台的核心优势。例如晃动触发图像稳定当晃动检测器触发时可以通知视频编码管道启用或增强电子防抖EIS算法。倾斜触发视野校正或告警当摄像头被恶意掰动时倾斜事件可以触发即时快照并通过网络发送告警图片给管理员。姿态辅助视觉算法解算出的实时姿态角Pitch, Roll可以提供给SLAM同步定位与地图构建或AR增强现实应用作为视觉里程计的补充尤其在快速运动或纹理缺失的场景下提升鲁棒性。5.2 扩展至更精确的姿态与航向本文主要使用加速度计和陀螺仪。如果reCamera Pro的IMU包含磁力计你可以实现更完整的AHRS姿态航向参考系统解算出包括偏航角Yaw在内的全姿态。这需要更复杂的传感器融合算法如卡尔曼滤波Kalman Filter或Madgwick/Mahony滤波。这些算法开源实现很多但调参更复杂计算量也更大。对于大多数倾斜和晃动检测应用互补滤波已经足够。5.3 系统集成与部署建议作为系统服务将你的检测程序编写成systemd服务设置开机自启并定义好依赖关系例如在网络服务启动后运行。定义清晰的接口通过Unix Socket、MQTT消息或简单的HTTP API向外提供检测状态和事件通知方便其他进程如主视觉应用、网络服务订阅。配置化将所有阈值倾斜角、晃动方差、持续时间、采样率、滤波参数等写入一个配置文件如JSON或YAML避免硬编码便于现场调试和适配不同场景。健康监测增加对IMU数据有效性的检查。例如长时间读数为零或超出量程应产生硬件故障告警。回过头看在reCamera Pro上实现IMU倾斜与晃动检测关键在于理解传感器数据的“脏”本质并通过校准、滤波、融合这三板斧将其转化为稳定可靠的信息。从简单的互补滤波和方差检测入手快速构建原型再根据实际应用场景精细调优阈值和逻辑你就能让这块小小的板子获得感知自身“平衡”与“安稳”的能力。

相关新闻

电子纸驱动开发实战:从UC8151D芯片到低功耗信息屏应用

电子纸驱动开发实战:从UC8151D芯片到低功耗信息屏应用

1. 项目概述:从V1到V2,一块“墨水屏”的进化之路几年前,当我第一次把玩电子纸(E-Paper)屏幕时,就被它那种类纸般的显示效果和极低的功耗深深吸引。它不像LCD或OLED那样需要持续刷新、背光常亮,一…

2026/10/19 13:33:59 阅读更多 →
从硬件抽象到企业级应用:4WD驱动平台的设计、实现与集成实践

从硬件抽象到企业级应用:4WD驱动平台的设计、实现与集成实践

1. 项目概述:从“玩具车”到“企业级智能测试平台”的蜕变几年前,当我第一次把四个直流电机、一块Arduino板和一堆杜邦线攒在一起,让一个小车底盘颤颤巍巍地动起来时,我管那叫“4WD驱动平台”。它确实能四轮驱动,但也仅…

2026/10/19 12:09:29 阅读更多 →
2026AI论文工具终极双检严查时代,选对AI工具=论文稳一半!

2026AI论文工具终极双检严查时代,选对AI工具=论文稳一半!

双检严查时代,选对AI工具论文稳一半! 市面上AI论文工具五花八门,通用模型不贴合学术规范,小众工具定稿风险拉满😭 结合2026高校最新双检规则、毕设刚需、期刊投稿标准,整理出最真实的工具梯度排名&#x…

2026/10/17 11:51:51 阅读更多 →

最新新闻

定制化开发全流程解析:从需求到上线的关键节点与避坑指南

定制化开发全流程解析:从需求到上线的关键节点与避坑指南

定制化开发这东西,圈内人通常叫“定向开发”或者“外包定制”,本质上就是软件公司或者开发团队,针对某家企业独有的业务流程、管理模式、数据规范,从零开始(或基于半成品)打造一套只属于这家企业的软件系统…

2026/10/19 13:34:40 阅读更多 →
基于PyQt5与ResNet18的京剧脸谱识别系统设计实践

基于PyQt5与ResNet18的京剧脸谱识别系统设计实践

1. 项目整体设计与技术选型1.1 这个项目解决的是什么问题京剧脸谱识别系统,本质上是一个图像分类任务。说白了,就是让电脑看一眼京剧脸谱的图片,然后告诉我们这是哪个人物、属于什么谱式,或者对应什么颜色类型。很多人在拿到这个题…

2026/10/19 13:34:40 阅读更多 →
基于OpenCV与Keras的实时手势识别系统全流程实践

基于OpenCV与Keras的实时手势识别系统全流程实践

简介:这套基于Python、OpenCV与Keras的实时手势识别系统源码,面向对计算机视觉感兴趣的初学者和AI应用开发者,尤其适合作为图像分类项目实践样板。项目整体识别准确率约96%,支持自行录制并扩充手势数据集,完整打通图像…

2026/10/19 13:34:40 阅读更多 →
RAG落地实战:从原理到避坑的完整指南

RAG落地实战:从原理到避坑的完整指南

这两年聊大模型应用,RAG(检索增强生成)这个词几乎绕不开。我先说句得罪人的实话:我见过太多团队把RAG做成"检索结果聊天记录一起塞进Prompt",上线之后用户问几个稍微刁钻的问题就原形毕露——答案看着一本正…

2026/10/19 13:34:40 阅读更多 →
AI技术底座与工程实践:从GPU训练集群到伦理边界

AI技术底座与工程实践:从GPU训练集群到伦理边界

1. 从算力预测说起:AI技术底座的迭代逻辑这两年,AI圈的每一次技术发布几乎都在印证同一个判断:算力基础设施的迭代速度,远比大多数人想象的更快。某全球头部芯片企业的掌舵者曾在多个场合给出过一个粗略但极具冲击力的预测——未来…

2026/10/19 13:34:40 阅读更多 →
open-code-review:可编程的原子化代码审查范式

open-code-review:可编程的原子化代码审查范式

1. 这不是又一个“代码审查工具”,而是一次开发协作范式的重新定义我第一次在 GitHub 上看到 open-code-review 这个仓库名时,下意识点开想看看是不是某个新出的静态分析插件——结果发现它既不依赖 SonarQube,也不集成到 IDE 里,…

2026/10/19 13:33:31 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →