[caRLA,Matlab]Integrating Carla-Matlab-ROS Using ROSbridge and ROS Toolbox

DDOKKON·2025년 3월 1일

[Integrating Carla-Matlab-ROS Using ROSbridge and ROS Toolbox]

  1. Matlab Simulink를 이용해서 Carla를 제어해보자.
  2. Carla-ROSbridge , Matlab ROS ToolBox, WSL를 이용하자.
    3. Window11, WSL2 Ubuntu 20.04, ROS noetic, ROS carla bridge, MATLAB 2024a, MATLAB ROS TOOLBOX, Carla 0.9.13

😊Set Up and Connect to CARLA Simulator_MATLAB OFFICIAL 1
😊Set Up and Connect to CARLA Simulator_MATLAB OFFICIAL 2 with example
😊ROS bridge installation for ROS 1 _ CARLA ROS BRIDGE OFFICIAL




1️⃣전체적인 시스템 구성도
🟢윈도우 환경 : MATLAB/simulink(ROS TOOLBOX) , Carla Server
🟢WSL 우분투 : Carla Client, Carla ROS bridge, ROS noetic







2️⃣ WSL2에 Ubuntu 20.04 설치 및 ROS noetic 설치

🟢WSL: 아래 포스팅을 참고하자. (홈 디렉토리 변경은 안해도 된다.)
🟢ROS: 아래의 ROS wiki를 참고하자.
😊WSL2 Ubuntu Installation
😊ROS noetic installation

⚠️CPU가상화가 꺼져있어 Hyper-V가 활성화 되지 않는경우, BIOS에서 'CPU 가상화 옵션'을 켜줘야한다. 관련내용은 자신의 메인보드에 맞게 찾아보도록 하자





3️⃣ Window에 Carla 0.9.13 설치
🟢Carla: 아래의 포스팅을 참고하자. (버전은 0.9.13으로 바꿔서 다운받자!!)
Window에서 Carla 서버를 돌릴것이기에, Carla를 통으로 전부 다 설치해주면 된다.(그냥 아래 포스트 따라하면 된다는 소리이다.)
🟢**그러고 CarlaUE4.exe(carla server) 도 실행해주자.
😊Carla Installation






4️⃣ Ubuntu에 Carla-ROS bridge 설치
🟢Carla-ROS birdge: Carla의 정보들을 ROS 토픽으로 변경해주는 브릿지.
🟢B. Using the source repository 부분만 해주면 된다!
🟢설치중 pip와 catkin 설치가 필요하다.

pip 설치 : sudo apt update , sudo apt install python3-pip
catkin 설치: sudo apt install python3-catkin-tools (catkin --version 으로 정상설치 확인)

😊Carla ROS bridge installation for ROS1






5️⃣ ROS-carla bridge 런치파일 수정
🟢윈도우에서 Carla서버를 돌리고, WSL에서는 carla client만 돌아가기에, Carla connection 부분에서 localhost를 윈도우의 ip로 변경해주자.
🟢WSL에서 실행하려는 모든 런치파일에 대해서는 실행 전 IP설정을 해줘야한다.
🟢ROS1을 사용하기에 .launch 파일을 통해 실행한다. (.py는 건드리지 않아도 된다.)

~/carla-ros-bridge/catkin_ws/src/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle.launch (혹은 실행하려는 런치파일 이름)

🟢런치파일 실행명령어

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch







6️⃣ WSL에서 carla Python API 설치 및 의존성 패키지 설치
🟢WSL에서 carla client를 사용하려면, Linux용 carla가 필요함. 하지만 우리는 WSL에서 단순히 carla 클라이언트만 돌리면 되니까 Carla Python API만 설치해주면 됨.

1. WSL에 numpy, pygame 설치

python3.8 -m pip install numpy==1.19
python3.8 -m pip install pygame

2. Carla client용 Python API 설치

  • 카를라 git에서 0.9.13 으로 이동해서, [Ubuntu]CARLA_0.9.13.tar.gz 내부의 carla-0.9.13-py3.7-linux-x86_64.egg 받아오자. 그러고 WSL 디렉토리로 옮겨주자.
    😊Carla-GITHUB

  • window탐색기에서 WSL의 홈디렉토리 경로로 직접 이동해서 egg파일복사 .
    Ubuntu-20.04\home\lee\ 이런 식으로 들어가서 carla-0.9.13-py3.7-linux-x86_64.egg 붙여넣기

  • WSL이 egg파일 인식하도록, Python API 환경변수 bash에 등록.
echo 'export PYTHONPATH=$PYTHONPATH:~/carla-0.9.13-py3.7-linux-x86_64.egg' >> ~/.bashrc
source ~/.bashrc

python3 -c "import carla; print('CARLA Python API imported successfully')" (확인용 코드)







7️⃣ Ubuntu 터미널 소스 설정
🟢ROS와 Carla-bridge를 서로 다른 디렉토리에 build했다.
🟢따라서 ROS관련 명령어, Carla-bridge 관련 명령어를 치기전에 터미널 소스를 각각 해줘야한다.
🟢터미널 소스하는거 귀찮으면 bash에 등록해도 된다.(두개 겹쳐도 문제 없는것같다.)

