7. PX4–ROS 2 브리지(uXRCE-DDS)를 설치해야 합니다.
uXRCE-DDS는 PX4와 ROS2를 연결해주는 에이젼트입니다. uXRCE-DDS를 실행하면 드론에서 퍼블리싱하는 ROS2 토픽을 사용할 수 있습니다. 자세한 내용은 아래의 사이트를 참고하시기 바랍니다.
아래의 명령어를 실행하여 uXRCE-DDS의 오픈 소스를 다운로드 합니다.
cd ~
git clone -b v2.4.3 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
소스를 다운로드 하였으면 build 디렉토리를 만들고 컴파일을 진행합니다.
먼저 소스가 저장되어 있는 Micro-XRCE-DDS-Agent로 이동하여 build 디렉토리를 만듭니다.
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
컴파일 전에 필수 도구와 라이브러리를 설치해야 합니다. 특히 설치시 에러발생을 방지하기 위해 한국 미러 대신 기본 글로벌 미러로 바꿉니다.
sudo sed -i 's|http://kr.archive.ubuntu.com/ubuntu|http://archive.ubuntu.com/ubuntu|g' /etc/apt/sources.list
sudo apt update
sudo apt install -y build-essential cmake pkg-config libssl-dev libasio-dev libtinyxml2-dev
cmake와 make를 실행하여 컴파일을 진행합니다.
sudo apt-get purge -y libasio-dev
cmake .. -DTHIRDPARTY=FORCE -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=FORCE
sudo snap install cmake --classic
cmake --version
type -a cmake
export PATH=/snap/bin:$PATH
hash -r
cmake .. -DTHIRDPARTY=ON -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY=FORCE -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=FORCE
make -j$(nproc)
sudo make install
sudo ldconfig
새로운 터미널 창을 띄우고 gazebo-classic을 실행합니다.
cd ~/PX4-Autopilot
make px4_sitl gazebo-classic
새론운 터미널을 띄우고 uXRCE-DDS를 실행합니다. udp4를 사용하고 포트는 8888입니다.
MicroXRCEAgent udp4 -p 8888
8. ROS 2 Foxy를 설치합니다. 아래의 사이트를 참조하여 ROS2 Foxy를 설치합니다.
9. ROS2 설치가 완료되면 uXRCE-DDS를 실행하여 ROS2 토픽을 확인합니다.
10. ROS 2 워크스페이스와 메시지 패키지(px4_msgs)의 소스를 받아서 컴파일을 수행합니다.
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
11. px4_msgs의 소스를 다운로드하여 설치합니다.
git clone -b release/1.15 https://github.com/PX4/px4_msgs.git
px4_ros_com도 함께 다운로드 하여 컴파일하여 구동을 테스트 합니다.
git clone -b release/1.15 https://github.com/PX4/px4_msgs.git
예제 파일도 다운로드 합니다.
git clone https://github.com/PX4/px4_ros_com.git
의존성 도구를 설치합니다.
sudo apt-get update
sudo apt-get install -y python3-colcon-common-extensions python3-rosdep
컴파일을 진행합니다.
cd ..
colcon build --symlink-install
source install/setup.bash
만약 px4_ros_com 패키지가 정상적으로 설치되지 않을 아래의 명령을 실행하여 다시 컴파일 한 후 설치하시기 바랍니다.
colcon build --symlink-install --event-handlers console_direct+ --packages-up-to px4_ros_com
source ~/ros2_ws/install/local_setup.bash
ros2 pkg list | grep px4_ros_com
3개의 터미널을 사용하여 ros2 토픽이 정상적으로 출력되는지 확인합니다.
아래의 명령어를 실행하여 ros2 토픽이 정상적으로 출력되면 설치가 완료된 것입니다.
# 터미널 A (PX4 SITL)
cd ~/PX4-Autopilot
make px4_sitl gazebo-classic
# 터미널 B (uXRCE-DDS Agent)
MicroXRCEAgent udp4 -p 8888
# 터미널 C (ROS 2)
ros2 topic list
ros2 topic echo /fmu/out/vehicle_global_position
12. 센서 리스너 예제를 실행합니다.
source /opt/ros/foxy/setup.bash
source ~/ros2_ws/install/local_setup.bash
ros2 launch px4_ros_com sensor_combined_listener.launch.py
실행결과는 아래와 같습니다. 오른쪽 터미널 창에 sensor_combined_listener 토픽이 정상적으로 출력됩니다.
13. 드론이 offboard 모드에서 이륙하고 공중에서 대기하는 예제를 실행합니다. 드론이 arming이 되고 이륙하여 공중에서 호버링을 하고 있습니다. offboard_control 패키지 실행을 종료하면 드론이 착륙하게 됩니다.
source /opt/ros/foxy/setup.bash
source ~/ros2_ws/install/local_setup.bash
ros2 run px4_ros_com offboard_control
'로봇개발 > 드론 주행알고리즘 개발' 카테고리의 다른 글
드론 시뮬레이션 환경 구축 #3 (0) | 2025.08.31 |
---|---|
드론 시뮬레이션 환경 구축 #1 (1) | 2025.08.29 |