ROS2与Conda环境冲突?详解Python节点ImportError与部署方案
做机器人算法落地的朋友应该都撞上过这么一堵墙模型推理代码在 Conda 环境里跑得好好的一搬到 ROS2 节点里就报ModuleNotFoundError: No module named torch。明明在终端里conda activate my_env之后python -c import torch一点问题没有可同一个终端里ros2 run pkg node就是找不到。这跟代码没关系问题出在 ROS2 节点到底由哪个 Python 解释器拉起、它去哪个目录找第三方包。这篇文章就把这个机制彻底拆开讲清楚 ROS2 节点的执行原理、Conda 环境为何默认被绕开再给出一套从临时调试到正式部署都适用的解决路径。适合正在被 ImportError 折磨的 ROS2 开发者、想把算法模型无缝接入机器人节点的工程师以及刚接触这两套环境的新手。1. 为什么 ROS2 节点默认用不上 Conda 里的依赖1.1 节点其实是一段可执行脚本ROS2 里的 Python 节点不管是ament_python包还是纯rclpy写的构建完之后ros2 run找的不是某个.py直接执行而是 install 目录下一段 Python 可执行脚本。它通常长这样#!/usr/bin/env python3 from 我的包.我的节点模块 import main import sys if __name__ __main__: main()真正干活的代码是你写的 module这个脚本只是入口。关键就在第一行#!/usr/bin/env python3。这段 shebang 的意思是让操作系统去环境变量 PATH 里找python3找到谁就用谁。如果终端没有conda activatePATH 里排最前的基本是/usr/bin那就会用系统的/usr/bin/python3。系统的 Python 只认/usr/lib/python3/dist-packages之类的位置而 Conda 环境里的包都堆在~/miniconda3/envs/my_env/lib/python3.x/site-packages两边互不相识于是 import 报错。反过来如果终端先conda activate了PATH 最前面变成了 Conda 环境的 binenv python3找到的就是 Conda Python节点也就能 import 到 Conda 的包。手动在终端跑没问题通常就是这种状态。问题在于手动跑没问题不代表部署没问题。launch 文件、systemd、远程 SSH、IDE 调试这些场景下环境变量继承规则各不相同。一旦 PATH 里没有 Conda 的 bin节点又会被系统 Python 拉起来于是你在机器人上看到的是一模一样的ModuleNotFoundError。1.2 两套 Python两套包仓库Conda 和系统 Python 本质上是完全独立的两套 Python 解释器加包管理。Conda 环境里的包安装在环境自己的 site-packages系统 Python 完全不知道。反过来系统 apt 装的 python3-numpy 也进不了 Conda。就像两家各有各的货架进 A 超市只能买 A 的货进 B 超市只能买 B 的货。ROS2 apt 装的 Python 绑定包默认放在系统货架上而算法工程师的 numpy、torch、onnxruntime 常常放在 Conda 货架上。你现在需要的是让一个进程能把两边的货都拿到。注意ROS2 的 Python 绑定本身也是一堆包它们并不要求解释器必须是/usr/bin/python3只要 Python 版本对得上Conda Python 完全可以加载系统的 rclpy。所以本质上不是 ROS2 只能用系统 Python而是默认的启动链路把解释器限死成了系统 Python。1.3 为什么不在 Conda 环境里直接 pip 装一套 rclpy很多人第一反应是在 Conda 里pip install rclpy结果装了之后要么 import 崩溃要么节点连不上要么跑起来一堆undefined symbol。原因是 ROS2 的 Python 层只是薄薄一层真正的底层是 rmw 实现和 DDS 通信库它们以二进制扩展的形式链接系统库。pip 装的 rclpy 版本未必对应你系统 ROS2 的 rmw 与 DDS。ROS2 的发行版与 rclpy 版本耦合很强某发行版的 rclpy 在另一个发行版上基本不可能正常工作。所以正确思路不是把 ROS2 装进 Conda而是让 Conda 的包能被运行节点的 Python 解释器看到。方向一旦反了后面全是坑。2. 方案全景四条路线的选型逻辑2.1 四个方向一句话概括解决这个问题一共只有四类手法改 shebang把节点可执行脚本第一行的解释器换成 Conda Python 的绝对路径。launch 层指定解释器用Node的prefix或ExecuteProcess明确告诉系统“用哪个 Python 来拉起节点”。wrapper 脚本在中间包一层 bash激活 Conda 环境后exec python运行节点。sys.path 混用节点继续用系统 Python 解释 ROS2但把 Conda 的 site-packages 动态加进 import 搜索路径。四个方向不是互斥的。我实际项目里通常这样组合本机调试用改 shebang 或ros2 run --prefix项目集成用 wrapper如果只是缺一两个纯 Python 库就 sys.path 插入。选型取决于依赖类型。2.2 先判断你的依赖是什么类型Python 依赖分两类纯 Python 包只有.py文件只要 PYTHONPATH 包含了路径就能 import没有二进制问题。二进制扩展包含.so文件编译时绑定特定 Python 版本 ABI。numpy、scipy 从早期开始就做了稳定 ABI 兼容多数情况下可以混用torch、onnxruntime、open3d 这类重库则有严格的动态库依赖在系统 Python 下从 Conda 路径加载极容易直接崩掉。如果只是纯 Python 的库sys.path 混用最省事。但如果算法栈里有 torch、paddle、open3d 这种东西建议整体切到 Conda Python别在系统 Python 下硬加载。判断方法很简单看一下那个包安装目录底下有没有.so有几个.so基本就能判断风险等级。只要有一个明显依赖外部动态库的就直接放弃 sys.path 混用。2.3 各路线横向对比与选型建议路线侵入性稳定性适用场景改 shebang低只改一个文件中重新 build 会恢复本机临时验证launch prefix / ExecuteProcess中修改 launch高想让节点以 Conda Python 方式正式跑起来wrapper 脚本中多一个脚本高有多个节点、统一环境配置sys.path 混用很低改节点代码依赖包类型只需少量纯 Python 包正式部署里我最常用 wrapper理由很朴素多个节点共享一个环境统一在一个脚本里声明可以在 wrapper 里同时 source ROS2 的 setup.bash 和 Conda activate规避环境变量互相覆盖换机器时只需要改一个路径常量。而且 wrapper 对 launch 完全透明launch 里把 executable 指向 wrapper 即可甚至可以继续用 Node 而不是 ExecuteProcess保留 remap、namespace 等原生能力。改 shebang 只适合自己本机快速试一把。colcon build重新生成入口脚本时会把它打回原形你辛苦改的第一行又变回#!/usr/bin/env python3。这种方案在团队协作里尤其容易出问题别人在你机器上重新 build 一次节点就悄悄退回系统 Python报错时你根本想不到是她改回去的。3. 实操示例从调试到正式部署的三套打法3.1 前置检查先确认节点现在到底用的哪个 Python不理解现状就去改约等于盲修。先做三件事# 1. 看系统里有哪些 python3 which -a python3 # 2. 激活 Conda 后再确认路径 source ~/miniconda3/etc/profile.d/conda.sh conda activate my_robot_env which python3 # 3. 找节点可执行脚本看 shebang ros2 pkg prefix 我的包 find /你的工作空间/install/我的包 -type f -name 我的节点* | head head -1 上面找到的文件这一步会直接告诉你真相。通常你查到的是#!/usr/bin/env python3如果终端已经 activate Conda那env python3是 Conda但如果 launch 里 PATH 不同结论就不一样。我建议在不同环境下分别跑一遍head -1再从 launch 里实际打印一下节点的进程用ps aux | grep python看命令行确认最终解释器是谁。还有个更快的验证在当前终端分别跑python3 -c import numpy和ros2 run 我的包 我的节点哪个报错哪个没报错一对比就知道问题出在解释器还是环境变量。3.2 快速验证用 ros2 run 的 --prefix 临时指定解释器ros2 run有一个--prefix参数可以在实际命令前拼一段前缀。用它就能在当前终端不改任何文件的情况下验证source /opt/ros/{发行版}/setup.bash source install/setup.bash conda activate my_robot_env ros2 run 我的包 我的节点 --prefix /home/用户名/miniconda3/envs/my_robot_env/bin/python命令实际变成/home/用户名/miniconda3/envs/my_robot_env/bin/python /workspace/install/我的包/lib/我的包/我的节点运行时解释器就是 Conda Python。前面 source 过 ROS2 的 setup.bashPYTHONPATH和AMENT_PREFIX_PATH还在Conda Python 会 import 到系统 ROS2 的 rclpy这就是我们要的组合。注意--prefix是加在可执行命令最前面的它不等于把prefix拼成参数再传。如果只跑ros2 run 我的包 我的节点 --prefix python3实际执行是python3 可执行脚本这里的 python3 仍然是当前 PATH 里的那个所以必须用绝对路径别偷懒。这个技巧只适用于快速验证因为每个节点每次启动都要手写前缀没法工程化。但它能让你在 30 秒内确认“换解释器是否真的能解决问题”避免大动干戈改造之后发现还有别的坑。3.3 正式集成wrapper 脚本 launchwrapper 是最终方案里我最常用的一种。给一个可以直接抄的模板#!/bin/bash # 节点包装脚本my_node_conda # 用法直接当 executable 用也可被 launch 的 Node() 引用 # 固定 Conda 环境路径换机器只改这里 CONDA_BASE/home/用户名/miniconda3 ENV_NAMEmy_robot_env # 非交互式 shell 下 conda 函数不可用必须先 source source $CONDA_BASE/etc/profile.d/conda.sh conda activate $ENV_NAME # source ROS2 环境确保消息包路径和 rclpy 都在 source /opt/ros/{发行版}/setup.bash source /home/用户名/ros2_ws/install/setup.bash # 执行真正的节点可执行脚本把 launch 传来的参数全部透传 exec python3 /home/用户名/ros2_ws/install/我的包/lib/我的包/我的节点 $几个要点都是踩过坑才明白的第一source ~/miniconda3/etc/profile.d/conda.sh而不是在脚本里直接conda activate。因为 conda 的 activate 本质上是一个 shell 函数默认非交互 shell 加载不到。很多人在 wrapper 里写conda activate env然后报command not found就是这个原因。第二exec替换进程避免多一层 bash 驻留。如果不加 execwrapper 会作为一个父进程停留在进程树里对信号转发、stdout 缓冲都会有诡异影响。加 exec 之后wrapper 进程直接变成 Python 进程干净利落。第三每次colcon build后 install 目录下由 colcon 生成的入口脚本会被重建但 wrapper 是自己放进来的不会被覆盖。把 wrapper 放到源码目录的scripts/在setup.py里用scripts[scripts/my_node_conda]字段安装。对 ament_python 包来说scripts装完后一般落在install/我的包/lib/我的包/下与节点入口在同一层Node 的 executable 可以正常找到。然后是 launch 文件的引用方式from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package我的包, executablemy_node_conda, # wrapper 脚本名 nameconda_node, outputscreen, parameters[{use_sim_time: False}], remappings[(/old_topic, /new_topic)] ) ])这样 remap、namespace、parameter 这些 ROS2 原生能力全都保留因为 Node 只负责启动一个可执行文件剩下的参数全部原样传给 wrapperwrapper 里的$再把它们交给真正的节点入口。在这个体系下节点代码一行都不用改。如果嫌 wrapper 里硬编码的/home/用户名/ros2_ws/install/...路径不优雅可以让 wrapper 自动定位SCRIPT_PATH$(ros2 pkg prefix 我的包)/lib/我的包/我的节点 exec python3 $SCRIPT_PATH $但这个方法要求调用 wrapper 时 ROS2 环境已经被 source否则ros2 pkg prefix会失败。稳定性优先我建议项目里固定 workspace 路径把路径写死并加注释说明换机器要改哪里。简单直接排障也方便。3.4 消息包导入失败的排查关键切换到 Conda Python 之后另一个高频问题跟着出现ModuleNotFoundError: No module named my_interfaces。原因是 ROS2 自定义消息不是靠 pip 装的而是构建后生成在 install 目录通过AMENT_PREFIX_PATH和PYTHONPATH暴露给进程。解决方案是在启动节点前确认这两条环境变量在。检查命令echo $AMENT_PREFIX_PATH echo $PYTHONPATH正常情况下 source 过install/setup.bash后PYTHONPATH里会有/workspace/install/我的消息包/lib/python3.x/site-packagesAMENT_PREFIX_PATH里会有/workspace/install/我的消息包。如果 Conda activate 之后这些变量丢了多半是 shell 启动文件里写了奇怪的覆盖逻辑。最稳的办法就是在 wrapper 里显式 source ROS2 环境就像上一节模板里写的那样先 source 系统 ROS2再 conda activate最后 exec Conda Python消息包路径就万无一失。这个组合的变量顺序我已经反复验证过Conda activate 会把 Conda 的 bin 放到 PATH 最前但它不会清空已经存在的PYTHONPATH和AMENT_PREFIX_PATH。所以只要在 activate 之前把 ROS2 的环境 source 好两者就能共存。如果顺序反了先 activate 再 source ROS2ROS2 的 setup 脚本又把 PATH 里的 Conda bin 挤到后面env python3可能又会切回系统 Python。4. 进阶系统 Python 与 Conda 包共存的安全边界4.1 sys.path 混用什么时候安全如果你只是想把 Conda 环境里的几个纯 Python 库丢给系统 Python 用这段是为你准备的。代码长这样import sys import os sys.path.insert( 0, os.path.expanduser(~/miniconda3/envs/my_robot_env/lib/python3.10/site-packages) ) # 之后就可以 import 业务库了 import numpy as np这段必须放在任何业务 import 之前执行。我通常的写法是先import rclpy再插入 Conda 路径最后 import 业务库。这样能保证系统 rclpy 先被加载避免 Conda 环境里恰好也存在一个 rclpy 时选错。什么时候安全首先系统 Python 和 Conda Python 必须是同一个 minor 版本比如都是 3.10。很多.so扩展至少要求 minor 版本一致。其次所需库是纯 Python 或带稳定 ABInumpy 多数情况 OKscipy 通常 OK但如果你引入的包和 Conda 里编译链绑定很深就可能出问题。判断方法还是那个看安装目录底下有没有大量.so是否依赖外部动态库。4.2 二进制扩展包的 ABI 风险用生活类比Python 解释器相当于插座系统 Python 是一个国标插座Conda Python 是另一个规格类似的插座但许多重型.so扩展是按照具体插座型号生产的。Python 3.10 的.so不能给 Python 3.8 用硬插会烧。以 torch 为例它的.so文件里写死了对 CUDA 运行时和一堆 libtorch 动态库的路径引用。你从系统 Python 手动加一个 Conda site-packages 路径只能让 Python 找到 torch 的入口文件但 torch 内部去找自己的“零件仓库”时依然按 Conda 里的绝对路径找。大多数情况下这能跑但一旦系统 Python 自己先加载了一个不同版本的底层库比如 OpenBLAS、libgomp就会在 import 时直接段错误。实机上出现过不止一次最后查下来全是系统 Python 混加载 Conda 二进制包导致的。所以我给团队的硬规矩是只要算法栈里出现了 torch、paddle、open3d、onnxruntime 这四样中的任何一样就不许用 sys.path 混用必须整体切到 Conda Python 启动节点。4.3 关于“整体搬到 Conda 里跑 ROS2”的看法技术上 Conda 官方渠道有一套 ROS2 相关的包可以把 ROS2 完整装进 Conda 环境形成“纯 Conda ROS2”。但我个人不建议在项目里这么干。第一版本更新滞后。ROS2 发行版迭代快Conda 渠道的 ROS2 包跟进慢等它更新到目标版本时系统 apt 渠道可能已经稳定跑几个月了。第二底层 DDS 和 rmw 与系统硬件驱动、网卡配置关联密切在 Conda 环境里出问题更难排查。第三团队其他人大概率还是用 apt 的 ROS2两套环境并存会导致构建产物不通用、launch 文件里的路径千奇百怪。正确的定位是系统 ROS2 是底座Conda 只是给 Python 依赖用的软件包仓库两者通过上面讲的 wrapper 或 launch 前缀对接。这样系统层保持稳定算法层保持灵活各取所长。5. 常见问题与避坑实录5.1 高频报错与对应解法报错信息原因处理方法ModuleNotFoundError: No module named torch节点用系统 Python 执行找不到 Conda 包用 wrapper/prefix 切换到 Conda Python或 sys.path 插入ModuleNotFoundError: No module named my_interfacesPYTHONPATH 里没有消息包 install 路径source install/setup.bashwrapper 里显式 sourceSegmentation fault (core dumped)系统 Python 加载了 Conda 的二进制包或同时加载两个 rclpy统一解释器避免 Conda Python 下 import 系统 rclpy 与 Conda rclpy 并存undefined symbol: ...rclpy/rmw 版本不匹配在 Conda 环境里卸载 pip 的 rclpy只用系统 rclpyNo module named rclpy当前 shell 没 source ROS2 setup.bashsource /opt/ros/发行版/setup.bash 后再跑ros2: command not foundConda activate 或 shell 环境导致 /opt/ros 不在 PATH先 source ROS2 setup.bash再 conda activate还有一个很容易阴人的问题就是双 rclpy。如果 Conda 环境里之前 pip 安装过 rclpy而节点用 Conda Python 启动Python 会优先加载 Conda 的 rclpy而不是系统的。同一个进程里带着两个不同来源的 rclpy 和 rmw 实现轻则日志打印混乱重则启动时直接卡死。检查方法很简单conda activate my_robot_env python3 -c import rclpy; print(rclpy.__file__)看到输出路径在~/miniconda3里面就要警惕了。解决方式是pip uninstall rclpy或者保证 PYTHONPATH 里系统 ROS2 的路径排在 Conda 前面。最省心的做法就是 wrapper 模板里的顺序先 source 系统 ROS2再 activate Conda这样rclpy走系统其他业务库走 Conda。5.2 三条独家实操经验第一条wrapper 里 ROS2 和 Conda 的 source 顺序不能反。我见过很多同事直接复制网上教程把conda activate写在source install/setup.bash前面结果节点跑起来用的还是系统 Python。我的固定写法是先/opt/ros/{发行版}/setup.bash再install/setup.bash最后conda activate。这样 Conda 的 bin 会放在 PATH 最前但PYTHONPATH与AMENT_PREFIX_PATH已经由 ROS2 设置好。注意不要在 Conda activate 之后再 source ROS2因为那样 Conda 的 bin 会被 ROS2 的 setup 脚本挤回后面env python3又切回系统 Python。第二条每个项目给 Conda 环境单独命名别用 base。base 里如果混入一堆历史包Python 版本可能被改下次 launch 的 wrapper 就会莫名失败。建议conda create -n robot_env python3.10需要什么装什么。Conda 的包管理很方便但也很容易被当作“大杂烩仓库”时间一长环境就烂了。项目管理上建议在代码库里放一个environment.yml固定 Python 版本和关键依赖版本新同事拉下来直接建环境。第三条别手痒去改/usr/bin/python3的软链。很多系统工具依赖它改坏之后系统里一堆 Python 脚本会运行异常你会发现连 apt 都开始叫。真要全局默认可以把~/miniconda3/envs/robot_env/bin放到.bashrc的 PATH 最前面但那也会影响所有终端行为可能破坏 IDE 和其他工具。养成分环境管理的习惯比什么都强。说到日志ros2 run加--prefix验证时如果节点没输出别急着怀疑代码。先用ps aux | grep python确认进程活着再用ros2 topic list看话题有没有注册。如果话题有说明节点正常只是输出没刷出来。Conda run 的缓冲问题也会造成这种假象我之前用conda run -n env python node.py启动节点日志全卡在缓冲区等进程退出才一次性吐出来看起来像节点卡死。后来查资料才知道是 capture output 引发的缓冲问题所以正式方案里我全都改成exec python3彻底绕开conda run。如果你们团队也被 ROS2 与 Conda 两套 Python 环境折磨过希望这篇能帮你们少走我当初的弯路。我自己最后留下的就是“系统 ROS2 专用 Conda 环境”的组合算法入口全部走 wrapper包里源码不写任何环境相关路径只有 wrapper 文件顶部那两行可见的配置。跑过几轮实机这个方案稳也干净。换机器部署时改两行路径重新chmod x一下机器就能跑。

