基于ROS 2与Gazebo的宇树G1机器人传统服饰编舞仿真实践
最近在探索人形机器人的应用边界时一个有趣的想法冒了出来如何让一台像宇树G1这样的先进机器人穿上传统服饰表演一段富有文化韵味的舞蹈这不仅仅是简单的动作编排更涉及到机器人运动控制、动作序列规划、仿真验证到实体部署的完整链路。本文将基于ROS 2和Gazebo仿真环境手把手带你实现一个“宇树G1机器人传统服饰编舞表演”的完整项目。无论你是机器人领域的初学者还是有一定ROS基础的开发者都能通过本文掌握从零搭建仿真场景、编写舞蹈动作、解决物理交互问题并最终在仿真中呈现表演的全过程。1. 背景与核心概念为何选择宇树G1与ROS 2在开始动手之前我们需要理解这个项目背后的技术选型逻辑。宇树G1机器人是一款高性能、开源的人形机器人平台。它以其灵活的关节、强大的运动能力和开放的软件接口而闻名于开发者社区。选择G1进行编舞项目主要基于以下几点开源性与可编程性宇树提供了完善的SDK和仿真模型允许开发者深度控制其每一个关节这对于需要精细动作的舞蹈编排至关重要。运动性能G1具备优秀的动态平衡能力和多样的步态能够实现行走、转身、手臂挥舞等复杂动作为舞蹈提供了物理基础。社区与生态围绕宇树机器人的ROS驱动、仿真模型和示例代码比较丰富降低了开发门槛。ROS 2Robot Operating System 2是机器人领域的“元操作系统”。它不是一个真正的操作系统而是一套提供硬件抽象、底层设备控制、常用功能实现、进程间消息传递和包管理的框架。对于本项目ROS 2的核心价值在于标准化通信通过话题Topic、服务Service、动作Action实现舞蹈动作指令的发送与机器人状态的回传。工具链完善RViz用于可视化Gazebo用于高保真物理仿真ros2_control用于机器人控制。仿真与实物无缝切换在Gazebo中调试好的舞蹈动作可以通过相近的接口部署到实体G1机器人上实现“仿真即开发”。传统服饰编舞的挑战为机器人添加服饰如长袖、裙摆会在仿真中引入复杂的非刚性体动力学问题服饰可能与机器人自身发生碰撞、缠绕影响平衡。这要求我们在动作设计时考虑物理约束并在仿真中反复调试。2. 环境准备与版本说明一个稳定的开发环境是项目成功的第一步。以下是经过验证的环境配置。操作系统Ubuntu 22.04 LTS (Jammy Jellyfish)。这是ROS 2 Humble Hawksbill的推荐系统。ROS 2 发行版ROS 2 Humble Hawksbill。这是当前的长期支持版本稳定性好。关键工具与依赖Gazebo版本 Gazebo Fortress 或 Garden与ROS 2 Humble兼容的版本。用于物理仿真。ColconROS 2的构建工具。Rviz2ROS 2的可视化工具。宇树G1相关包我们需要宇树官方或社区维护的G1机器人URDF模型、ROS 2控制接口和Gazebo仿真插件。安装步骤概览安装ROS 2 Humble请严格按照ROS官方文档进行安装。# 设置语言环境 sudo apt update sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 export LANGen_US.UTF-8 # 添加ROS 2仓库密钥和源 sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null # 安装ROS 2核心包 sudo apt update sudo apt install ros-humble-desktop python3-argcomplete安装Gazebo以Fortress为例sudo apt-get update sudo apt-get install gz-fortress创建工作空间并获取宇树G1仿真包mkdir -p ~/g1_dance_ws/src cd ~/g1_dance_ws/src # 假设宇树G1的ROS包在GitHub上这里用示例仓库代替实际请查找最新官方仓库。 # git clone https://github.com/UnitreeRobotics/unitree_ros2.git # 由于官方仓库地址可能变化建议从宇树GitHub主页或ROS Index (https://index.ros.org/) 搜索 unitree_g1_description 和 unitree_g1_gazebo。 cd ~/g1_dance_ws rosdep install -i --from-path src --rosdistro humble -y colcon build --symlink-install source install/setup.bash验证环境尝试启动G1在Gazebo中的空世界仿真。# 在终端中运行确保已source工作空间的setup.bash ros2 launch unitree_g1_gazebo g1_empty_world.launch.py如果成功你应该能看到Gazebo界面中站立着一个宇树G1机器人模型。3. 核心原理与动作设计拆解机器人舞蹈的本质是一系列按时间顺序执行的关节角度轨迹。我们需要理解两个核心概念URDF和关节轨迹控制。3.1 URDF模型与服饰添加URDFUnified Robot Description Format是描述机器人几何结构、运动学、动力学的XML格式文件。宇树G1的模型通常位于unitree_g1_description/urdf目录下。要为G1“穿上”传统服饰我们不直接修改原始URDF而是创建一个新的、包含服饰模型的URDF文件。服饰可以用简单的网格模型表示。示例为G1添加一个简化的披风cape!-- 文件~/g1_dance_ws/src/my_g1_costume/urdf/g1_with_cape.urdf.xacro -- ?xml version1.0? robot nameg1_with_cape xmlns:xacrohttp://www.ros.org/wiki/xacro !-- 包含原始的G1模型 -- xacro:include filename$(find unitree_g1_description)/urdf/g1.urdf.xacro / xacro:unitree_g1/ !-- 定义披风链接将其附着在机器人的躯干上 -- link namecape_link visual geometry mesh filenamepackage://my_g1_costume/meshes/cape.dae scale0.8 0.8 0.8/ /geometry material namered color rgba0.8 0.1 0.1 1.0/ /material /visual collision geometry box size0.5 0.8 0.01/ !-- 简化碰撞体为一个薄盒 -- /geometry /collision inertial mass value0.5/ !-- 赋予较小质量 -- origin xyz0 0 0 rpy0 0 0/ inertia ixx0.001 ixy0.0 ixz0.0 iyy0.001 iyz0.0 izz0.001/ /inertial /link joint namecape_to_body_joint typefixed parent linktrunk/ !-- 假设躯干链接名为‘trunk’需根据实际URDF确认 -- child linkcape_link/ origin xyz0.0 0.0 0.15 rpy0 0 0/ !-- 调整附着位置 -- /joint /robot关键点xacro:include引入原始机器人。添加新的link描述服饰的视觉、碰撞和惯性属性。碰撞体要尽量简化以提高仿真效率。使用fixed关节将服饰链接固定到机器人身体的某个部位。3.2 关节轨迹控制与动作序列ROS 2中控制机器人运动的标准方式是通过trajectory_msgs/msg/JointTrajectory消息。它包含joint_names: 要控制的关节名称列表。points: 轨迹点列表每个点包含positions: 目标关节角度弧度。velocities: 可选目标关节速度。time_from_start: 从轨迹开始到达该点的时间。舞蹈动作设计流程关键帧提取将一段传统舞蹈视频分解成若干个关键姿势。逆运动学IK求解对于每个关键姿势根据期望的末端执行器如手、脚位置计算出所有关节的角度。可以使用MoveIt 2或IKFast等工具但对于简单动作也可以手动估算或通过正向运动学调试。轨迹插值在两个关键姿势之间通过多项式插值如三次样条生成平滑的关节角度轨迹形成连贯动作。时间规划为每个轨迹点分配时间形成节奏感。4. 完整实战编舞程序开发与仿真我们将创建一个ROS 2功能包编写一个舞蹈动作发布节点。4.1 创建功能包与项目结构cd ~/g1_dance_ws/src ros2 pkg create --build-type ament_python g1_dance_node --dependencies rclpy trajectory_msgs sensor_msgs std_msgs cd g1_dance_node mkdir -p launch config4.2 编写舞蹈动作发布节点创建主节点文件g1_dance_node/dance_publisher.py#!/usr/bin/env python3 # 文件~/g1_dance_ws/src/g1_dance_node/g1_dance_node/dance_publisher.py import rclpy from rclpy.node import Node from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint import time class DancePublisher(Node): def __init__(self): super().__init__(g1_dance_publisher) # 创建发布者发布到G1的关节轨迹控制器命令话题 # 话题名需根据实际控制接口调整常见为 /joint_trajectory_controller/joint_trajectory self.publisher_ self.create_publisher(JointTrajectory, /joint_trajectory_controller/joint_trajectory, 10) # 定义G1的主要关节名示例需根据实际URDF模型确认 self.joint_names [ FL_hip_joint, FL_thigh_joint, FL_calf_joint, # 左前腿 FR_hip_joint, FR_thigh_joint, FR_calf_joint, # 右前腿 HL_hip_joint, HL_thigh_joint, HL_calf_joint, # 左后腿 HR_hip_joint, HR_thigh_joint, HR_calf_joint, # 右后腿 waist_joint, shoulder_pitch_joint_L, shoulder_roll_joint_L, elbow_joint_L, # 左臂 shoulder_pitch_joint_R, shoulder_roll_joint_R, elbow_joint_R # 右臂 ] self.get_logger().info(舞蹈动作发布节点已启动准备开始表演...) time.sleep(2) # 等待系统稳定 self.perform_dance() def create_pose(self, positions_dict, time_sec): 创建一个轨迹点。 Args: positions_dict: 字典键为关节名值为目标角度(弧度)。 time_sec: 从轨迹开始到该点的时间秒。 Returns: JointTrajectoryPoint: 构造好的轨迹点。 point JointTrajectoryPoint() # 按照self.joint_names的顺序填充位置数组 positions [] for name in self.joint_names: positions.append(positions_dict.get(name, 0.0)) # 未指定的关节保持0度 point.positions positions point.time_from_start rclpy.duration.Duration(secondstime_sec).to_msg() return point def perform_dance(self): 编排一组简单的舞蹈动作序列。 trajectory JointTrajectory() trajectory.joint_names self.joint_names # 姿势1起始站立姿势 (t0s) pose1 { FL_hip_joint: 0.0, FL_thigh_joint: 0.8, FL_calf_joint: -1.6, FR_hip_joint: 0.0, FR_thigh_joint: 0.8, FR_calf_joint: -1.6, HL_hip_joint: 0.0, HL_thigh_joint: 0.8, HL_calf_joint: -1.6, HR_hip_joint: 0.0, HR_thigh_joint: 0.8, HR_calf_joint: -1.6, waist_joint: 0.0, shoulder_pitch_joint_L: 0.0, shoulder_roll_joint_L: 0.0, elbow_joint_L: 0.0, shoulder_pitch_joint_R: 0.0, shoulder_roll_joint_R: 0.0, elbow_joint_R: 0.0, } trajectory.points.append(self.create_pose(pose1, 0.0)) # 姿势2微微下蹲双臂展开 (t2s) pose2 pose1.copy() pose2.update({ FL_thigh_joint: 0.6, FL_calf_joint: -1.2, FR_thigh_joint: 0.6, FR_calf_joint: -1.2, HL_thigh_joint: 0.6, HL_calf_joint: -1.2, HR_thigh_joint: 0.6, HR_calf_joint: -1.2, shoulder_roll_joint_L: 1.0, shoulder_roll_joint_R: -1.0, # 手臂外展 }) trajectory.points.append(self.create_pose(pose2, 2.0)) # 姿势3向左迈步右臂上举 (t4s) pose3 pose2.copy() pose3.update({ FL_hip_joint: 0.3, HL_hip_joint: 0.3, # 左腿侧迈 FR_hip_joint: -0.3, HR_hip_joint: -0.3, # 右腿侧迈 shoulder_pitch_joint_R: -1.57, # 右臂前举模拟上举 }) trajectory.points.append(self.create_pose(pose3, 4.0)) # 姿势4回到姿势2 (t6s) trajectory.points.append(self.create_pose(pose2, 6.0)) # 姿势5回到起始姿势 (t8s) trajectory.points.append(self.create_pose(pose1, 8.0)) self.get_logger().info(f发布包含 {len(trajectory.points)} 个姿势的舞蹈轨迹) self.publisher_.publish(trajectory) self.get_logger().info(舞蹈轨迹发布完成) def main(argsNone): rclpy.init(argsargs) node DancePublisher() # 发布一次后节点任务完成可以关闭 rclpy.spin_once(node, timeout_sec10.0) # 等待一段时间确保消息发出 node.destroy_node() rclpy.shutdown() if __name__ __main__: main()4.3 创建启动文件创建launch/dance.launch.py用于一键启动仿真和舞蹈节点。# 文件~/g1_dance_ws/src/g1_dance_node/launch/dance.launch.py from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource from ament_index_python.packages import get_package_share_directory import os def generate_launch_description(): # 启动G1在Gazebo中的仿真 g1_gazebo_launch IncludeLaunchDescription( PythonLaunchDescriptionSource([ os.path.join(get_package_share_directory(unitree_g1_gazebo), launch, g1_empty_world.launch.py) ]) ) # 启动舞蹈动作发布节点 dance_node Node( packageg1_dance_node, executabledance_publisher, outputscreen, # 可以传递参数例如延迟启动时间 parameters[{start_delay: 5.0}] ) return LaunchDescription([ g1_gazebo_launch, # 可以添加一个定时器等Gazebo完全加载后再启动舞蹈节点 # 这里简单处理直接同时启动舞蹈节点内部有延迟 dance_node, ])4.4 修改package.xml和setup.py确保package.xml和setup.py正确声明依赖和入口点。在setup.py中# 文件~/g1_dance_ws/src/g1_dance_node/setup.py from setuptools import setup import os from glob import glob package_name g1_dance_node setup( # ... 其他字段 ... entry_points{ console_scripts: [ dance_publisher g1_dance_node.dance_publisher:main, ], }, )4.5 编译与运行cd ~/g1_dance_ws colcon build --packages-select g1_dance_node source install/setup.bash # 启动完整的仿真与舞蹈 ros2 launch g1_dance_node dance.launch.py预期结果Gazebo启动加载出带有如果URDF已集成简易服饰的G1机器人。几秒后机器人将开始执行预设的舞蹈动作序列。你可以在RViz2中同时查看关节状态。5. 常见问题与排查思路在开发过程中你可能会遇到以下典型问题问题现象可能原因排查思路与解决方案Gazebo启动后机器人模型“趴在地上”或抖动不止1. 关节初始位置与控制器期望不符。2. PID参数未调好或控制器未正确加载。3. 服饰碰撞体与机器人身体干涉。1. 检查URDF中关节的初始位置origin和limit。2. 查看Gazebo和ROS 2控制器的启动日志确认ros2_control和joint_state_broadcaster等控制器是否正常加载。3. 在Gazebo中暂停仿真检查服饰碰撞体是否嵌入机器人本体调整服饰关节的origin。舞蹈节点发布轨迹后机器人不动1. 发布的关节名与控制器期望的关节名不匹配。2. 话题名称错误。3. 轨迹点的时间time_from_start设置不合理如第一个点不是0秒。1. 使用ros2 topic list和ros2 topic echo /joint_states查看实际的关节名和状态。2. 使用ros2 topic info /joint_trajectory_controller/joint_trajectory确认话题类型和发布者/订阅者。3. 确保轨迹的第一个点time_from_start设置为0。机器人动作卡顿、不流畅1. 轨迹点之间插值方式问题。2. 控制器频率或仿真步长设置不当。3. 计算机性能不足Gazebo仿真实时因子过低。1. 检查控制器是否支持位置插值。可以尝试增加轨迹点的密度。2. 在Gazebo的物理引擎设置中调整real_time_update_rate和max_step_size。3. 简化服饰的网格模型和碰撞体关闭不必要的Gazebo渲染效果。服饰穿模或剧烈抖动1. 服饰碰撞体与机器人碰撞体重叠或间隙过小。2. 服饰质量或惯性参数设置不合理。3. 物理引擎接触参数需要调整。1. 仔细调整服饰链接相对于父链接的origin确保视觉模型贴合但碰撞体有微小间隙。2. 为服饰链接设置合理的mass和inertia过轻可能导致抖动。3. 在Gazebo中调整接触管理器Contact Manager的参数如增加kp和kd。6. 最佳实践与工程建议将创意项目工程化需要考虑更多细节。动作设计流程标准化使用专业工具考虑使用BlenderROS插件或MoveIt 2的RViz运动规划插件进行可视化动作捕捉和关键帧设计比手动计算关节角度更高效准确。建立动作库将设计好的舞蹈片段如“挥手”、“踏步”、“转身”封装成独立的函数或ROS服务/动作便于编排复杂的舞蹈节目。仿真优化分层仿真初期可使用简化模型无服饰或简单碰撞体快速验证动作逻辑和稳定性。待核心动作稳定后再添加复杂的服饰模型进行细节调整。利用ROS 2录制与回放使用ros2 bag record录制仿真中成功的舞蹈轨迹然后通过ros2 bag play反复回放测试无需每次重新运行节点。代码与配置管理参数化配置将关节名、话题名、动作时间等写入YAML配置文件使代码更灵活。使用ROS 2 Actions对于长时间、可抢占的舞蹈任务使用Action接口比简单的Topic更合适它可以提供反馈和取消功能。版本控制对URDF模型、舞蹈脚本、启动文件等使用Git进行版本管理。安全与实体部署考量仿真充分测试在仿真中必须测试机器人跌倒、关节超限等异常情况并设置安全边界如位置、速度、力矩限制。逐步实物验证部署到实体机器人前先在仿真中以慢速0.5倍速运行观察平衡和地面反作用力。实体测试时务必使用安全绳并在开阔空间进行。紧急停止机制确保有硬件急停开关和软件监听节点能够随时中断动作并切换到安全姿势。服饰仿真的进阶处理对于非常柔软或复杂的服饰如长水袖简化的刚体碰撞可能不逼真。可以探索使用Gazebo的软体动力学插件或更专业的物理引擎但这会极大增加计算复杂度。一个折中方案是使用多个通过被动关节连接的刚体链来近似柔软效果。从站立到起舞从代码到动作我们完成了一个完整的宇树G1机器人传统服饰编舞仿真项目。这个过程涵盖了ROS 2开发的核心流程环境搭建、模型扩展、节点编程、轨迹控制、仿真调试。关键在于理解机器人运动控制的本质是时间和空间上的关节轨迹规划而仿真是验证想法、规避风险的绝佳沙盒。你可以在此基础上继续深化设计更复杂的舞蹈动作序列为服饰添加更精细的纹理和物理属性甚至引入音乐节奏分析来自动生成动作。希望这篇教程能成为你探索人形机器人创意应用的起点。

相关新闻

双连通分量例题

双连通分量例题

[CEOI2017] One-Way Streets 题意:给定一个无向连通图,以及若干对点 (x, y),要求给每条边定向,使得 x 能到达 y,求哪些边的方向是唯一确定的,并输出其方向。 环上的边方向不唯一 如果一条无向边 (u, v) 位于…

2026/10/17 16:16:51 阅读更多 →
Java应用测试指南:单元测试与集成测试的全面解析与实践

Java应用测试指南:单元测试与集成测试的全面解析与实践

1. 引言:为什么我们需要测试?在软件开发过程中,代码质量直接关系到产品的稳定性、可维护性和交付效率。想象一下,你开发了一个用户注册功能,上线后才发现密码验证逻辑有漏洞——这可能导致用户账户被盗。测试就是我们的…

2026/10/16 16:42:09 阅读更多 →
小i约球诞生记08:AI 瞎编接口,比写错代码更坑

小i约球诞生记08:AI 瞎编接口,比写错代码更坑

本文是「小i约球诞生记」系列文章之一。 小i约球是一个微信小程序,主要帮乒乓球、羽毛球、台球、网球爱好者找到附近合适的球友。本文从一个具体技术或产品问题切入,记录约球小程序从 0 到 1 过程中的设计取舍。前言 这篇聊一个很烦的坑:AI 会…

