当前位置: 首页 > news >正文

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程


文章目录

    • 前言(Introduction)
    • 搭建开发环境(Setup Development Environment)
    • 在window中安装Unity(Install Unity in window)
    • 创建Docker容器,并安装相关软件(Create Docker containers and install related software)
    • 运行测试(Run test)

前言(Introduction)

在这里插入图片描述

当机器人遇上游戏引擎:用Unity玩转机械臂仿真,妈妈再也不用担心我的Gazebo崩溃了!

想用Gazebo给机器人搞个仿真?恭喜你,即将开启“从入门到放弃”的经典副本——环境配置复杂得像解一道高数题,而构建复杂场景时,Gazebo可能会用“卡顿”和“崩溃”来考验你的耐心。尤其对新手来说,光是搞明白为什么模型突然飞天遁地,就足以让人怀疑人生。

但别慌!这里有个更快乐(且不会让你头秃)的方案——用Unity搭建仿真环境! 没错,就是那个做《原神》和《王者荣耀》的Unity!它不仅能让你像搭积木一样轻松构建场景,还能搞定Gazebo挠破头都难实现的复杂环境(比如让机械臂在火星捡土豆,或者在水下拧瓶盖)。

今天,我们就来点好玩的:用Unity仿真一个机械臂,再通过ROS2和RViz远程操控它! 从此,你可以在Unity里造个虚拟实验室,而ROS2负责当“传话小哥”,让现实和仿真无缝对接。

为什么选Unity?

  • 简单到流泪:拖拖拽拽就能建场景,不用再和URDF文件“打架”。

  • 画质狂魔:想要光影效果?想要真实物理?Unity表示:“就这?”

  • ROS2的好基友:通过ROS-TCP-Connector,Unity和ROS2秒变最佳拍档。

准备好让你的机械臂在Unity里跳个舞了吗?Let’s go!(Gazebo:明明是我先来的……)

When Robots Meet Game Engines: Simulating Robotic Arms with Unity—Because Gazebo Crashes Are So Last Season!

Trying to set up a robot simulation in Gazebo? Congratulations, you’re about to embark on the classic “From Beginner to Burnout” quest—where environment configuration feels like solving advanced calculus, and building complex scenes comes with Gazebo’s signature “lag-and-crash” combo. For beginners, just figuring out why your robot suddenly decided to phase through the floor or launch into orbit is enough to trigger an existential crisis.

But fear not! There’s a far more joyful (and less hair-pulling) alternative—building your simulation in Unity! Yep, the same Unity behind Genshin Impact and Honor of Kings. Not only does it let you assemble scenes like virtual LEGO, but it also handles complex environments that would make Gazebo sweat bullets (think robotic arms picking potatoes on Mars or unscrewing bottles underwater).

Today, we’re doing something fun: simulating a robotic arm in Unity and controlling it remotely via ROS2 and RViz! Now you can build a virtual lab in Unity while ROS2 acts as the middleman, seamlessly bridging simulation and reality.

Why Unity?

  • So easy it hurts—Drag, drop, and build scenes without wrestling with URDF files.

  • Graphics wizardry—Want realistic lighting and physics? Unity scoffs, “Is that all?”

  • ROS2’s best buddy—With ROS-TCP-Connector, Unity and ROS2 become the ultimate dynamic duo.

Ready to make your robotic arm dance in Unity? Let’s go! (Gazebo: “But… I was here first…”)

video:ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

code: https://github.com/laoxue888/DockerRos2UnityArm

参考:

  • docker-ros2-unity-tcp-endpoint
  • Robotics-Nav2-SLAM-Example
  • unity坐赛车游戏,简单三分钟了解一下
  • How to Setup Unity and ROS2 in less than 5 minutes!
  • ros2-for-unity
  • moveit2_yolobb_ws
  • Unity-Robotics-Hub

搭建开发环境(Setup Development Environment)

  • Unity:2022
  • Ubuntu:24.04
  • Ros2:jazzy

在window中安装Unity(Install Unity in window)

先安装Unityhuyb,然后再安装Unity

https://unity.cn/releases

创建Docker容器,并安装相关软件(Create Docker containers and install related software)

❇️创建Docker容器

docker run -it -p 6080:80 -p 10000:10000 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=host.docker.internal:0.0 --gpus=all --name=Ros2UnityArm docker.1ms.run/ubuntu:24.04  /bin/bash

❇️安装相关软件

# 按照鱼香ros一键安装ros2
apt-get update
apt install wget -y
wget http://fishros.com/install -O fishros && bash fishros# 安装远程显示服务程序
apt-get install x11-xserver-utils
apt install libxcb* -y
apt-get install x11-apps -y# 安装moveit
apt install ros-${ROS_DISTRO}-moveit* -y# 安装ros2的控制功能包
sudo apt install ros-${ROS_DISTRO}-controller-manager -y
sudo apt install ros-${ROS_DISTRO}-joint-trajectory-controller -y
sudo apt install ros-${ROS_DISTRO}-joint-state-broadcaster -y
sudo apt install ros-${ROS_DISTRO}-diff-drive-controller -y# 安装其他功能包
# apt install ros-${ROS_DISTRO}-ros-gz -y
apt-get install ros-${ROS_DISTRO}-joint-state-publisher-gui -y
apt install ros-${ROS_DISTRO}-moveit-ros-planning-interface -y
# apt install ros-jazzy-gz-ros2-control 这个很重要 https://github.com/ros-controls/gz_ros2_control
apt install ros-${ROS_DISTRO}-gz-ros2-control -y# 用于调试,可不安装
apt-get install gdb -y

运行测试(Run test)

source install/setup.bash
ros2 launch ros_tcp_endpoint endpoint.launch.py
source install/setup.bash
ros2 run unity_control_example follow_joint_trajectory_monitor
source install/setup.bash
ros2 launch niryo_one_moveit_config demo.launch.py

相关文章:

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

文章目录 前言(Introduction)搭建开发环境(Setup Development Environment)在window中安装Unity(Install Unity in window)创建Docker容器,并安装相关软件(Create Docker containers…...

01_通过调过api文字生成音频示例

第1 第2 第3,测试音色 第4 第5 第6 第7生成api_key 第8代码 import requestsurl "https://api.siliconflow.cn/v1/audio/speech"payload {"input": "在中国传统文化中,谦让被视为一种美德,但过度的让步…...

使用PyTorch实现目标检测边界框转换与可视化

一、引言 在目标检测任务中,边界框(Bounding Box)的坐标表示与转换是核心基础操作。本文将演示如何: 实现边界框的两种表示形式(角点坐标 vs 中心坐标)之间的转换 使用Matplotlib在图像上可视化边界框 验…...

QEMU学习之路(8)— ARM32通过u-boot 启动Linux

QEMU学习之路(8)— ARM32通过u-boot 启动Linux 一、前言 参考文章: Linux内核学习——内核的编译和启动 Linux 内核的编译和模拟执行 Linux内核运行——根文件系统 Linux 内核学习——使用 uboot 加载内核 二、构建Linux内核 1、获取Linu…...

flutter 桌面应用之右键菜单

​在 Flutter 桌面应用开发中,context_menu 和 contextual_menu 是两款常用的右键菜单插件,各有特色。以下是对它们的对比分析:​ 🧩 context_menu 集成方式:​通过 ContextMenuArea 组件包裹目标组件,定义…...

系统设计面试总结:高性能相关:CDN(内容分发网络)、什么是静态资源、负载均衡(Nginx)、canal、主从复制

以下为本人自学回顾使用,请支持javaGuide原版。 1.CDN概述 CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。 你可以将 CDN 看作是服务上一层的特殊缓存服务,分布…...

从红黑树到哈希表:原理对比与典型场景应用解析(分布式以及布隆过滤器)

在数据结构的世界里,红黑树一直以「自平衡二叉查找树」的身份备受赞誉。凭借红黑节点的精妙设计,它能将插入、删除、查找的时间复杂度稳定控制在 ( log ⁡ n ) (\log n) (logn),成为处理有序数据的经典方案。然而,当业务场景对「…...

动手学深度学习:手语视频在VGG模型中的测试

前言 其他所有部分同上一篇AlexNet一样,所以就不再赘诉,直接看VGG搭建部分。 模型 VGG是第一个采取块进行模块化搭建的模型。 def vgg_block(num_convs,in_channels,out_channels):layers[]for _ in range(num_convs):layers.append(nn.Conv2d(in_ch…...

微信小程序实战案例 - 餐馆点餐系统 阶段 4 - 订单列表 状态

✅ 阶段 4 – 订单列表 & 状态 目标 展示用户「我的订单」列表支持状态筛选(全部 / 待处理 / 已完成)支持分页加载和实时刷新使用原生组件编写 ✅ 1. 页面结构:文件结构 pages/orders/├─ index.json├─ index.wxml├─ index.js└─…...

深度学习理论-直观理解 Attention

本文首先介绍 Attention 的原始公式,然后以 Self-Attention 为例,简化后逐步分析 Attention 计算结果表达的含义 Attention Attention 公式如下: A t t e n t i o n s o f t m a x ( Q ⋅ K T d k ) ⋅ V Attention softmax(\frac{Q \cd…...

python中 “with” 关键字的取舍问题

自动管理资源(自动关闭文件) 当你使用 with 打开文件时,文件会在 with 代码块结束后自动关闭,无论是否发生异常。这意味着你不需要显式地调用 f.close() 来关闭文件 示例: with open("words.txt", "r…...

ISIS协议(动态路由协议)

ISIS基础 基本概念 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionL…...

llm开发框架新秀

原文链接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google开源ADK-Agent Development Kit 开源的、代码优先的 Python 工具包,用于构建、评估和部署具有灵活性和控制力的复杂智能体项目仓库:https://github.com/google/adk-python 2.6k项目文档:Age…...

Zookeeper的典型应用场景?

大家好,我是锋哥。今天分享关于【Zookeeper的典型应用场景?】面试题。希望对大家有帮助; Zookeeper的典型应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务,主要用于管理和协调大…...

【C数据结构】 TAILQ双向有尾链表的详解

TAILQ双向有尾链表的详解 常见的链表结构1.SLIST2.STAILQ3.LIST4.TAILQ5.CIRCLEQ 一、TAILQ链表简介二、TAILQ的定义和声明三、TAILQ队列的函数1.链表头的初始化2.获取第一个节点地址3.获取最后一个节点地址4.链表是否为空5.下一个节点地址6.上一个节点地址7.插入头节点8.插入尾…...

redisson的unlock方法

//分布式方式,分布式锁,采用redisson锁 RLock lock redissonClient.getLock(userId.toString());//lock方法会无限重试。getLock底层是hash,大key是userid,小key是线程,value是重入次数 try {//boolean b lock.tryLo…...

ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代

ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代 从日志中可以看到问题出在第一个 ffmpeg 命令执行时: Unrecognized option vbsf.Error splitting the argument list: Option not found这是因为 ffmpeg 命令参…...

设计模式——抽象工厂模式总结

理解了前面的工厂模式后,再理解抽象工厂模式就很容易了。 工厂模式:https://blog.csdn.net/inside802/article/details/147170118?spm1011.2415.3001.10575&sharefrommp_manage_link 抽象工厂模式就是工厂模式的更加抽象化,父类不仅不承…...

JavaScript 定时器

在 JavaScript 中,定时器是实现代码在特定时间间隔执行或延迟执行的重要工具。下面我们将深入探讨定时器的相关知识。 定时器基础 setTimeout() setTimeout() 函数用于在指定的延迟时间后执行一次回调函数。它接受两个参数,第一个参数是要执行的回调函…...

企业经营决策风险

在企业的经营过程中,领导者每天都在面对大量的决策——该扩大生产还是收缩业务?该增设销售渠道还是提升产品质量?但你知道吗,企业最大的成本,不是生产成本,也不是人工成本,而是决策错误的成本&a…...

【云安全】云原生-centos7搭建/安装/部署k8s1.23.6单节点

一、节点基本配置 1、准备操作系统 2、 修改主机名 hostnamectl set-hostname master-1 hostnamectl set-hostname node1 hostnamectl set-hostname node2#验证hostnamectl status 3、修改/etc/hosts cat <<EOF >>/etc/hosts 192.168.255.137 master-1 192.168…...

【已更新完毕】2025泰迪杯数据挖掘竞赛B题数学建模思路代码文章教学:基于穿戴装备的身体活动监测

基于穿戴装备的身体活动监测 摘要 本研究基于加速度计采集的活动数据&#xff0c;旨在分析和统计100名志愿者在不同身体活动类别下的时长分布。通过对加速度数据的处理&#xff0c;活动被划分为睡眠、静态活动、低强度、中等强度和高强度五类&#xff0c;进而计算每个志愿者在…...

力扣每日打卡 1922. 统计好数字的数目 (中等)

力扣 1922. 统计好数字的数目 中等 前言一、题目内容二、解题方法1. 暴力解法&#xff08;会超时&#xff0c;此法不通&#xff09;2. 快速幂运算3. 组合计数的思维逻辑分析组合计数的推导例子分析思维小结论 4.官方题解4.1 方法一&#xff1a;快速幂 三、快速幂运算快速幂运算…...

宝塔Linux面板 - 添加站点建站时没有域名实现 IP 地址访问测试(宝塔面板建站 IP 访问)

前言 使用面板添加站点时&#xff0c;必须要填写一个域名用来指向程序&#xff0c;没有域名怎么办&#xff1f; 答案&#xff1a;域名直接写 【服务器 IP 地址】 操作步骤 如果还没有添加站点&#xff0c;则直接在创建站点的时候&#xff0c;域名那填写服务器地址即可&#…...

【GitHub探索】mcp-go,MCP协议的Golang-SDK

近期大模型Agent应用开发方面&#xff0c;MCP的概念比较流行&#xff0c;基于MCP的ToolServer能力开发也逐渐成为主流趋势。由于笔者工作原因&#xff0c;主力是Go语言&#xff0c;为了调研大模型应用开发&#xff0c;也接触到了mcp-go这套MCP的SDK实现。 对于企业内部而言&am…...

手撕TCP内网穿透及配置树莓派

注意&#xff1a; 本文内容于 2025-04-13 15:09:48 创建&#xff0c;可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容&#xff0c;请访问原文地址&#xff1a;手撕TCP内网穿透及配置树莓派。感谢您的关注与支持&#xff01; 之前入手了树莓派5&#xff0c;…...

人形机器人运动与操作: 控制、规划和学习方面的当前进展与挑战

前言 图 1&#xff1a;执行运动和操作任务的人形机器人&#xff1a;&#xff08;a&#xff09;HRP-4 在适应地形的同时擦拭木板[1]&#xff1b;&#xff08;b-g&#xff09;Digit、Hector[2]、Atlas、H1、Justin[3]和 Apollo 取放物体&#xff1b;&#xff08;h&#xff09;iCu…...

C++ 重构muduo网络库

本项目参考的陈硕老师的思想 1. 基础概念 进程里有 Reactor、Acceptor、Handler 这三个对象 Reactor 对象的作用是监听和分发事件&#xff1b;Acceptor 对象的作用是获取连接&#xff1b;Handler 对象的作用是处理业务&#xff1b; 先说说 阻塞I/O&#xff0c;非阻塞I/O&…...

【计算机网络实践】(十二)大学校园网综合项目设计

本系列包含&#xff1a; &#xff08;一&#xff09;以太网帧分析与网际互联协议报文结构分析 &#xff08;二&#xff09;地址解析协议分析与传输控制协议特性分析 &#xff08;三&#xff09;交换机的基本操作、配置、 虚拟局域网配置和应用 &#xff08;四&#xff09;交…...

通过api程序的方式编辑ps的三种方式

目前只使用了第一种 ps-python-api去操作 还没有尝试其他两种方式对于第一种方式必须要开启ps程序&#xff0c;程序调用修改新增图层和文档时会同步到ps页面&#xff0c;可以直观看到修改结果...

论文阅读笔记——Reactive Diffusion Policy

RDP 论文 通过 AR 提供实时触觉/力反馈&#xff1b;慢速扩散策略&#xff0c;用于预测低频潜在空间中的高层动作分块&#xff1b;快速非对称分词器实现闭环反馈控制。 ACT、 π 0 \pi_0 π0​ 采取了动作分块&#xff0c;在动作分块执行期间处于开环状态&#xff0c;无法及时响…...

MySQL表的增删改查进阶版

Mysql 1、数据库的约束1.1约束类型1.2 NULL约束1.3 UNIQUE&#xff1a;唯一约束1.4 DEFAULT&#xff1a;默认值约束1.5 PRIMARY KEY&#xff1a;主键约束&#xff08;重点&#xff09;1.6 FOREIGN KEY&#xff1a;外键约束&#xff08;重点&#xff09; 2.表的设计2.1一对一2.2…...

【C#】Socket通信的使用

在C#中&#xff0c;Socket通信是一种用于实现网络通信的底层技术。通过Socket&#xff0c;程序可以在网络上与其他设备进行数据交换。以下是如何使用C#中的System.Net.Sockets命名空间来实现Socket通信的详细步骤。 1. Socket通信的基本概念 Socket: 一个Socket是网络通信的端…...

linux以C方式和内核交互监听键盘[香橙派搞机日记]

最近在深入研究我的香橙派&#xff0c;不可避免的遇到了怎么认识和使用Linux内核的问题。 我给自己留了一个简单的任务&#xff1a;使用原生C来监听内核&#xff0c;实现读取键盘的消息。 CSDN上也有其他文章来解决这个问题&#xff0c;不过要么是技术不达标&#xff08;直接和…...

【C++初学】课后作业汇总复习(七) 指针-深浅copy

1、 HugeInt类:构造、、cout Description: 32位整数的计算机可以表示整数的范围近似为&#xff0d;20亿到&#xff0b;20亿。在这个范围内操作一般不会出现问题&#xff0c;但是有的应用程序可能需要使用超出上述范围的整数。C可以满足这个需求&#xff0c;创建功能强大的新的…...

【iOS】UIPageViewController学习

UIPageViewController学习 前言创建一个UIPageViewController最简单的使用 UIPageViewController的方法说明&#xff1a;效果展示 UIPageViewController的协议方法 前言 笔者最近在写项目时想实现一个翻书效果&#xff0c;上网学习到了UIPageViewController今天写本篇博客总结…...

GDB 调试命令详解:高效掌握常用调试技巧

&#x1f41e; GDB 调试命令详解&#xff1a;高效掌握常用调试技巧 GNU Debugger&#xff08;GDB&#xff09;是 Linux 下最强大的 C/C 调试工具。本文将系统梳理 GDB 的常用命令&#xff0c;覆盖运行控制、断点管理、变量查看、线程与进程调试等核心功能&#xff0c;助你快速掌…...

实验二 用递归下降法分析表达式实验

【实验目的】 1.掌握用递归下降分析法进行语法分析的方法。加深对自顶向下语法分析原理的理解。 2.掌握设计、编制并调试自顶向下语法分析程序的思想和方法。 3.本实验是高级语言程序设计、数据结构和编译原理中词法分析、自顶向下语法分析原理等知 识的综合。由于语法分析…...

【随身wifi】青龙面板保姆级教程

0.操作前必看 本教程基于Debian系统&#xff0c;从Docker环境。面板安装&#xff0c;到最后拉取脚本的使用。 可以拉库跑狗东京豆&#xff0c;elm红包等等&#xff0c;也可以跑写自己写的脚本&#xff0c;自行探索 重要的号别搞&#xff0c;容易黑号&#xff0c;黑号自己负责…...

从一到无穷大 #45:InfluxDB MCP Server 构建:从工程实践到价值重构

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 工程实践遇到的问题MCP Host选择开发流程 结果展现可能性展望工作生活带来的变化 MCP…...

app逆向专题五:新快报app数据采集

app逆向专题五:新快报app数据采集 一、抓包寻找数据接口二、编写代码三、完整代码一、抓包寻找数据接口 打开charles,并在手机端打开新快报app,点击“广州”或者“经济”等选项卡,抓包,寻找数据接口,如图所示: 二、编写代码 这里介绍一种简便的代码编写方法,在数据…...

使用 lm-eval 评估模型时报错:TypeError: ‘NoneType’ object is not callable 的解决方案

问题描述 在使用 lm-evaluation-harness 进行多 GPU 模型评估时&#xff0c;使用如下命令&#xff1a; accelerate launch --multi-gpu --num_processes 2 \-m lm_eval --model hf \--model_args pretrained${local_model_path} \--tasks mmlu \--batch_size 8 \--log_sample…...

脉冲耦合神经网络(PCNN):图像处理中的强大工具

文章目录 一、PCNN 的起源与背景二、PCNN 的基本原理(一)模型结构(二)工作方式(三)动态阈值与脉冲特征三、PCNN 在图像处理中的应用(一)图像分割(二)边缘检测(三)纹理分析四、PCNN 的实现与优化环境准备PCNN 类定义图像分割示例在图像处理和计算机视觉领域,神经网…...

【Git】从零开始使用git --- git 的基本使用

哪怕是野火焚烧&#xff0c;哪怕是冰霜覆盖&#xff0c; 依然是志向不改&#xff0c;依然是信念不衰。 --- 《悟空传》--- 从零开始使用git 了解 Gitgit创建本地仓库初步理解git结构版本回退 了解 Git 开发场景中&#xff0c;文档可能会经历若干版本的迭代。假如我们不进行…...

React Hooks 的使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

【NIO番外篇】之组件 Channel

目录 一、什么是NIO Channel&#xff1f;二、常见的Channel组件及其用法1. FileChannel2. SocketChannel3. ServerSocketChannel4. DatagramChannel &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支持一下&a…...

探秘 Ruby 与 JavaScript:动态语言的多面风采

1 语法特性对比&#xff1a;简洁与灵活 1.1 Ruby 的语法优雅 Ruby 的语法设计旨在让代码读起来像自然语言一样流畅。它拥有简洁而富有表现力的语法结构&#xff0c;例如代码块、符号等。 以下是一个使用 Ruby 进行数组操作的简单示例&#xff1a; # 定义一个数组 numbers [1…...

高频面试题(含笔试高频算法整理)基本总结回顾21

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

深入浅出一下Python函数的核心概念与进阶应用

本篇技术博文摘要 &#x1f31f; 本文系统梳理了Python函数的核心知识点&#xff0c;从基础概念到高级特性&#xff0c;构建了完整的函数编程知识体系。内容涵盖&#xff1a;变量作用域的局部与全局划分、函数注释的规范写法、参数传递中值与引用的区别、匿名函数的灵活应用&am…...

【漫话机器学习系列】198.异常值(Outlier)

异常值&#xff08;Outlier&#xff09;全面指南 —— 检测、分析与处理 作者&#xff1a;Chris Albon&#xff08;图源&#xff09; 场景&#xff1a;数据清洗与特征工程必备技能 一、什么是异常值&#xff08;Outlier&#xff09; 定义 异常值&#xff08;Outlier&#xff0…...