본문으로 바로가기
728x90
728x90

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

 

 

728x90
728x90