[SITL] PX4-ROS2

이라면·2022년 9월 21일
0

PX4-ROS2

목록 보기
1/3
post-thumbnail

서론 - 어쩌다가..

듀얼부팅으로 Ubuntu 따로, Windows 따로 사용하고 있었는데, 모종의 이유로 두 환경을 동시에 사용하고 싶은데 데스크탑은 1대라서 windows 환경에서 vmware으로 ubuntu 환경을 구성하게 되었다.
그러면서 원래 ros1 noetic 버전을 사용하고 있었는데, ros2 foxy로 업데이트해서 PX4 기반 SITL을 진행해보려고 한다.
원하는 PX4-ROS2 아키텍처는 아래와 같다.

환경 구축하기

PX4-Autopilot git clone 해오기

git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

(출처 : https://docs.px4.io/main/en/dev_setup/dev_env_linux_ubuntu.html)

ros2 workspace 만들기

환경 구성하는 순서는 아래와 같다.

1) ros2 ws 만들기 - ws name : px4_ros_com_ros2
mkdir -p ~~ 로 만들면 되는데, git clone 해올때 자동으로 만들어지니 패쓰..
2) px4_ros_com과 px4_msgs에 대해 git clone 해오기
3) 기타 종속성 설치해주기
4) colcon build --symlink-install 으로 빌드하기
만약 "colcon: command not found" 에러가 발생하면, "sudo apt install python3-colcon-common-extensions"로 colcon을 설치해준다

# 2)
git clone https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros2/src/px4_ros_com
git clone https://github.com/PX4/px4_msgs.git ~/px4_ros_com_ros2/src/px4_msgs

# 3)
cd ~/px4_ros_com_ros2/src/px4_ros_com/scripts
source build_ros2_workspace.bash
sudo pip3 install -U empy pyros-genmsg setuptools

# 4)
colcon build --symlink-install --event-handlers console_direct+

# 5)
source ~/px4_ros_com_ros2/install/setup.bash
micrortps_agent -t UDP

잠깐 - 무언가 설치되지 않았다 ...

아래 패키지들이 제대로 설치가 됐는지 확인하고 위의 colcon build ~ 를 다시 해주면 된다. 역시 Developter Guide를 잘 읽어야 돼..

PX4-ROS2 SITL 실행하기

1) [Terminal #1] PX4-Autopilot 폴더에서 gazebo make 하기
2) [Terminal #2] UDP를 전송 프로토콜로 사용하는 micrortps_agent를 시작하기
3) [Terminal #3] roslaunch로 listener 실행하기

# [Terminal #1]
cd ~/PX4-Autopilot
make px4_sitl_rtps gazebo

# [Terminal #2]
source ~/px4_ros_com_ros2/install/setup.bash
micrortps_agent -t UDP

# [Terminal #3]
source ~/px4_ros_com_ros2/install/setup.bash
ros2 launch px4_ros_com sensor_combined_listener.launch.py

결과!

위에 있는 PX4-ROS2 아키텍처를 보면, microRTPS_agent는 ROS2와 붙기 위해 필요하고, microRTPS_client는 PX4와 붙기 위해 필요하다.
그래서 PX4로부터 얻은 uORB topic들을 microRTPS_client가 microRTPS_agent로 전달하면 ROS2가 ros2 node들로 이 topic을 보내는 것 같다. 반대의 경우도 동일하다.
이제 offboard 코드 짜러 가야지...

결론 commands

# [Terminal #1]
cd ~/PX4-Autopilot
make px4_sitl_rtps gazebo
# [Terminal #2]
source ~/px4_ros_com_ros2/install/setup.bash
micrortps_agent -t UDP
# [Terminal #3]
source ~/px4_ros_com_ros2/install/setup.bash
ros2 launch px4_ros_com sensor_combined_listener.launch.py
profile
Learning Machine 입니다. 근데 이제 척척석사를 곁들인..

0개의 댓글