2026/10/15 17:13:36 阅读更多 →

最新新闻

Excel数据透视表实战:从源数据清洗到动态汇总的完整指南

Excel数据透视表实战:从源数据清洗到动态汇总的完整指南

简介:这份《Excel数据透视表应用大全》面向需要处理大量业务数据的职场人士与Excel进阶学习者,帮助解决多维度汇总、分类比较与百分比分析等实际分析难题。资源以Word文档形式呈现,共1个doc文件,压缩包约10MB,内容围绕…

2026/10/17 16:16:28 阅读更多 →
糖尿病预测项目实战:从Jupyter Notebook到完整机器学习建模链路

糖尿病预测项目实战:从Jupyter Notebook到完整机器学习建模链路

简介:这是一套以 Jupyter Notebook 为核心的糖尿病预测入门项目,面向机器学习初学者与数据分析爱好者,演示如何利用 Pima Indians Diabetes 数据集完成从数据清洗、EDA 可视化、特征工程到模型训练与评估的完整流程。压缩包共 4 个文件、约 3…

2026/10/17 16:16:28 阅读更多 →
UML建模实战:校园图书管理系统需求分析与代码生成全解析

UML建模实战:校园图书管理系统需求分析与代码生成全解析

简介:在软件工程实践中,需求分析是决定系统质量的关键环节,而UML建模为需求到设计的转化提供了标准语言。通过用例图明确参与者与功能边界,利用类图梳理实体关系,再借助顺序图推演业务流程,这一系列静态与动…

