micro-ROS嵌入式实战:STM32/ESP32原生运行ROS 2通信栈
简介本资源是一份基于micro-ROS架构的移动机器人嵌入式控制系统完整设计与实现方案面向嵌入式开发、机器人控制及SLAM算法学习者尤其适合高校电子信息类研究生与ROS进阶工程师。内容涵盖micro-ROS开发环境搭建、四轮差速机器人运动学建模、IMU与轮式里程计数据融合、硬件选型与底层驱动电路设计以及Cartographer激光SLAM建图实验与地图数学建模分析具备从理论推导到工程落地的完整闭环。资源为1个7.91MB的PDF文件即齐鲁工业大学李斌同学的硕士学位论文专业学位全文结构清晰含绪论、micro-ROS系统详解、运动模型、卡尔曼滤波融合、SLAM算法对比及实验验证等核心章节附有详细公式推导与系统框图。目前已有399人学习下载可作为micro-ROS嵌入式部署、低成本机器人控制系统开发与Cartographer实际应用的重要参考材料。1. micro-ROS不是“ROS搬进单片机”它让STM32和ESP32真正跑起ROS 2通信栈而不是靠串口桥接“假装在线”你手头有一台基于STM32H7或ESP32-S3的移动机器人小车电机驱动用HAL库写好了IMU数据能读出来但一想到“要加ROS功能”第一反应是不是——得配个树莓派当主控再用USB转串口把传感器数据“喂”给它结果整套系统功耗翻倍、体积胀大、启动慢半拍还多出一个故障点。micro-ROS彻底改写了这个逻辑它不是把ROS 2整个镜像塞进MCU而是用一套可裁剪的、无动态内存分配的、硬实时友好的C语言通信中间件让资源受限的嵌入式设备原生支持ROS 2的发布/订阅、服务调用、参数管理——连rclROS Client Library层都重写为rclc专为裸机或FreeRTOS环境设计。它解决的不是“能不能连ROS”而是“能不能在256KB Flash、64KB RAM的MCU上以100μs抖动响应激光雷达点云触发事件”。适合正在做教育机器人、AGV底盘控制器、低功耗巡检终端的嵌入式开发者尤其当你发现现有方案里“树莓派串口透传”已成性能瓶颈、调试延迟高、节点状态不可靠时micro-ROS是目前工程落地最稳的嵌入式ROS路径。2. 从零构建micro-ROS固件选型、交叉编译与最小可运行节点micro-ROS不是“下载SDK点几下就生成代码”的玩具框架。它的核心价值恰恰在于可控性——你能精确决定哪些ROS 2特性被编译进去、内存池大小怎么配、线程优先级如何调度。这要求你主动介入工具链配置。下面以STM32F429ZI常见教育平台为例走通从环境搭建到第一个发布者节点的全流程。2.1 为什么选micro-ROS Agent Serial Transport而非WiFi/Ethernet很多新手一上来就想用ESP32直连WiFi跑DDS结果卡在TLS握手或内存溢出。实际项目中串口Transport仍是90%嵌入式场景的首选稳定性高无连接状态机、无IP地址冲突、无DHCP超时调试友好screen /dev/ttyACM0 115200就能看到micro-ROS Agent日志资源开销极低Serial Transport仅需约3KB RAM而WiFi Transport在ESP32上常吃掉1.2MB heap兼容性强STM32/ESP32/nRF52840全支持无需改应用层代码。提示micro-ROS Agent是运行在PC或边缘网关上的用户态进程负责将串口收到的micro-ROS二进制协议转换为标准ROS 2 DDS消息。它不部署在MCU上这是关键认知分水岭。2.2 搭建交叉编译环境用microros_setup.sh还是手动配置官方推荐microros_setup.sh脚本但它在非Ubuntu 22.04环境易因Python版本、CMake路径报错。我一般会跳过脚本手动构建工具链原因有三脚本默认拉取foxy分支但F429这类Cortex-M4芯片对humble兼容性更好humble优化了rclc的中断响应脚本生成的colcon.meta文件常含冗余包如rosidl_generator_c导致colcon build失败手动控制CMAKE_TOOLCHAIN_FILE路径能避免arm-none-eabi-gcc被系统PATH污染。执行以下命令以Ubuntu 22.04 GCC Arm Embedded 10.3为例# 1. 创建工作空间并初始化 mkdir -p ~/microros_ws/src cd ~/microros_ws git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup # 2. 安装依赖跳过脚本手动指定工具链 sudo apt install python3-colcon-common-extensions python3-pip pip3 install -U setuptools # 3. 初始化micro-ROS环境关键指定toolchain source /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/bin/activate ros2 run micro_ros_setup create_firmware_ws.sh freertos stm32f429i-disco该命令会生成firmware/目录内含FreeRTOS移植层、CMSIS驱动、以及预配置的CMakeLists.txt。注意stm32f429i-disco是板级支持包名若用自定义PCB需替换为对应board_support_package如custom_stm32f429zi其内容需包含Drivers/,Middlewares/,Core/等标准CubeMX结构。2.3 编写第一个micro-ROS发布者节点发布里程计odom消息不要一上来就搞sensor_msgs/LaserScan——那需要DMA环形缓冲区时间戳同步。先用最轻量的std_msgs/Int32验证通信链路。在firmware/src/applications/下新建publisher_app.c#include rclc/rclc.h #include rclc/executor.h #include std_msgs/msg/int32.h // 全局变量避免堆分配 static rclc_executor_t executor; static rclc_support_t support; static rcl_publisher_t publisher; static std_msgs__msg__Int32 msg; void app_main(void) { // 1. 初始化rclc支持层关键使用静态内存池 rclc_support_init(support, 0, NULL, allocator); // 2. 创建发布者主题名必须与Agent端一致 rclc_publisher_init_default( publisher, support, ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int32), micro_ros_int32_publisher); // 3. 初始化executor注意线程数1避免FreeRTOS任务竞争 rclc_executor_init(executor, support.context, 1, allocator); // 4. 添加发布者到executormicro-ROS 3.0后必须显式添加 rclc_executor_add_publisher(executor, publisher, msg); int count 0; while(1) { // 发布逻辑每500ms发一次递增数值 msg.data count; rcl_publish(publisher, msg, NULL); vTaskDelay(500 / portTICK_PERIOD_MS); // FreeRTOS延时 } }关键参数说明allocator必须传入静态内存分配器rclc_support_t内部已预置否则rcl_publish会调用malloc导致HardFaultmicro_ros_int32_publisher主题名需与后续micro-ROS Agent启动命令中的--topic参数严格一致vTaskDelay不能用HAL_Delay()因其阻塞SysTick破坏FreeRTOS调度编译前在firmware/CMakeLists.txt末尾添加# 注册应用源文件 add_executable(micro_ros_publisher src/applications/publisher_app.c ) target_link_libraries(micro_ros_publisher micro_ros_transport rclc rcl rmw_microxrcedds rosidl_runtime_c )执行colcon build --packages-select micro_ros_publisher即可生成firmware/build/micro_ros_publisher.elf。用arm-none-eabi-objcopy -O binary转为bin烧录。3. 启动micro-ROS Agent让PC端ROS 2节点“看见”你的MCUAgent不是“启动就完事”的黑匣子。它的配置直接决定MCU节点能否被ROS 2生态识别——比如ros2 node list是否显示/micro_ros_publisherros2 topic echo能否收到数据。这里踩过太多坑必须拆解清楚。3.1 最小启动命令与必要参数不要用ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0这种简写。必须显式指定所有关键参数否则Agent会以默认QoS策略拒绝MCU消息# 正确启动以Ubuntu 22.04 ROS 2 Humble为例 ros2 run micro_ros_agent micro_ros_agent serial \ --dev /dev/ttyACM0 \ --baudrate 115200 \ --domain_id 0 \ --rmw_implementation rmw_cyclonedds_cpp \ --topic micro_ros_int32_publisher \ --type std_msgs/msg/Int32 \ --publish参数逐条解析--dev /dev/ttyACM0串口设备路径Linux下热插拔后可能变为/dev/ttyACM1务必用dmesg | grep tty确认--baudrate 115200必须与MCU端HAL_UART_Init()中huart-Init.BaudRate完全一致差1位都会收乱码--domain_id 0ROS 2 DDS域IDMCU端rclc_support_init()默认用0此处必须匹配否则跨域无法通信--rmw_implementation rmw_cyclonedds_cpp指定RMW实现。rmw_fastrtps_cpp在Humble中已被标记为deprecated且对micro-ROS序列化兼容性差--topic与--type告诉Agent“这个串口流里哪个主题对应什么消息类型”Agent据此反序列化二进制帧--publish启用发布模式Agent作为订阅者接收MCU数据并转发为ROS 2 Topic。若MCU要调用服务还需加--service参数。注意Agent启动后终端会输出[INFO] [micro_ros_agent]: Creating entity: micro_ros_int32_publisher (std_msgs/msg/Int32)这才是成功标志。若只显示Serial transport initialized却无实体创建日志说明--topic或--type拼写错误。3.2 验证通信链路三步法排除90%问题别急着写复杂逻辑用最原始方式验证物理层和协议层串口层验证# 在Agent运行时另开终端监听同一串口不冲突因Agent用raw模式 stty -F /dev/ttyACM0 115200 raw -echo cat /dev/ttyACM0 | hexdump -C | head -20若看到连续00 00 00 00 01 00 00 00 ...micro-ROS二进制协议头说明MCU发送正常若全是00或乱码检查MCU端UART引脚、电平3.3V TTL、HAL_UART_Transmit()返回值。Agent日志验证Agent终端若出现[WARN] [micro_ros_agent]: Message too short代表MCU发送的帧长度不足协议头至少16字节通常是rcl_publish()调用前未正确初始化msg结构体若出现[ERROR] [micro_ros_agent]: Failed to deserialize message大概率是--type参数写成std_msgs/Int32缺/msg/或大小写错误。ROS 2生态验证ros2 node list # 应显示 /micro_ros_publisher ros2 topic list # 应显示 /micro_ros_int32_publisher ros2 topic echo /micro_ros_int32_publisher # 应持续输出 data: 0,1,2...4. 常见问题排查五个让开发者熬夜到凌晨的硬核坑micro-ROS的文档很全但很多坑藏在底层机制里官方示例不会告诉你。以下是我在三个不同硬件平台STM32F429、ESP32-S3、nRF52840上踩出的血泪经验按现象→原因→解决三段式整理4.1 现象Agent启动后ros2 node list看不到节点但串口hexdump能看到数据流原因MCU端未调用rclc_executor_spin_some()或rclc_executor_spin()。micro-ROS不是“发布即发送”它依赖Executor轮询内部队列。若只调用rcl_publish()而不驱动Executor消息会堆积在rclc_publisher_t的环形缓冲区中永远不会被序列化发出。解决在MCU主循环中必须加入Executor驱动while(1) { rclc_executor_spin_some(executor, RCL_MS_TO_NS(100)); // 每100ms处理一次队列 vTaskDelay(10 / portTICK_PERIOD_MS); }4.2 现象ros2 topic echo收到数据但data字段始终为0原因std_msgs__msg__Int32 msg声明在函数内栈上而rcl_publish()传入的是指针。当函数返回后栈内存被复用Agent收到的是野指针指向的随机值。解决所有ROS消息结构体必须声明为static或全局变量static std_msgs__msg__Int32 msg; // ✅ 正确 // std_msgs__msg__Int32 msg; // ❌ 错误栈变量4.3 现象MCU烧录后Agent报[ERROR] [micro_ros_agent]: Failed to create participant原因--domain_id与MCU端rclc_support_init()传入的domain ID不一致。micro-ROS默认domain_id0但若MCU代码中调用了rclc_support_init_with_domain_id(support, 0, NULL, allocator, 1)手动设为1而Agent未加--domain_id 1则DDS Participant创建失败。解决统一domain_id。建议在MCU端显式指定rclc_support_init_with_domain_id(support, 0, NULL, allocator, 0); // 强制设为0Agent端同步加--domain_id 0。4.4 现象ESP32-S3烧录后串口无输出dmesg显示ch341-uart converter detected但/dev/ttyUSB0不存在原因CH341驱动在Linux 5.15内核中默认禁用需手动加载。解决sudo modprobe ch341 echo ch341 | sudo tee -a /etc/modules # 若仍无效检查udev规则是否屏蔽了CH341 lsusb | grep CH341 sudo usermod -a -G dialout $USER4.5 现象STM32F429使用CubeMX生成的FreeRTOSrclc_executor_spin_some()导致HardFault原因CubeMX默认将configTOTAL_HEAP_SIZE设为20KB但micro-ROS的rclc_support_t初始化需至少32KB静态内存池含DDS中间件。解决在FreeRTOSConfig.h中修改#define configTOTAL_HEAP_SIZE ((size_t)(0x00008000)) // 32KB 十六进制 // 同时确保Linker Script中.heap段足够大通常需0x80005. 移动机器人实战把IMU数据接入ROS 2 TF树实现真实坐标系对齐前面的Int32只是热身。现在进入真实场景你的移动机器人小车装有MPU6050I2C接口需要将原始加速度计/陀螺仪数据发布为sensor_msgs/Imu并参与robot_state_publisher的TF变换最终在RViz中看到小车模型随IMU姿态实时旋转。这一步决定了micro-ROS能否替代传统“MCU采集串口透传PC端ROS节点解析”的老旧架构。5.1 MCU端从I2C读取到ROS消息发布的完整链路MPU6050原始数据是16位补码需转换为国际单位制m/s², rad/s。关键不在算法而在时间戳同步——sensor_msgs/Imu要求header.stamp精确到纳秒级而MCU没有RTC。解决方案用SysTick计数器生成单调递增时间戳并在Agent端校准偏移。#include sensor_msgs/msg/imu.h #include mpu6050.h // 自定义驱动含mpu6050_read_accel_gyro() static sensor_msgs__msg__Imu imu_msg; static uint32_t last_systick 0; void publish_imu_data(void) { // 1. 读取原始数据假设mpu6050_read_accel_gyro返回g和deg/s float ax, ay, az, gx, gy, gz; mpu6050_read_accel_gyro(ax, ay, az, gx, gy, gz); // 2. 单位转换MPU6050默认±2g, ±250deg/s imu_msg.linear_acceleration.x ax * 9.80665f; imu_msg.linear_acceleration.y ay * 9.80665f; imu_msg.linear_acceleration.z az * 9.80665f; imu_msg.angular_velocity.x gx * M_PI / 180.0f; imu_msg.angular_velocity.y gy * M_PI / 180.0f; imu_msg.angular_velocity.z gz * M_PI / 180.0f; // 3. 填充header用SysTick生成相对时间戳单位ms uint32_t now HAL_GetTick(); imu_msg.header.stamp.sec now / 1000; imu_msg.header.stamp.nanosec (now % 1000) * 1000000UL; // 转为纳秒 // 4. 发布注意imu_msg必须为static rcl_publish(imu_publisher, imu_msg, NULL); }提示HAL_GetTick()精度为1ms对IMU 100Hz发布足够。若需更高精度可用DWT_CYCCNT寄存器Cortex-M内核周期计数器但需在SystemCoreClockUpdate()后使能。5.2 PC端用robot_state_publisher构建TF树让RViz“看懂”小车姿态micro-ROS本身不处理TF需靠robot_state_publisher将sensor_msgs/Imu转换为tf2_msgs/TFMessage。但注意robot_state_publisher默认只订阅joint_states要让它处理IMU需自定义URDF并添加gazebo标签关联IMU传感器。创建robot.urdf.xacro?xml version1.0? robot xmlns:xacrohttp://www.ros.org/wiki/xacro link namebase_link/ link nameimu_link/ joint nameimu_joint typefixed parent linkbase_link/ child linkimu_link/ origin xyz0 0 0.1 rpy0 0 0/ !-- IMU安装在底盘上方0.1m -- /joint gazebo referenceimu_link sensor typeimu nameimu_sensor always_ontrue/always_on update_rate100/update_rate plugin filenamelibgazebo_ros_imu_sensor.so nameimu_plugin topicName/imu/data_raw/topicName !-- 与MCU发布主题一致 -- bodyNameimu_link/bodyName /plugin /sensor /gazebo /robot启动命令# 1. 启动micro-ROS Agent订阅IMU主题 ros2 run micro_ros_agent micro_ros_agent serial \ --dev /dev/ttyACM0 \ --baudrate 115200 \ --domain_id 0 \ --topic /imu/data_raw \ --type sensor_msgs/msg/Imu \ --publish # 2. 启动robot_state_publisher加载URDF ros2 run robot_state_publisher robot_state_publisher \ --ros-args -p robot_description:$(xacro ./robot.urdf.xacro) # 3. 启动RViz2添加TF和RobotModel显示 rviz2 -d ./imu_rviz.rviz此时RViz中的小车模型会随IMU俯仰/横滚角实时转动。这是micro-ROS真正价值的体现它让嵌入式传感器数据无缝融入ROS 2的坐标系管理体系不再需要PC端额外写解析节点。5.3 进阶技巧用micro-ROS参数服务动态调整IMU滤波系数IMU原始数据噪声大常需卡尔曼滤波。与其把滤波逻辑写死在MCU固件里不如用micro-ROS的参数服务Parameter Service实现运行时调整。在MCU端注册参数static rcl_parameter_t filter_param; static rcl_parameter_value_t filter_value; void init_filter_param(void) { filter_param.name imu_filter_alpha; filter_value.type RCL_PARAMETER_DOUBLE; filter_value.value.double_value 0.98; // 默认值 filter_param.value filter_value; rclc_parameter_register(support, filter_param); } // 在主循环中读取参数值每100ms检查一次 void check_filter_param(void) { rcl_ret_t ret rclc_parameter_get(filter_param, filter_value); if (ret RCL_RET_OK filter_value.type RCL_PARAMETER_DOUBLE) { alpha filter_value.value.double_value; // 更新滤波系数 } }PC端用ros2 param set /micro_ros_publisher imu_filter_alpha 0.95即可实时生效。这比重新烧录固件快10倍也避免了“调参-烧录-测试”循环的等待焦虑。我带过的某高校机器人社团曾用这套方法在2小时内完成IMU零偏校准先用ros2 topic echo /imu/data_raw观察静止时的bias再用ros2 param set注入补偿值最后ros2 topic echo /imu/data验证输出归零。没有micro-ROS参数服务他们得改C代码、重新编译、烧录、重启一小时就过去了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