相关新闻

加密性能优化实战:从AES到RSA的选型与压测排错指南

加密性能优化实战:从AES到RSA的选型与压测排错指南

1. 加密性能优化,为什么值得专门开一个专题很多人看到“性能优化”四个字,第一反应是缓存、连接池、SQL 索引、异步化,很少有人会第一时间想到加密。但真实业务里,加密这笔开销往往是“看不见的吞金兽”。你加了一个接口鉴权、加了…

2026/10/18 0:56:35 阅读更多 →
Linux中vim基本用法介绍:快速删除1行、删除所有内容、分屏、字符替换、复制粘贴撤销

Linux中vim基本用法介绍:快速删除1行、删除所有内容、分屏、字符替换、复制粘贴撤销

/* 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 0:56:35 阅读更多 →
科大讯飞开源AstronRPA:企业级RPA与AI Agent融合的自动化平台

科大讯飞开源AstronRPA:企业级RPA与AI Agent融合的自动化平台

看了大半年开源项目,最近在折腾自动化的时候发现一个有意思的事:传统 RPA 圈子开始集体往 AI 方向卷,AI Agent 圈子则在拼命补“手脚”能力,两边朝着同一个方向靠拢。科大讯飞开源的 AstronRPA 正好站在这个交叉点上,标…

2026/10/18 0:56:35 阅读更多 →

最新新闻

tiny11builder:1 条命令瘦身 Win11 镜像

tiny11builder:1 条命令瘦身 Win11 镜像

tiny11builder:1 条命令瘦身 Win11 镜像 【免费下载链接】tiny11builder WinUI app for building smaller, customized Windows 11 images. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 如果你的机器上有官方 Windows 11 ISO&#xff0…

2026/10/18 1:32:47 阅读更多 →
光纤通信技术课件精讲:原理、器件到系统链路预算

光纤通信技术课件精讲:原理、器件到系统链路预算

简介:这份PPT课件围绕光纤通信技术展开,适合通信工程、电子信息等专业的学生,以及从事光传输系统运维与设计的工程技术人员使用。内容系统覆盖光纤通信概述、光纤传输原理与特性、光发送机与光接收机、光纤通信系统组成及光纤通信新技术等章节…

2026/10/18 1:32:47 阅读更多 →
室内视觉导航开发工具VNA-Kit:从二维码定位到AR箭头引导的完整实践

室内视觉导航开发工具VNA-Kit:从二维码定位到AR箭头引导的完整实践

/* 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 1:32:47 阅读更多 →
QtScrcpy 按键映射完全指南:5 种映射类型逐字段拆解,3 步配好你自己的 KeyMap 脚本

QtScrcpy 按键映射完全指南:5 种映射类型逐字段拆解,3 步配好你自己的 KeyMap 脚本

QtScrcpy 按键映射完全指南:5 种映射类型逐字段拆解,3 步配好你自己的 KeyMap 脚本 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy 是一款 Android…

2026/10/18 1:32:47 阅读更多 →
浏览器里跑复古游戏:EmulatorJS 3 分钟挑对版本

浏览器里跑复古游戏:EmulatorJS 3 分钟挑对版本

浏览器里跑复古游戏:EmulatorJS 3 分钟挑对版本 【免费下载链接】EmulatorJS A web-based frontend for RetroArch 项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS EmulatorJS 是浏览器里玩复古游戏最完整的选择。它把 RetroArch 包进网页&am…

2026/10/18 1:32:47 阅读更多 →
InternVL2_5-78B-MPO是什么?开源多模态大模型MPO系列7分钟入门完整指南

InternVL2_5-78B-MPO是什么?开源多模态大模型MPO系列7分钟入门完整指南

【免费下载链接】InternVL2_5-78B-MPO 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL2_5-78B-MPO 点击查看 免费下载 InternVL2_5-78B-MPO 是 OpenGVLab 推出的开源多模态大模型(MLLM),基于 InternVL2.5 并引入 MPO&…

2026/10/18 1:31:47 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →