最新资讯

  • ubuntu+ros新手笔记(三):21讲没讲到的MoveIt2

ubuntu+ros新手笔记(三):21讲没讲到的MoveIt2

2025-04-29 13:37:22 1 阅读

系统ubuntu22.04
ros2 humble

1 安装MoveIt2

安装参照在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手

  1. 安装

    MoveIt2可以选择自己编译源码安装,或者直接从二进制安装。
    个人建议直接二进制安装,可以省很多事。

    sudo apt install ros-humble-moveit
    
  2. moveit-setup-assistant

    这是一个配套moveit的配置助手,有了它就可以方便地进行很多初始化的工作。

    sudo apt install ros-humble-moveit-setup-assistant
    

    顺便把别的东西也装了:

    sudo apt install ros-humble-moveit-*
    
  3. 启动moveit_setup_assistant

     ros2 run moveit_setup_assistant moveit_setup_assistant
    

    弹出如下界面表示安装成功!

2 运行并学习MoveIt2的tutorials

参照MoveIt教程

2.1 源码准备

  1. 创建工作空间
    mkdir -p ~/ws_moveit/src
    
  2. 下载教程源码
    cd ~/ws_moveit/src
    git clone -b humble https://github.com/moveit/moveit2_tutorials
    
  3. 下载剩余源码
    vcs import --recursive < moveit2_tutorials/moveit2_tutorials.repos
    
    出现红色字表示拉取失败,我重复到第3次才拉取成功。。。拉取成功是这样的:
    在tutorials同一层文件夹多出了刚刚拉取成功的文件夹:

2.2 开始编译–好多错 @_@

安装colcon mixin,不然编译报错

sudo apt install python3-colcon-common-extensions
sudo apt install python3-colcon-mixin
colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default

开始编译:

cd ~/ws_moveit
colcon build --mixin release

报错了。。。。

2.2.1. No module named ‘catkin_pkg’ (已解决)

ModuleNotFoundError: No module named 'catkin_pkg'

奇怪!pip list 明明有catkin_pkg

这是python环境的原因,有catkin_pkg的是系统自带的python环境,但是不知道为什么colcon build自动用的是anaconda的base环境,而base环境里没有catkin_pkg,所以报错了。。。

在base环境中安装

conda activate base
pip install catkin_pkg

或者:为 ROS 2 强制指定 Python 解释器
如果需要同时使用 Anaconda 和 ROS 2,可以为 ROS 2 工具链强制指定 Python 解释器路径。
在运行 colcon build 前,设置以下环境变量:

export PYTHON_EXECUTABLE=/usr/bin/python3

再次

colcon build --mixin release

2.2.2. No module named ‘em’(错的,对的在2.2.3)

 ModuleNotFoundError: No module named 'em'


安装em

pip install em

再次

colcon build --mixin release

2.2.3. module ‘em’ has no attribute ‘Interpreter’(已解决)

AttributeError: module 'em' has no attribute 'Interpreter'
附带另一个错
AttributeError: 'NoneType' object has no attribute 'shutdown'

嘻嘻,2.2.2 错了

应该是

pip uninstall em
pip uninstall empy
pip install empy==3.3.4

2.2.4 No module named ‘lark’(已解决)

ModuleNotFoundError: No module named 'lark'


安装

pip install lark

多个python环境共存,容易分不清是在哪个环境里,所以我把anaconda卸载了

2.2.5 error: no matching function for call to ‘hardware_interface::(已解决)

终于不是缺包的错了!

[ 87%] Built target test_crc_utils
[ 87%] Built target test_data_utils
/home/xj/ws_moveit/src/ros2_robotiq_gripper/robotiq_driver/tests/test_robotiq_gripper_hardware_interface.cpp: In member function ‘virtual void robotiq_driver::test::TestRobotiqGripperHardwareInterface_load_urdf_Test::TestBody():
/home/xj/ws_moveit/src/ros2_robotiq_gripper/robotiq_driver/tests/test_robotiq_gripper_hardware_interface.cpp:79:114: error: no matching function for call to ‘hardware_interface::ResourceManager::ResourceManager(std::string&, rclcpp::node_interfaces::NodeClockInterface::SharedPtr, rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr)79 |   hardware_interface::ResourceManager rm(urdf, node.get_node_clock_interface(), node.get_node_logging_interface());
      |                                                                                                                  ^
In file included from /home/xj/ws_moveit/src/ros2_robotiq_gripper/robotiq_driver/tests/test_robotiq_gripper_hardware_interface.cpp:31:
/opt/ros/humble/include/hardware_interface/resource_manager.hpp:66:12: note: candidate: ‘hardware_interface::ResourceManager::ResourceManager(const string&, bool, bool)66 |   explicit ResourceManager(
      |            ^~~~~~~~~~~~~~~
/opt/ros/humble/include/hardware_interface/resource_manager.hpp:67:36: note:   no known conversion for argument 2 from ‘rclcpp::node_interfaces::NodeClockInterface::SharedPtr’ {aka ‘std::shared_ptr<rclcpp::node_interfaces::NodeClockInterface>} to ‘bool’
   67 |     const std::string & urdf, bool validate_interfaces = true, bool activate_all = false);
      |                               ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/ros/humble/include/hardware_interface/resource_manager.hpp:49:3: note: candidate: ‘hardware_interface::ResourceManager::ResourceManager()49 |   ResourceManager();
      |   ^~~~~~~~~~~~~~~