2026/10/17 16:16:28 阅读更多 →
React入门笔记:组件化、JSX与Hooks实战指南

React入门笔记:组件化、JSX与Hooks实战指南

磨蹭了很久,终于开始系统性梳理React的学习笔记了。前端框架用了不少,但每次都是照着文档敲,敲完就忘,这次决定用"写笔记"的方式逼自己把原理层面的东西弄透。这篇笔记是第一阶段的内容,从组件化思想、JSX语法、状态管理到Hooks的基本用法,全部基于我实际敲代码时的理…

2026/10/17 16:16:28 阅读更多 →
GA-LSTM:用遗传算法自动搜索LSTM超参数,告别手动调参

GA-LSTM:用遗传算法自动搜索LSTM超参数,告别手动调参

简介:基于遗传算法优化LSTM的Python实现资源,面向需要提升时间序列预测准确率的深度学习开发者与研究人员。项目将GA全局搜索能力与LSTM序列建模优势结合,通过GA自动寻优LSTM权重、偏置等参数,缓解传统RNN梯度消失问题&#xff0c…

2026/10/17 16:16:28 阅读更多 →
MySQL学生成绩管理系统数据库设计:需求分析、建表、视图与存储过程完整方案

MySQL学生成绩管理系统数据库设计:需求分析、建表、视图与存储过程完整方案

简介:这份资源是北邮研一数据库课程大作业的完整详解文档,面向正在修读数据库系统课程、需要完成课程设计的研究生及高年级本科生。内容围绕学生成绩管理系统展开,覆盖需求分析、数据库设计、ER图绘制、逻辑结构设计与建表程序等完整流程&…

2026/10/17 16:15: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 阅读更多 →