错误码体系设计指南:从编码规则到微服务落地实践

错误码体系设计指南:从编码规则到微服务落地实践

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

2026/10/16 8:18:23 阅读更多 →
京东全民营业网页自动化辅助脚本设计与实现

京东全民营业网页自动化辅助脚本设计与实现

1. 项目概述:一个面向普通用户的网页自动化辅助工具“京东全民营业拿金币之辅助脚本网页版”——这个标题里藏着三个关键信息点:京东平台、全民营业活动、网页端自动化辅助。它不是什么黑灰产工具,而是一个典型的、面向普通用户设计的网页交互…

2026/10/17 11:26:48 阅读更多 →
Spring Kafka @KafkaListener 源码级拆解:从注册到消费的完整链路与排查指南

Spring Kafka @KafkaListener 源码级拆解:从注册到消费的完整链路与排查指南

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

2026/10/17 10:27:57 阅读更多 →

最新新闻

Argon架构解析:面向毫秒级SLA的AI服务三层解耦设计

Argon架构解析:面向毫秒级SLA的AI服务三层解耦设计

1. 项目概述:这不是一次简单的模型调用,而是一次系统级工程重构“Google 用 Gemini 4 Argon 构建案例”——这个标题乍看像一则新闻简报,但作为在AI基础设施一线摸爬滚打十多年的从业者,我第一反应是:这根本不是在讲“…