/opt/ros/humble/include/hardware_interface/resource_manager.hpp:49:3: note:   candidate expects 0 arguments, 3 provided

目前这个错我还看不懂,请教一下chatgpt:

这个错误是因为 hardware_interface::ResourceManager 的构造函数在 ROS 2 Humble
版本中发生了变化。在你的代码中,调用的 ResourceManager 构造函数与当前 ROS 2 Humble 提供的 API 不匹配。

问题原因
根据 Humble 版本的 hardware_interface::ResourceManager,其构造函数定义如下:

explicit ResourceManager(
const std::string & urdf,
bool validate_interfaces = true,
bool activate_all = false);

参数变化:不再接受 rclcpp::node_interfaces::NodeClockInterface::SharedPtrrclcpp::node_interfaces::NodeLoggingInterface::SharedPtr
解决方法:更新代码,调用当前的 ResourceManager 构造函数签名。
解决方案
你需要修改 test_robotiq_gripper_hardware_interface.cpp 文件的第 79 行,将错误的参数调整为符合 Humble API。

  • 原始代码:
    hardware_interface::ResourceManager rm(
    urdf,
    node.get_node_clock_interface(),
    node.get_node_logging_interface());
    
  • 修改后的代码:
    根据 Humble 版本的构造函数,去掉多余的参数,只传递 urdf 字符串:
    hardware_interface::ResourceManager rm(urdf);
    

完整解释
validate_interfacesactivate_all 的默认值分别是 truefalse。因此,除非你有特殊需求,否则直接传入 urdf 字符串即可。
如果需要自定义 validate_interfacesactivate_all ,可以显式传入:

hardware_interface::ResourceManager rm(urdf, true, false);

验证修改
保存修改后的文件。
重新编译项目:

总结
原因:ROS 2 Humble 中 hardware_interface::ResourceManager 的 API 已更改。
解决:调整构造函数调用,移除多余的参数,符合新的函数签名。

2.2.6 ImportError: cannot import name ‘soft_unicode’ from ‘markupsafe’

ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.10/dist-packages/markupsafe/__init__.py)


这个错误是由于 markupsafe 版本不兼容 导致的。在较新的 markupsafe 版本(如 2.1.0 及以上)中,soft_unicode 已被移除,而某些旧版本的 jinja2 依赖于它。
解决方案

  1. 降级 markupsafe 版本(我降级的这个)
    将 markupsafe 降级到兼容的版本(如 2.0.1):

    pip install 'markupsafe==2.0.1' --user
    
  2. 升级 jinja2 版本
    如果你的项目依赖较新版本的 markupsafe,可以通过升级 jinja2 来解决兼容性问题。

    pip install --upgrade jinja2 --user
    

    jinja2 的新版本(如 3.1.0 及以上)已经去除了对 soft_unicode 的依赖。
    3. 检查 Python 包版本
    确保你的环境中 jinja2 和 markupsafe 版本正确。使用以下命令查看当前版本:

    pip show jinja2 markupsafe
    

    我的输出:

    Name: Jinja2
    Version: 2.10.3
    
    Name: MarkupSafe
    Version: 3.0.2
    

总结
降级 markupsafe 到 2.0.1。(我降级的这个)
升级 jinja2 到最新版本(推荐)。
确保正确的 Python 包被加载,避免多环境冲突。

2.2.7 编译成功辣!


然后source一下,

source ~/ws_moveit/install/setup.bash

或者添加路径到.bashrc

echo 'source ~/ws_moveit/install/setup.bash' >> ~/.bashrc

3. 导入urdf文件,控制机器人

由于目前还没有找到专用于MoveIt2的视频教程,先参照这个教程:4.ROS机械臂开发中的主角MoveIt!

没有错误略过,有错误记录解决方案~~

3.1 在Solidworks中配置并导出机器人的urdf文件

urdf的配置方法与视频教程3.如何从零创建一个机器人模型 完全一致。
用到的小工具:sw_urdf_exporter

注意用这个小工具的坐标系是自动生成的,由于坐标系错了会导致机器人的关节轴也出错,所以除了为每个joint配置旋转轴之外,还要定义轴对应的坐标系,这里要注意:(1)基座坐标系默认 Origin_global;(2)为了与机器人理论研究保持一致,关节坐标系的z轴必须与旋转轴平行,如果已经确定了运动学求解模型,最好z轴方向也要与求解模型里的z轴方向一致,这样方便后面关节角度–末端位姿的对应。 也可以在配置完后,导出文件前检查坐标系和旋转轴,然后再导出文件,这样修改也是有效的。

sw_urdf_exporter导出的文件夹是用于 ROS1 系统的,他的display.launch文件还不能用于ROS 2,因此要按照ROS 2的格式修改成display.launch.py文件。修改过程见下一节:

3.2 在RViz2中可视化机械臂(未完待续。。。)

在Rviz2中正常启动。

3.3 在MoveIt2中对机械臂进行运动控制

3.3.1 plan&execute成功

类似于Moveit1 教程的配置方法不再适用于ROS2,不想踩雷请严格按照鱼香ROS的 动手学Moveit2|使用配置助手创建自己机械臂的功能包 + 动手学Moveit2 | 运行配置好的机械臂功能demo 操作。

我按照上述教程操作后依然报了两个小错误,都是出现在同一个文件里:
就是在/home/xj/ws_ok/src/ok3_moveit_config/config/joint_limits.yaml这里,必须要把has_velocity_limitshas_acceleration_limits都设置为true,且max_velocity和max_acceleration的值设置如下:

joint_limits:
  Joint_1:
    has_velocity_limits: true
    max_velocity: 2.3
    has_acceleration_limits: true
    max_acceleration: 0.1

1. 报错:Unable to parse SRDF

如果max_acceleration: 1 或者 max_acceleration: 1 .0或者max_velocity: 3

joint_limits:
  Joint_1:
    has_velocity_limits: true
    max_velocity: 3
    has_acceleration_limits: true
    max_acceleration: 1

会报错:

[rviz2-3] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occurred with plugin factory for class rviz_default_plugins::displays::InteractiveMarkerDisplay. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
[rviz2-3]          at line 253 in /opt/ros/humble/include/class_loader/class_loader/class_loader_core.hpp
[rviz2-3] [ERROR] [1734678557.975532421] [moveit_998031724.moveit.ros.motion_planning_frame]: Action server: /recognize_objects not available
[rviz2-3] [INFO] [1734678558.032235496] [moveit_998031724.moveit.ros.motion_planning_frame]: MoveGroup namespace changed: / -> . Reloading params.
[rviz2-3] [ERROR] [1734678568.149085150] [rviz]: Could not find parameter robot_description_semantic and did not receive robot_description_semantic via std_msgs::msg::String subscription within 10.000000 seconds.
[rviz2-3] Error:   Could not parse the SRDF XML File. Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=13 (0xd) Line number=0
[rviz2-3]          at line 732 in ./src/model.cpp
[rviz2-3] [ERROR] [1734678568.162749863] [moveit_998031724.moveit.ros.rdf_loader]: Unable to parse SRDF
[rviz2-3] [ERROR] [1734678568.187814200] [moveit_998031724.moveit.ros.planning_scene_monitor]: Robot model not loaded

而且RViz无法导入机械臂模型

2. 报错:No acceleration limit was defined for joint Joint_1!

如果has_acceleration_limits 或者 has_velocity_limits 设置为 false,如下

joint_limits:
  Joint_1:
    has_velocity_limits: true
    max_velocity: 2.3
    has_acceleration_limits: false
    max_acceleration: 0.1

会报错:

[move_group-2] [ERROR] [1734678853.623106632] [move_group.moveit.moveit.core.time_optimal_trajectory_generation]: No acceleration limit was defined for joint Joint_1! You have to define acceleration limits in the URDF or joint_limits.yaml
[move_group-2] [ERROR] [1734678853.623120629] [move_group.moveit.moveit.ros.add_time_optimal_parameterization]: Response adapter 'AddTimeOptimalParameterization' failed to generate a trajectory.
[move_group-2] [ERROR] [1734678853.623146872] [move_group]: PlanningResponseAdapter 'AddTimeOptimalParameterization' failed with error code FAILURE
[move_group-2] [ERROR] [1734678853.623161388] [move_group.moveit.moveit.ros.move_group.move_action]: Generating a plan with planning pipeline failed.
[move_group-2] [INFO] [1734678853.623209470] [move_group.moveit.moveit.ros.move_group.move_action]: FAILURE
[rviz2-3] [INFO] [1734678853.623573204] [moveit_2530242924.moveit.ros.move_group_interface]: Planning request aborted
[rviz2-3] [ERROR] [1734678853.623784226] [moveit_2530242924.moveit.ros.move_group_interface]: MoveGroupInterface::plan() failed or timeout reached

RViz能够导入机械臂模型,但是plan&execute failed了。如下:

3.3.2 plan&execute失败:不按上面教程操作报错了

一定要按照教程操作!!
一定要按照教程操作!!
一定要按照教程操作!!

刚开始以为moveit2 setup assistant和版本1的一样,结果报了很罕见的错。。。
哪里都找不到解决方案,浪费了我一天的时间。。。。