source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
(carla - rosbridge 사용하려는 터미널마다 해줘야한다!)

source /opt/ros/noetic/setup.bash






8️⃣ Window에서 Matlab 실행 및 ROS toolbox를 이용한 시스템 통합

  • WSL(Ubuntu 20.04, ROS, ROS-carla bridge, Carla client) 과 Window(Carla server, Matlab(ROS toolbox 애드온이 설치된)을 통합할때,
  • ROS와 Matlab을 ROS toolbox를 이용하여 시스템을 통합한다.

1. Matlab에서 ROS toolbox addon을 다운



2. Matlab의 명령창에 rosinit 명령어를 이용하여, ROS와 통신환경을 구축

⚠️IP는 WSL의 IP, 즉 ROS가 돌아가고 있는 곳의 ip를 넣어줘야된다,
포트는 11311로 하면된다.(디폴트)
🟢연결 이후 rostopic list를 통해 ROS와 연결이 되었음을 확인해볼 수 있다.



3. ROS토픽을 터미널에서 쏴서, carla의 차량 제어
🟢rostopic list에서보면, /carla/ego_vehicle/vehicle_control_cmd 이 토픽이 carla_msgs/CarlaEgoVehicleControl 형식으로 차량을 제어함을 알 수 있다.
🟢아래의 명령어를 터미널에 입력해서 차량이 실제로 발행한 토픽에 따라 움직이는지 확인해보자.(carla ros bridge를 이용한 carla - ros 연동여부 확인위함)

rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl \
"{throttle: 0.5, steer: 0.0, brake: 0.0, reverse: false, hand_brake: false, manual_gear_shift: false}"
전진

rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl \
"{throttle: 0.0, steer: 0.0, brake: 1.0, reverse: false, hand_brake: false, manual_gear_shift: false}"
정지

rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl \
"{throttle: 0.5, steer: 0.0, brake: 0.0, reverse: true, hand_brake: false, manual_gear_shift: false}"
후진





4. Matlab simulink로 ROS 제어토픽 발행
🟢Matlab의 ROS toolbox를 이용하면, matlab상에서 ROS 메시지를 발행할 수 있다.
🟢 아래의 simulink 블록도는, /carla/ego_vehicle/vehicle_control_cmd 토픽으로 carla_msgs/CarlaEgoVehicleControl 형식의 메시지를 발행하는데,
메시지 내용은 throttle(전진)을 0.5(50%)하도록 한다.

  • 이후 simulink의 실행버튼을 누르면, carla의 차량이 움직임을 볼 수 있다.







9️⃣ 기타 에러 관련 해결 방법
⚠️ 정확한 해결방법이 아닐 수 있음.

netifaces 못찾는 오류 : pip3 install --no-cache-dir --force-reinstall netifaces (강제 삭제 및 강제 재설치)

Python 심볼릭 링크 관련 오류 해결:
ROS Noetic은 기본적으로 Python3를 사용해야 합니다.
하지만 일부 스크립트가 python을 기본적으로 찾도록 되어 있을 수 있습니다.
ls -l /usr/bin/python
출력 결과에 /usr/bin/python -> /usr/bin/python3가 없으면, 아래 명령어를 실행하여 심볼릭 링크를 생성합니다.
sudo ln -s /usr/bin/python3 /usr/bin/python

넘파이 관련 오류: (삭제후 재설치, 뭔가 넘파이 많이 설치되고 python 환경변수에서 numpy를 못찾아서 그런거일수있음. 암튼 잘 해서 잘해주면됨.... 뭐 막 하다가 됐는데...)
python3.8 -m pip install numpy
pip install numpy==1.19

ROSPY관련오류: (rospy설치)
sudo apt update
sudo apt install -y python3-rospy python3-rosnode python3-roslaunch python3-catkin-pkg-modules python3-rospkg-modules python3-rosdep

tf2_ros 관련 문제:
sudo apt install ros-noetic-tf2-ros

cv_bridge 모듈 관련 문제:
sudo apt update
sudo apt install ros-noetic-vision-opencv






💡 마무리

Carla - ROS - MATLAB을 통합해보았다.


Matlab의 다양한 애드온 블럭들을 이용하여, 특정 상황일때 특정방식으로 차량을 제어해볼 수 있을것같다.


앞으로 해야될것은, 천장의 카메라로부터 정보를 받아서 내 차량의 위치를 파악하고, 주변 환경을 파악해서, A* 알고리즘과 같은 경로계획 알고리즘을 이용하여, 차량을 목적지로 이동시키는 로직을 simulink로 구현해보면 될것같다.


ps. 일단, 매틀랩 공식 사이트에서도 Virtual machine을 쓰긴했던데, native 20.04에서 하는방식이 더 좋을지도 한번 고민을 해봐야겠다.

profile
School of Electronic Engineering. KNU

0개의 댓글