Carla simulator의 map에서 PCD file을 추출하는 방법에 대한 글
Carla에서 기본 제공하는 PCL recorder는 Roadrunner로 만든 custom map에서 적용하기 불편한것 같음
SLAM을 하는 방식도, 각 SLAM 패키지마다 원하는 tf 트리 형태들이 다르기에, 복잡함.
현재 글에 소개된 명령어들은, 전부 필자 기준의 디렉토리임. 본인의 디렉토리에 맞게 수정해서 사용
🟢개발환경
Carla 0.9.15 (Docker)
💡Roadrunner 를 이용하여 Custom map을 Carla에 올리려면 Carla 0.9.15 (source build)필요
Carla-ros-bridge (client로 동작하는 호스트는 3.10 whl 파일 설치)
⚠️파이썬 가상환경venv 이용
ubuntu 22.04
ROS2 humble
🟢아키텍처 소개

1️⃣Carla 0.9.15, Docker install
source build는 Carla 공식 document 참조
# Pull CARLA 0.9.15
docker pull carlasim/carla:0.9.15
2️⃣Carla ros bridge, Carla client python API install
REF: https://github.com/ttgamage/carla-ros-bridge
1.⚠️client(호스트)에서 python3.10 가상환경 만들기
python3.10 -m venv carla_env (처음 1회)
source carla_env/bin/activate (가상환경 활성화, ~디렉토리에서 해야함)
2.whl 파일 다운로드 (⚠️carla-0.9.15-cp310-cp310-linux_x86_64.whl)
REF: https://github.com/gezp/carla_ros/releases/
3.휠파일 설치
pip install carla-0.9.15-cp310-cp310-linux_x86_64.whl
python -c "import carla; print(carla.__file__)"
4.bridge 설치 (⚠️파이썬 가상환경에서)
mkdir -p ~/Workspace/ros-bridge && cd ~/Workspace/ros-bridge
git clone --recurse-submodules https://github.com/ttgamage/carla-ros-bridge.git
mv carla-ros-bridge src
source /opt/ros/humble/setup.bash
rosdep update
rosdep install --from-paths src --ignore-src -r
pip install transform3d (tramsform3d 오류 발생시)
rosdep install --from-paths src --ignore-src -r
pip install empy==3.3.4 pyyaml setuptools colcon-common-extensions (em 관련 에러, colcon depend없어서 그럼)
pip install jinja2 typeguard
pip install lark-parser
pip install pygame
pip install numpy==1.24.3
colcon build --symlink-install
⚠️환경변수 등록 (ros bridge 패키지 인식 + 파이썬 가상환경 인식)
파이썬 가상환경 환경변수로 등록안해두면, 모듈 못찾는다고 계속 뜸
ros-bridge 패키지도 source 해주자
source ~/Workspace/ros-bridge/install/setup.bash
export PYTHONPATH=/home/ddokkon/carla_env/lib/python3.10/site-packages:$PYTHONPATH
3️⃣Carla, Carla-ros-bridge 실행

sudo docker run -it --rm \
--gpus all \
--net=host \
--privileged \
-e DISPLAY=$DISPLAY \
-e ROS_DOMAIN_ID=30 \
-e QT_X11_NO_MITSHM=1 \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
--device=/dev/dri \
carlasim/carla:0.9.15
cd ~
source carla_env/bin/activate
export PYTHONPATH=/home/ddokkon/carla_env/lib/python3.10/site-packages:$PYTHONPATH
ros2 launch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch.py
💡다른맵(carla 다른맵 or custom map) 으로 하고 싶으면 아래 부분 수정
gedit carla_ros_bridge_with_example_ego_vehicle.launch.py

4️⃣ ROS bag record
명령어 입력후, PCD 따고 싶은 구역을 돌아다니면됨
rosbag record -a
5️⃣ ROS bag play and Point Cloud TF transform & merge

github: https://github.com/Lee-seokgwon/slamless-pcd-generator
ros2 bag play /home/ddokkon/rosbag/rosbag2_2025_07_03-10_44_16 --clock --rate 0.2
rosbag 실행후 10초 정도뒤에 아래 파이썬 파일 실행하자. (tf정보 충분히 버퍼에 쌓이고 난뒤)
python3 BagProcessor.py #위 github 주소 참고
⚠️ 코드 내부의 디렉토리 본인에 맞게 수정

이후 해당 pcd 파일을 Autoware Map builder에 넣어서 이용 가능.
필요하다면 다운샘플링도 할것 (github 레포에 포함되어있음)