按照moveit1的setup assistant配置,就直接跳过了moveit2的 动手学Moveit2|使用配置助手创建自己机械臂的功能包 中的 3.6 配置ros_control URDF Modiificatoins3.7 ROS 2 COntrollers3.8 Moveit 控制器,结果plan failed,天塌了。。。。

RViz plan failed:

终端打印信息非常多,这里有一行红字:Failed loading controller joint_state_broadcaster最醒目:

这些打印信息大概分三段:

第一段:Failed loading controller joint_state_broadcaster,这个是刚启动,还没有plan&execute的时候报的错,说明是配置除了问题。

[ros2_control_node-4] [ERROR] [1734669356.123441962] [controller_manager]: The 'type' param was not defined for 'joint_state_broadcaster'.
[spawner-5] [FATAL] [1734669356.162457358] [spawner_joint_state_broadcaster]: Failed loading controller joint_state_broadcaster
[ERROR] [spawner-5]: process has died [pid 73897, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_state_broadcaster --ros-args'].

第二段:Failed to fetch current robot state.

[move_group-2] [INFO] [1734669368.456217221] [move_group.moveit.moveit.ros.current_state_monitor]: Didn't receive robot state (joint angles) with recent timestamp within 1.000000 seconds. Requested time 1734669367.456026, but latest received state has time 0.000000.
[move_group-2] Check clock synchronization if your are running ROS across multiple machines!
[move_group-2] [WARN] [1734669368.456343615] [move_group.moveit.moveit.ros.planning_scene_monitor]: Failed to fetch current robot state.
[move_group-2] [INFO] [1734669368.456489498] [move_group.moveit.moveit.ros.move_group.move_action]: Planning request received for MoveGroup action. Forwarding to planning pipeline.

第三段:Generating a plan with planning pipeline failed.

[move_group-2] [ERROR] [1734669368.474156127] [move_group.moveit.moveit.core.time_optimal_trajectory_generation]: No velocity limit was defined for joint joint1! You have to define velocity limits in the URDF or joint_limits.yaml
[move_group-2] [ERROR] [1734669368.474166641] [move_group.moveit.moveit.ros.add_time_optimal_parameterization]: Response adapter 'AddTimeOptimalParameterization' failed to generate a trajectory.
[move_group-2] [ERROR] [1734669368.474184827] [move_group]: PlanningResponseAdapter 'AddTimeOptimalParameterization' failed with error code FAILURE
[move_group-2] [ERROR] [1734669368.474195083] [move_group.moveit.moveit.ros.move_group.move_action]: Generating a plan with planning pipeline failed.
[move_group-2] [INFO] [1734669368.474232312] [move_group.moveit.moveit.ros.move_group.move_action]: FAILURE
[rviz2-3] [INFO] [1734669368.474520536] [moveit_165564864.moveit.ros.move_group_interface]: Planning request aborted

分析:Failed loading controller joint_state_broadcaster,这个是刚启动,还没有plan&execute的时候报的错,说明是配置出了问题。joint_state_broadcaster 是一个 ros2 controller,作为一个节点用于发布关节状态信息,没有这个,其他节点无法获取机械臂的当前关节角度,因此导致了plan&execute时报错Failed to fetch current robot state.(获取当前机器人状态失败)


3.3.3 终端话题消息对比(失败版和成功版)

在一个终端输入ros2 launch ok3_moveit_config demo.launch.py,然后在另一个终端输入以下ros2命令:

ros2 topic list //打印话题列表
ros2 topic info /joint_states //打印话题相关的信息
ros2 topic echo /joint_states //打印关节状态

失败(左图)和成功(右图)的话题和消息对比:

3.4

本文地址:https://www.vps345.com/5561.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge python MCP ssh 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 deepseek Ollama 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu harmonyos 华为 开发语言 typescript 计算机网络 ubuntu 数据库 centos oracle 关系型 安全 分布式 科技 ai java 人工智能 个人开发 udp unity ssl ollama llm php android Dell R750XS pycharm ide pytorch tcp/ip fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 深度学习 YOLO 目标检测 计算机视觉 adb nginx 监控 自动化运维 rust http django flask web3.py 笔记 C 环境变量 进程地址空间 numpy macos Hyper-V WinRM TrustedHosts github 创意 社区 flutter RTSP xop RTP RTSPServer 推流 视频 react.js 前端面试题 node.js 持续部署 android studio 交互 后端 websocket zotero WebDAV 同步失败 代理模式 ansible playbook golang IIS .net core Hosting Bundle .NET Framework vs2022 es jvm windows AI编程 vscode 代码调试 ipdb 智能路由器 dell服务器 go asm html c++ c语言 集成学习 集成测试 Docker Compose docker compose docker-compose docker 容器 Qwen2.5-coder 离线部署 串口服务器 oceanbase rc.local 开机自启 systemd 麒麟 机器学习 chatgpt 大模型 llama3 Chatglm 开源大模型 conda kylin 深度优先 图论 并集查找 换根法 树上倍增 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 ESP32 java-ee 自动化 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 nuxt3 vue3 bash 银河麒麟服务器操作系统 系统激活 sql KingBase rabbitmq 蓝耘科技 元生代平台工作流 ComfyUI uni-app intellij-idea YOLOv12 openEuler 银河麒麟 kylin v10 麒麟 v10 spring boot tomcat postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 LDAP mysql 实时音视频 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 HCIE 数通 大模型微调 maven intellij idea 腾讯云 AI 爬虫 数据集 dubbo ffmpeg 音视频 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 jenkins gitee 嵌入式硬件 单片机 温湿度数据上传到服务器 Arduino HTTP pillow 运维开发 json html5 firefox kamailio sip VoIP 统信 国产操作系统 虚拟机安装 .net 博客 架构 kubernetes 学习方法 经验分享 程序人生 gitlab ollama下载加速 spring 多线程服务器 Linux网络编程 springsecurity6 oauth2 授权服务器 token sas DeepSeek-R1 API接口 VMware安装Ubuntu Ubuntu安装k8s k8s mysql离线安装 ubuntu22.04 mysql8.0 live555 rtsp rtp visualstudio prometheus WSL win11 无法解析服务器的名称或地址 .netcore vim 开源 Cline web安全 Kali Linux 黑客 渗透测试 信息收集 系统开发 binder 车载系统 framework 源码环境 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 apache Deepseek 搜索引擎 elasticsearch 前端框架 云原生 c# 低代码 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn jmeter 软件测试 媒体 微信公众平台 嵌入式 linux驱动开发 arm开发 kvm 无桌面 命令行 matlab sqlserver YOLOv8 NPU Atlas800 A300I pro asi_bench mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 ecm bpm ddos qt stm32项目 stm32 面试 性能优化 jdk AIGC 物联网 thingsboard postgresql 权限 gpu算力 负载均衡 unix 宝塔面板 部署 服务器主板 AI芯片 信息与通信 git npm H3C iDRAC R720xd 命名管道 客户端与服务端通信 freebsd kafka debian PVE zabbix WebUI DeepSeek V3 DeepSeek AI大模型 linux环境变量 agi 远程桌面 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 云服务 大数据 XFS xfs文件系统损坏 I_O error 消息队列 shell 磁盘监控 iot 华为云 前后端分离 jupyter 华为认证 网络工程师 电脑 硬件架构 系统架构 医疗APP开发 app开发 redis aws jar arm 机器人 视觉检测 FunASR ASR file server http server web server VMware创建虚拟机 ESXi https spring cloud X11 Xming tidb GLIBC 服务器配置 生物信息学 游戏程序 nac 802.1 portal fpga开发 Agent 王者荣耀 Wi-Fi 远程工作 Linux DNS minio Spring Security 1024程序员节 学习 TRAE 企业微信 Linux24.04 deepin Windsurf 远程连接 rdp 实验 云电竞 云电脑 todesk svn 职场和发展 交换机 硬件 设备 GPU PCI-Express jetty undertow word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 yum ISO镜像作为本地源 ceph Dify Erlang OTP gen_server 热代码交换 事务语义 MNN Qwen ip ui 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 ci/cd 音乐服务器 Navidrome 音流 ping++ 智能手机 NAS Termux Samba eureka SSH gradle ruoyi pip 银河麒麟桌面操作系统 Kylin OS 国产化 DeepSeek行业应用 Heroku 网站部署 xss camera Arduino 电子信息 计算机外设 mac 软件需求 pppoe radius JAVA IDEA Java hugo microsoft Netty 即时通信 NIO SWAT 配置文件 服务管理 网络共享 gaussdb dify 深度求索 私域 知识库 vue vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 压力测试 测试工具 测试用例 功能测试 wsl2 wsl kind AI写作 AI作画 IIS服务器 IIS性能 日志监控 react next.js 部署next.js QQ 聊天室 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 ocr 命令 AI agent idm 思科模拟器 思科 Cisco 算力 googlecloud TCP服务器 qt项目 qt项目实战 qt教程 muduo firewalld 小程序 微服务 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 其他 selete 高级IO r语言 数据挖掘 数据可视化 数据分析 报错 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 根服务器 clickhouse WSL2 社交电子 监控k8s集群 集群内prometheus EMQX MQTT 通信协议 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 微信 微信分享 鸿蒙 Image wxopensdk 状态管理的 UDP 服务器 Arduino RTOS 漏洞 同步 备份 建站 安全威胁分析 阻塞队列 生产者消费者模型 服务器崩坏原因 vscode 1.86 laravel grafana 直流充电桩 充电桩 编辑器 IPMI junit bug Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 豆瓣 追剧助手 迅雷 nas 内存 云服务器 裸金属服务器 弹性裸金属服务器 express p2p unity3d MacMini Mac 迷你主机 mini Apple 宠物 毕业设计 免费学习 宠物领养 宠物平台 ios 网络穿透 Nuxt.js Xterminal excel 技术共享 数据结构 SysBench 基准测试 服务器繁忙 备选 网站 api 调用 示例 AD域 反向代理 致远OA OA服务器 服务器磁盘扩容 mybatis okhttp CORS 跨域 wireshark 显示过滤器 安装 ICMP Wireshark安装 游戏机 dns 程序员 大模型入门 HTTP 服务器控制 ESP32 DeepSeek C语言 vasp安装 边缘计算 智能硬件 HarmonyOS Next AutoDL VR手套 数据手套 动捕手套 动捕数据手套 rpc 计算机 7z 系统安全 华为od sqlite 输入法 MS Materials av1 电视盒子 机顶盒ROM 魔百盒刷机 openssl 密码学 业界资讯 模拟退火算法 3d 数学建模 Dell HPE 联想 浪潮 网络结构图 code-server 内网穿透 mosquitto mongodb 外网访问 端口映射 交叉编译 flink 华为机试 C++ Python 数据库系统 AISphereButler hibernate 课程设计 远程 执行 sshpass 操作 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 大数据平台 Docker Hub docker pull 镜像源 daemon.json 银河麒麟高级服务器 外接硬盘 Kylin rust腐蚀 chrome devtools selenium chromedriver 框架搭建 回显服务器 UDP的API使用 矩阵 armbian u-boot 大模型教程 webrtc remote-ssh 剧本 ukui 麒麟kylinos openeuler minicom 串口调试工具 需求分析 规格说明书 微信小程序 RustDesk自建服务器 rustdesk服务器 docker rustdesk Cursor springboot protobuf 序列化和反序列化 ftp web saltstack 火绒安全 VPS 工业4.0 策略模式 单例模式 virtualenv 恒源云 tcp vscode1.86 1.86版本 ssh远程连接 tcpdump 语法 远程登录 telnet vSphere vCenter 软件定义数据中心 sddc RTMP 应用层 big data opensearch helm 雨云 NPS 飞书 孤岛惊魂4 WebRTC gpt uniapp 网站搭建 serv00 echarts 传统数据库升级 银行 大语言模型 LLMs 单一职责原则 技能大赛 网络编程 聊天服务器 套接字 TCP 客户端 Socket IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 oneapi 系统 黑苹果 虚拟机 VMware pygame 小游戏 五子棋 open webui xml Headless Linux 目标跟踪 OpenVINO 推理应用 软件工程 pdf asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 中间件 iis CPU 主板 电源 网卡 alias unalias 别名 VSCode 移动云 可信计算技术 鲲鹏 FTP 服务器 zookeeper 服务器部署ai模型 重启 排查 系统重启 日志 原因 SSL 域名 rsyslog Anolis nginx安装 环境安装 linux插件下载 micropython esp32 mqtt VMware安装mocOS macOS系统安装 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 自定义客户端 SAS 僵尸世界大战 游戏服务器搭建 银河麒麟操作系统 僵尸进程 半虚拟化 硬件虚拟化 Hypervisor mcu 京东云 驱动开发 硬件工程 嵌入式实习 田俊楠 hive Hive环境搭建 hive3环境 Hive远程模式 v10 软件 centos-root /dev/mapper yum clean all df -h / du -sh Trae IDE AI 原生集成开发环境 Trae AI EasyConnect 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 多进程 ecmascript nextjs reactjs flash-attention 黑客技术 流式接口 URL 本地部署 缓存 架构与原理 pyqt 产品经理 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 Kylin-Server 服务器安装 多个客户端访问 IO多路复用 TCP相关API ux 多线程 SSE open Euler dde 统信UOS LLM Web APP Streamlit hadoop W5500 OLED u8g2 chfs ubuntu 16.04 网工 Linux PID 压测 ECS Open WebUI ssrf 失效的访问控制 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 MI300x openwrt 开发环境 SSL证书 sysctl.conf vm.nr_hugepages adobe elk Ubuntu Server Ubuntu 22.04.5 xrdp 飞牛NAS 飞牛OS MacBook Pro string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 Ubuntu 24.04.1 轻量级服务器 NFS redhat c 群晖 文件分享 自动化测试 性能测试 prompt easyui langchain odoo 服务器动作 Server action 雨云服务器 Reactor 设计模式 vmware 卡死 能力提升 面试宝典 技术 IT信息化 崖山数据库 YashanDB 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 直播推流 cpu 实时 使用 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 毕设 midjourney 相差8小时 UTC 时间 netty 远程控制 远程看看 远程协助 远程过程调用 Windows环境 北亚数据恢复 oracle数据恢复 risc-v cnn GoogLeNet 佛山戴尔服务器维修 佛山三水服务器维修 ipython 三级等保 服务器审计日志备份 FTP服务器 XCC Lenovo gitea embedding 干货分享 黑客工具 密码爆破 bootstrap 进程信号 软考 list css skynet 联想开天P90Z装win10 Invalid Host allowedHosts 安全架构 5G 3GPP 卫星通信 宕机切换 服务器宕机 文件系统 路径解析 LORA NLP bonding 链路聚合 执法记录仪 智能安全帽 smarteye tailscale derp derper 中转 线性代数 电商平台 向日葵 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 Unity Dedicated Server Host Client 无头主机 MacOS录屏软件 cursor MCP server C/S LLM windows日志 transformer Minecraft DOIT 四博智联 Google pay Apple pay CH340 串口驱动 CH341 uart 485 RAID RAID技术 磁盘 存储 safari 环境配置 uv 自动化任务管理 历史版本 下载 Claude eNSP 网络规划 VLAN 企业网络 RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 glibc devops Kali 常用命令 文本命令 目录命令 程序 编程 性能分析 idea k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 实时互动 bcompare Beyond Compare log4j 模拟器 教程 qemu libvirt nvidia wps 安卓 Unity插件 iventoy VmWare OpenEuler 基础环境 ue5 vr OpenSSH can 线程池 无人机 db linux安装配置 个人博客 并查集 leetcode ip命令 新增网卡 新增IP 启动网卡 rnn uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 大模型应用 Xinference RAGFlow linux上传下载 健康医疗 互联网医院 用户缓冲区 模拟实现 IPv4 子网掩码 公网IP 私有IP 我的世界 我的世界联机 数码 EMUI 回退 降级 升级 支付 微信支付 开放平台 UDP rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK sqlite3 DevEco Studio Playwright 游戏引擎 seatunnel ssh远程登录 我的世界服务器搭建 fd 文件描述符 kali 共享文件夹 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS perl 带外管理 ssh漏洞 ssh9.9p2 CVE-2025-23419 apt cocoapods xcode iperf3 带宽测试 grub 版本升级 扩容 threejs 3D 中兴光猫 换光猫 网络桥接 自己换光猫 SenseVoice 游戏开发 链表 UOS1070e 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 AI代码编辑器 C# MQTTS 双向认证 emqx GCC Linux环境 yolov8 cuda cudnn anaconda 单元测试 mamba Vmamba yaml Ultralytics 可视化 springcloud 鸿蒙系统 灵办AI 元服务 应用上架 dns是什么 如何设置电脑dns dns应该如何设置 图形化界面 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 换源 国内源 Debian rocketmq rustdesk visual studio code KylinV10 麒麟操作系统 Vmware iBMC UltraISO lua trea jina CrewAI 匿名管道 HiCar CarLife+ CarPlay QT RK3588 分布式训练 rime frp tensorflow trae aarch64 编译安装 HPC perf 流水线 脚本式流水线 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 腾讯云大模型知识引擎 crosstool-ng efficientVIT YOLOv8替换主干网络 TOLOv8 音乐库 飞牛 实用教程 TCP协议 composer Radius deekseek ragflow 树莓派 VNC 产测工具框架 IMX6ULL 管理框架 Linux的基础指令 域名服务 DHCP 符号链接 配置 多层架构 解耦 物联网开发 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 开发 arcgis milvus 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 图像处理 键盘 HAProxy 分析解读 Logstash 日志采集 edge浏览器 linux 命令 sed 命令 SEO MVS 海康威视相机 代理服务器 显示管理器 lightdm gdm 信号 双系统 代理 mariadb yum源切换 更换国内yum源 bot Docker 具身智能 强化学习 ubuntu24.04.1 ros2 moveit 机器人运动 小艺 Pura X Linux find grep proxy模式 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 烟花代码 烟花 元旦 IO模型 n8n 工作流 workflow dity make eclipse Jellyfin 网络攻击模型 fast 实战案例 查询数据库服务IP地址 SQL Server 主从复制 语音识别 程序员创富 Typore SSH 密钥生成 SSH 公钥 私钥 生成 xpath定位元素 ShenTong 迁移指南 昇腾 npu wpf docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 llama.cpp ruby EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 win服务器架设 windows server 抗锯齿 SVN Server tortoise svn IMX317 MIPI H265 VCU 信息可视化 网页设计 自动驾驶 GRUB引导 Linux技巧 keepalived 线程 sonoma 自动更新 .net mvc断点续传 状态模式 做raid 装系统 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 ArcTS 登录 ArcUI GridItem 服务器管理 配置教程 网站管理 arkUI 软链接 硬链接 服务网格 istio webstorm DenseNet 虚拟局域网 AI-native Docker Desktop VS Code CVE-2024-7347 内网服务器 内网代理 内网通信 合成模型 扩散模型 图像生成 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 序列化反序列化 强制清理 强制删除 mac废纸篓 autodl 微信开放平台 微信公众号配置 hexo HarmonyOS OpenHarmony 真机调试 显卡驱动 小智AI服务端 xiaozhi TTS 办公自动化 自动化生成 pdf教程 web3 AD 域管理 gcc g++ g++13 容器技术 信号处理 捆绑 链接 谷歌浏览器 youtube google gmail ubuntu24 vivado24 Ark-TS语言 etcd 数据安全 RBAC 图形渲染 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 金融 docker命令大全 IMM sdkman Windows sequoiaDB minecraft 企业网络规划 华为eNSP less pyautogui k8s集群资源管理 云原生开发 虚拟显示器 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 毕昇JDK cmos prometheus数据采集 prometheus数据模型 prometheus特点 SSH 服务 SSH Server OpenSSH Server 相机 spark HistoryServer Spark YARN jobhistory 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 nfs onlyoffice lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 源码 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 混合开发 JDK regedit 开机启动 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 ros 考研 GIS 遥感 WebGIS 在线office lio-sam SLAM 端口测试 Ubuntu共享文件夹 共享目录 Linux共享文件夹 大大通 第三代半导体 碳化硅 基础入门 大模型面经 大模型学习 cd 目录切换 AnythingLLM AnythingLLM安装 ai工具 java-rocketmq ldap webgl pgpool 蓝桥杯 内网环境 ABAP h.264 CLion Node-Red 编程工具 流编程 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 项目部署到linux服务器 项目部署过程 私有化 outlook curl wget epoll 端口 查看 ss TrueLicense 网卡的名称修改 eth0 ens33 MySql 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors cpp-httplib firewall 本地部署AI大模型 LInux 邮件APP 免费软件 超融合 react native Deepseek-R1 私有化部署 推理模型 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 USB网络共享 移动魔百盒 USB转串口 Cookie 影刀 #影刀RPA# harmonyOS面试题 SRS 流媒体 直播 实习 python3.11 dash 正则表达式 浏览器开发 AI浏览器 开机自启动 rag ragflow 源码启动 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer 环境迁移 ue4 着色器 虚幻 OD机试真题 华为OD机试真题 服务器能耗统计 知识图谱 etl deepseek r1 figma 政务 分布式系统 监控运维 Prometheus Grafana css3 智能音箱 智能家居 sentinel 飞牛nas fnos dba iphone gpt-3 文心一言 OpenManus iftop 网络流量监控 swoole 金仓数据库 2025 征文 数据库平替用金仓 make命令 makefile文件 繁忙 解决办法 替代网站 汇总推荐 AI推理 粘包问题 CDN 免费域名 域名解析 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 wsgiref Web 服务器网关接口 IM即时通讯 剪切板对通 HTML FORMAT 网络用户购物行为分析可视化平台 大数据毕业设计 加解密 Yakit yaklang mq 镜像 bat 阿里云ECS navicat rclone AList webdav fnOS ardunio BLE ROS docker run 数据卷挂载 交互模式 triton 模型分析 服务器时间 openstack Xen 流量运营 本地知识库部署 DeepSeek R1 模型 防火墙 NAT转发 NAT Server P2P HDLC matplotlib QT 5.12.12 QT开发环境 Ubuntu18.04 设置代理 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos Python基础 Python教程 Python技巧 ubuntu20.04 开机黑屏 网络爬虫 c/c++ 串口 多路转接 沙盒 word 嵌入式Linux IPC 信创 信创终端 中科方德 gnu 搭建个人相关服务器 PX4 论文阅读 Linux的权限 版本 大模型推理 渗透 kernel yum换源 网络建设与运维 网络搭建 神州数码 神州数码云平台 云平台 visual studio WebVM 欧标 OCPP DBeaver 数据仓库 kerberos Ubuntu22.04 开发人员主页 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 问题解决 虚幻引擎 nlp 聚类 运维监控 自动化编程 rpa 嵌入式系统开发 风扇控制软件 ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 conda配置 conda镜像源 远程服务 searxng 稳定性 看门狗 大模型部署 ArtTS neo4j 李心怡 热榜 docker部署Python xshell termius iterm2 数据库开发 database CentOS 项目部署 js dock 加速 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 鸿蒙开发 移动开发 MDK 嵌入式开发工具 论文笔记 sublime text hosts 离线部署dify DocFlow seleium 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 代码 对比 工具 meld DiffMerge 推荐算法 HarmonyOS NEXT 原生鸿蒙 宝塔 本地化部署 玩机技巧 软件分享 软件图标 软负载 fstab PPI String Cytoscape CytoHubba 智能电视 存储维护 NetApp存储 EMC存储 deployment daemonset statefulset cronjob AI Agent 字节智能运维 deep learning CentOS Stream 西门子PLC 通讯 钉钉 x64 SIGSEGV xmm0 miniapp 调试 debug 断点 网络API请求调试方法 人工智能生成内容 IO Redis Desktop 拓扑图 Qwen2.5-VL vllm 软件卸载 系统清理 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 Attention