반응형

SITL

1. SITL - JMAVSim

아래를 따라서 진행한다.

TERMINAL1$ cd PX4_DIRECTORY

TERMINAL1$ make px4_sitl jmavsim

 

TERMINAL2$ cd CATKIN_WORKSPACE

TERMINAL2$ source devel/setup.bash

mavros/launch/px4.launch 파일의 fcu_url 을 udp://:14540@127.0.0.1:14557 으로 바꾼 후

TERMINAL2$ roslaunch mavros px4.launch

 

TERMINAL3$ cd CATKIN_WORKSPACE

TERMINAL3$ catkin build PACKAGE_NAME

TERMINAL3$ source devel/setup.bash

TERMINAL3$ rosrun PACKAGE_NAME EXECUTABLE_FILE

 

 

 

1. HITL Pre-Setup[1][2]

Pixhawk Setting

1) Telem2를 Onboard 통신용으로 사용한다면

MAV_1_CONFIG = TELEM2(102) # 포트 1번의 MAVLINK 구성을 Telemetry2로(이거를 설정해야 다른 파라미터가 나타난다.)

MAV_1_MODE = Onboard(2) # 포트 1번의 MAVLINK모드를 Onboard로,

SER_TEL2_BAUD = 921600 # Telemetry2의 데이터 Baudrate 설정

MAV_1_RATE = 0 # 0으로하면 이론적 최대 대역폭의 반으로 설정한다고 한다. 그러나 메시지 손실을 고려하여 적절한 값을 설정해준다.

 

2) 다른 포트의 MAVLINK 메시지를 포워딩하게 하려면

MAV_1_FORWARD = True

---> 이건 따로 확인 방법을 찾아보자.

2.1 HITL - JMAVSim [3]

1) 빌드 및 HITL 실행 (Pixhawk만)

Main1$ DONT_RUN=1 make px4_sitl_default jmavsim

1.1) Pixhawk 에 전원 연결한 후 부팅 대기

1.2) Pixhawk가 연결된 포트 확인

Main1$ ls /dev/ttyACM*

1.3) JMAVSim 실행 - 위에서 검색한 포트를 맞춰준다.

Main1$ cd <PX4_SOURCE_PATH>

Main1$ ./Tools/jmavsim_run.sh -q -s -d /dev/ttyACM0 -b 921600 -r 250

Options added

-q : qgc

-s : sdk

-b : baudrate setting

-r : Timeout을 250ms으로 설정한다.

2.2 HITL - GAZEBO [3]

잘 안된다...

1) 빌드 및 HITL 실행

At this process, DO NOT px4_sitl_default. it makes many problems..

Main1 $ DONT_RUN=1 make px4_sitl gazebo

1.1) Pixhawk 에 전원 연결한 후 부팅 대기

1.2) Pixhawk가 연결된 포트 확인

Main1$ ls /dev/ttyACM*

1.3) gazebo 모델인 iris.sdf의 mavlink_interface를 HITL용으로 바꾸어준다. (Tools/sitl_gazebo/models/iris)

: serialEnabled를 1

: serialDevice를 /dev/tty****

: hil_mode를 1

1.4) gazebo가 불러올 world를 수정한다. empty.world를 복사해서 다음을 추가해준다. (Tools/sitl_gazebo/world)
    <include>
      <uri>model://iris</uri>
      <pose>1.01 0.98 0.83 0 0 1.14</pose>
    </include>

1.5) gazebo를 실행할 터미널에 빌드 결과물의 주소를 등록해준다.

Main1$source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

1.6) safety button를 눌러서 preflight condition을 만들고 gazebo를 실행한다.

: 아래 명령을 입력하면 잠시 후 Pixhawk가 GPS데이터를 받았다는 초록불이 깜빡인다.

Main1$ gazebo Tools/sitl_gazebo/worlds/empty_copy.world

 

2.3 HITL - AirSim [3]

1.1) Unreal Engine 4.24, AirSim을 모두 설치한다.

1.2) Airsim용 빌드를 한다.

Main1$ make px4_sitl_default none_iris

1.3) Unreal Engine의 AirSim 프로젝트인 Block을 켜서 play 누른다.

1.4) QGroundControl을 켠다.

3. HITL with Onboard

1) Onboard 연결 (Pixhawk-Onboard 같이)

PX4의 Telem2와 Onboard의 USB 혹은 UART와 연결한다.

1.1) Onboard에서 포트 확인

Onboard1$ ls dev/tty*

1.2) ROS Master 실행

Onboard1$ roscore

1.3) mavros 노드 실행

: mavros 노드를 실행시키고 flight controller unit이 어떤 url로 접속할 것인지 나타낸다.

: 글쓴이는 Jetson Nano로, ttyTHS1 포트로 baudrate 921600bps로 접속한다.

Onboard2$ sudo chmod 777 /dev/ttyTHS1

Onboard2$ rosrun mavros mavros_node _fcu_url:="/dev/ttyTHS1:921600"

1.2~3) run mavros via roslaunch

: modify connecting url to FCU @

Onboard2$ sudo chmod 777 /dev/ttyTHS1

Onboard2$ gedit ~/catkin_ws/src/mavros/mavros/launch/px4.launch # change fcu_url

Onboard2$ roslaunch mavros px4.launch # run by using roslaunch

1.4) ros 프로젝트를 빌드한다.

Onboard3$ cd ~/catkin_ws/

Onboard3$ catkin build <PACKAGE># 만든 <PACKAGE> 빌드

1.5) 빌드한 노드 실행

Onboard3$ cd ~/catkin_ws/

Onboard3$ source devel/setup.bash # workspace 등록

Onboard3$ rosrun <PACKAGE> <EXECUTABLE>

 

Troubleshooting

Q1) mavros_node 실행 후에 아래 메시지 까지만 나온다.

Known MAVLink dialects: common ardupilotmega ASLUAV all autoquad icarous matrixpilot paparazzi standard uAvionix ualberta

MAVROS started. MY ID *.***, TARGET ID *.*

A1) Pixhawk와 Onboard 간에 데이터 통신이 안되면 그렇다. UART 핀이 TX-RX 끼리, 혹은 GND가 연결되어있는지 확인한다.

 

 

 

1. dev.px4.io/master/en/companion_computer/pixhawk_companion.html

2. docs.px4.io/master/en/peripherals/mavlink_peripherals.html

3. dev.px4.io/master/en/simulation/hitl.html

4. dev.px4.io/master/en/simulation/ros_interface.html

 

 

 

 

728x90

+ Recent posts