AI 3D建模工具: Tripo 3D | Meshy AI

我们正在构建一个统一系统,融合3D LiDAR和ZED2立体相机数据,使用YOLO进行目标检测,使用Open3D进行点云处理。所有内容均通过Pixi管理,使环境在不同系统上可复现。

这些模块化课程共同构成了一个完整的端到端项目。你可以按照循序渐进的路线图学习,也可以根据需要直接跳到特定的传感器逻辑部分。

在融合传感器或运行AI模型之前,我们需要一个坚实的基础。搭建机器人开发环境传统上是开发中最令人沮丧的环节之一——往往会导致"依赖地狱",即一个库的更新会破坏整个系统。

在本课中,我们使用Pixi——一个下一代包管理器。Pixi确保你所需版本的ROS 2PyTorchOpen3D被安装到一个隔离的"气泡"(本地环境)中。这保持了你的主操作系统的整洁,并确保在我的机器上能运行的代码在你的机器上也能运行。

0、学习目标

完成本节后,你将能够:

  • 配置Linux开发环境:ROS 2开发安装必要的底层构建工具和Git
  • 管理多仓库工作空间: 正确地克隆和组织主项目仓库以及如vision_msgs等外部依赖。
  • 使用现代包管理: 学习Pixi工作流,包括环境初始化(pixi install)和激活(pixi shell)。
  • 解析pixi.toml 了解如何在单个配置文件中定义通道、多平台支持和复杂依赖(AI + 机器人)。
  • 验证感知栈: 使用colcon执行完整的工作空间构建,并启动预配置的感知管线,使用ROS 2 bag和RViz验证系统完整性。

1、系统要求

虽然我们构建的环境是跨平台的,但本课程在Ubuntu(22.04或24.04)上进行了官方测试和验证。

首先,你需要在系统上安装基本的开发工具和Git。打开终端并运行:

# Update your package list
sudo apt update

# Install essential build tools and Git
sudo apt install -y build-essential git curl

# Install the LTTng libraries
sudo apt-get install liblttng-ust-dev

关于跨平台支持的说明: 我们使用的配置在技术上支持Windows和macOS(Intel和Apple Silicon)。然而,这些平台通常需要额外的步骤——例如为GUI工具配置X11或在Windows中管理路径长度——这些内容不在本课程范围内。如果你在非Linux系统上尝试时遇到问题,请寻求私人支持。

2、克隆项目仓库

本项目的仓库包含一个ROS 2工作空间,其中包含所有代码,以及用于设置工作环境的Pixi配置文件。

要克隆仓库,请使用以下命令:

git clone https://github.com/carlos-argueta/rse-3d-perception-pipeline.git

3、克隆Vision Messages仓库

Vision Messages仓库包含用于发布感知相关数据的ROS 2接口和用于可视化的RViz插件。要克隆并随后构建这些包,请导航到ROS 2工作空间的源文件夹并克隆vision_msgs仓库。

# Navigate to the src folder
cd rse-3d-perception-pipeline/ros2_ws/src/

# Make sure to checkout the jazzy branch
git clone -b jazzy https://github.com/ros-perception/vision_msgs.git

4、使用Pixi设置项目环境

在传统的机器人开发中,安装ROS 2是一个"系统级"操作,经常会破坏计算机上的其他Python项目。Pixi是一个现代包管理器(基于Conda生态系统构建),它解决了三个主要问题:

  • 隔离性: 它为这个项目创建了一个"气泡"。所有内容——从ROS 2 JazzyPyTorch——都存放在项目目录中的*.pixi*文件夹内。它不会触及你的系统文件。
  • 可复现性: 它使用锁定文件来确保本课程中的每位学生都使用完全相同版本的每个库。
  • 单工具工作流: 它用单一工具替代了aptpiprosdep

4.1 pixi.toml的结构

pixi.toml文件是你项目的"大脑"。它精确定义了你的环境。让我们看看本课程提供的文件:

  • [workspace]: 定义项目名称和通道(Pixi查找软件的位置)。我们使用robostack-jazzy获取ROS 2,使用conda-forge获取通用库。
  • platforms: 这告诉Pixi确保环境在Linux、Windows和Mac上可解。
  • [dependencies]: 这是你的购物清单。
  • ROS包: 注意我们包含了ros-jazzy-desktop和特定消息类型如sensor-msgs
  • 构建工具: 包含了colcon-ros以便编译我们的工作空间。
  • AI栈: 我们在一个地方定义了ultralytics(用于YOLO)、open3d(用于点云)和pytorch
[workspace]
name = "rse-3d-perception-pipeline"
channels = ["robostack-jazzy", "conda-forge"]
# Added support for Lunux, Windows, macOS (Intel), and macOS (Apple Silicon)
platforms = ["linux-64", "win-64", "osx-64", "osx-arm64"]

[dependencies]
ros-jazzy-desktop = "*"
ros-jazzy-sensor-msgs = "*"
ros-jazzy-sensor-msgs-py = "*"
ros-jazzy-cv-bridge = "*"
ros-jazzy-tf2-ros = "*"
ros-jazzy-tf2-geometry-msgs = "*"
ros-jazzy-robot-state-publisher = "*"
ros-jazzy-xacro = "*"

colcon-ros = ">=0.5.0,<0.6"
colcon-common-extensions = ">=0.3.0,<0.4"

ultralytics = "*"
open3d = "*"
numpy = "*"
opencv = ">=4.12.0,<5"

pytorch = ">=2.0"
torchvision = ">=0.15"

4.2 安装Pixi环境

现在,让我们实际构建这个"气泡"。

在你的机器上安装Pixi(如果还没有安装):

curl -fsSL https://pixi.sh/install.sh | sh
# Restart your terminal after installation

通过导航到项目文件夹并运行安装命令来初始化项目:

# Go to the project's root folder
cd rse-3d-perception-pipeline

# Install the pixi environment as per the pixi.toml specifications
pixi install

首次运行会需要几分钟。Pixi正在为这个项目下载完整的ROS 2发行版和AI库。

当你想学习本课程时,通过以下命令进入环境:

pixi shell

你的终端提示符会改变,表示你现在已经进入隔离的ROS 2环境。

4.3 下载ROS 2 Bag

本项目使用预录制的机器人数据。下一步是下载并解压本项目的ROS 2 bag文件。

# Download the data
wget -O linkou.zip "https://www.dropbox.com/scl/fi/tdxin6bzw01siucdv3kgv/linkou-2023-12-27-2-med.zip?rlkey=rcz93bhozjsdymcpn5dqz6rly&st=do015oqz&dl=0"
# Extract the data
unzip linkou.zip

5、构建和加载工作空间

我们现在准备构建和加载工作空间。这将使我们能够测试设置是否就绪。确保Pixi shell已激活。

# Navigate to the ROS 2 workspace
cd rse-3d-perception-pipeline/ros2_ws

# Build the workspace
colcon build

# Source the workspace
source install/setup.bash

6、测试设置

最后一步是运行整个3D管线并直观地确认它能正常工作。

ros2 launch s1s2_r1_perception perception.launch.py

你应该会看到类似下面的输出:

终端输出

RViz窗口将打开,它应该看起来像下面的截图:

RViz窗口

最后,在另一个终端中,让我们回放ROS bag中的数据来查看管线的实际运行效果:

# Open a new terminal 
# Navigate to where you downloaded and unzipped the bag, then play it with:
ros2 bag play linkou-2023-12-27-2-med/ --clock

7、⚠ 关于硬件和性能的说明

虽然这个感知管线旨在易于使用并且可以完全在CPU上运行,但它是一个计算密集型过程。管线同时管理:

  • 深度学习推理: 运行YOLO进行目标检测。
  • 点云处理: 通过Open3D对数千个LiDAR点进行滤波和聚类。
  • 投影计算: 实时计算2D和3D帧之间的变换。

如果你的CPU性能不足,你会注意到延迟差距。特别是在鸟瞰图(BEV)中,3D边界框可能会"滞后"于实际的点云簇,因为机器人在移动。这是因为CPU无法足够快地完成AI推理和融合计算来跟上输入的传感器数据。如果你看到这种延迟且无法使用其他机器,请尝试关闭其他资源密集型应用程序。

恭喜!你已成功跨越了机器人技术中最困难的障碍:环境搭建。

在本课中,你已经:

  • 配置了专业工作空间: 使用Pixi搭建了干净、隔离的开发环境。
  • 管理了依赖: 克隆并配置了必要的ROS 2消息接口(vision_msgs)。
  • 验证了软件栈: 成功构建了工作空间并使用录制的传感器数据启动了实时感知管线。

"管道"问题解决了,你的机器现在是一个功能完备的机器人工作站。我们已正式准备好开始探索这个3D感知管线的不同组件。


原文链接: 3D Perception: a LiDAR-Camera Pipeline — Setting Up Your Development Environment

BimAnt翻译整理,转载请标明出处