2026/10/17 11:32:28 阅读更多 →
n8n集成Gemini 4 Argon与MCP协议构建真Agent工作流

n8n集成Gemini 4 Argon与MCP协议构建真Agent工作流

1. 这不是“又一个AI工作流”,而是n8n生态里首次真正打通MCP协议的Gemini原生集成 我第一次在某跨平台自动化实验室看到这个标题时,下意识点开想确认是不是标题党——毕竟过去两年里,“用XX模型接入n8n”这类文章我至少扫过四十多篇&#xff…

2026/10/17 11:32:28 阅读更多 →
意图优先的版本控制系统:重构代码协作的认知范式

意图优先的版本控制系统:重构代码协作的认知范式

1. 项目概述:这不是又一个Git客户端,而是一次底层协作范式的重写“7个人、5个月,Anthropic造出了Git替代品”——这个标题在技术圈刷屏时,我正带着团队在做一个跨时区协同的嵌入式固件项目。每天早上打开终端,git pull…

2026/10/17 11:32:28 阅读更多 →
DVWA中CSP绕过原理与四类实战利用手法详解

DVWA中CSP绕过原理与四类实战利用手法详解

1. 项目概述:CSP不是铁壁,而是可被理解、可被分析、可被绕过的策略体系“CSP Bypass”这个词在渗透测试和Web安全研究圈里,几乎等同于一次对开发者安全意识的现场压力测试。它不制造漏洞,却能放大漏洞的价值;它不依赖服…

2026/10/17 11:32:28 阅读更多 →
Vue高德地图动态绘制路线与轨迹巡航实战:从坐标转换到动画性能优化

Vue高德地图动态绘制路线与轨迹巡航实战:从坐标转换到动画性能优化

做后台管理系统这么多年,我接到过最典型的“地图需求”就是标题里这个:高德地图动态绘制路线,轨迹巡航,还指定要用 Vue。第一次听可能觉得不就是画一条线加个小车跑吗,真做完才发现里面全是细节:坐标要转换…

2026/10/17 11:32:28 阅读更多 →
STM32F103移植W5500 ioLibrary:SPI驱动与socket通信实战

STM32F103移植W5500 ioLibrary:SPI驱动与socket通信实战

简介:面向基于STM32F103RCT6等MINISTM32平台的嵌入式开发者,这套W5500 ioLibrary移植工程包含完整的驱动适配代码,可直接参考使用。W5500是集成SPI接口的硬核以太网控制器,自带TCP/IP协议栈,配合STM32的SPI外设即可实现…

2026/10/17 11:31:27 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →