[Open3D Tutorial] visualize point cloud
[Open3D Tutorial] voxel downsampling
[Open3D Tutorial] vertex normal estimation
[Open3D Tutorial] point cloud distance
[Open3D Tutorial] bounding volumes
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | \\
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \\
"deb [arch=$(dpkg --print-architecture) \\
signed-by=/etc/apt/keyrings/docker.gpg] \\
<https://download.docker.com/linux/ubuntu> \\
$(lsb_release -cs) stable" | \\
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
# =====================================================
# CUDA 12.1 + Ubuntu 22.04 기반 연구용 GPU 환경
# - Open3D (GPU)
# - COLMAP (CUDA 빌드)
# - ROS2 Humble + 자동 환경 설정
# =====================================================
FROM nvidia/cuda:12.1.1-devel-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive \\
TZ=Asia/Seoul \\
LANG=en_US.UTF-8 \\
LC_ALL=en_US.UTF-8 \\
PIP_DISABLE_PIP_VERSION_CHECK=1 \\
PYTHONDONTWRITEBYTECODE=1 \\
PYTHONUNBUFFERED=1
# -----------------------------------------------------
# 시스템 기본 패키지
# -----------------------------------------------------
RUN sed -i 's|archive.ubuntu.com|kr.archive.ubuntu.com|g' /etc/apt/sources.list || true && \\
apt-get update && apt-get install -y --no-install-recommends \\
python3 python3-pip python3-dev python3-venv \\
git git-lfs cmake ninja-build g++ wget unzip curl \\
tzdata locales lsb-release gnupg2 \\
libgl1 libx11-6 libglib2.0-0 libgtk-3-0 libdbus-1-3 xauth \\
libboost-all-dev libgoogle-glog-dev libgflags-dev \\
libatlas-base-dev libsuitesparse-dev libfreeimage-dev ffmpeg && \\
rm -rf /var/lib/apt/lists/* && \\
locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8
# -----------------------------------------------------
# ROS2 Humble 설치
# (컨테이너 내에선 apt-key 경고 무시 가능)
# -----------------------------------------------------
RUN curl -sSL <https://raw.githubusercontent.com/ros/rosdistro/master/ros.key> | apt-key add - && \\
echo "deb [arch=$(dpkg --print-architecture)] <http://packages.ros.org/ros2/ubuntu> $(lsb_release -cs) main" \\
| tee /etc/apt/sources.list.d/ros2.list > /dev/null && \\
apt-get update && apt-get install -y --no-install-recommends \\
ros-humble-desktop python3-colcon-common-extensions && \\
rm -rf /var/lib/apt/lists/*
# -----------------------------------------------------
# Python 패키지 (GPU) — venv로 시스템 파이썬과 분리
# -----------------------------------------------------
# venv 생성 및 활성화를 위해 PATH 설정
RUN python3 -m venv /opt/venv
ENV PATH=/opt/venv/bin:$PATH
# 일반 패키지 먼저(Python 기본 인덱스), Torch는 별도 인덱스
RUN pip install --upgrade pip && \\
pip install \\
numpy==2.1.3 opencv-python-headless==4.10.0.84 tqdm matplotlib scipy open3d==0.19.0 && \\
pip install \\
torch torchvision torchaudio --index-url <https://download.pytorch.org/whl/cu121> && \\
pip cache purge
# -----------------------------------------------------
# ROS2 환경 자동 로드 설정
# -----------------------------------------------------
RUN echo "source /opt/ros/humble/setup.bash" >> /etc/bash.bashrc && \\
echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> /etc/bash.bashrc && \\
echo "export ROS_DOMAIN_ID=0" >> /etc/bash.bashrc && \\
echo "export ROS_LOCALHOST_ONLY=0" >> /etc/bash.bashrc
# -----------------------------------------------------
# 기본 작업 디렉토리
# -----------------------------------------------------
WORKDIR /work
# -----------------------------------------------------
# 테스트 스크립트
# -----------------------------------------------------
COPY <<'PY' /work/test_env.py
import os, subprocess, torch
import open3d as o3d
print("CUDA available:", torch.cuda.is_available())
print("Torch:", torch.__version__, "| CUDA:", torch.version.cuda)
print("Open3D:", o3d.__version__)
print("ROS2 sourced:", os.environ.get("ROS_VERSION", "Not loaded"))
subprocess.run(["colmap", "--help"])
PY
CMD ["bash"]
docker build -t open3d_test .
sudo apt update
sudo apt install -y ubuntu-drivers-common
ubuntu-drivers devices # 추천 드라이버 확인
sudo ubuntu-drivers auto install
sudo reboot
curl -fsSL <https://nvidia.github.io/libnvidia-container/gpgkey> | \\
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
# 레포 등록 (signed-by 포함)
curl -s -L <https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list> | \\
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#' | \\
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
# 도커 런타임 연결
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
xhost +local:root
docker run -it --gpus all --name open3d_dev \\
--shm-size=16g \\
-e DISPLAY=$DISPLAY -e QT_X11_NO_MITSHM=1 \\
-v /tmp/.X11-unix:/tmp/.X11-unix \\
-v ~/Downloads/picture:/work \\
open3d_test bash
docker exec -it open3d_dev bash