Mavros: FCU mavros QGC ์ฒด์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2016๋…„ 11์›” 01์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mavlink/mavros

์•ˆ๋…•ํ•˜์„ธ์š”, ์›๊ฒฉ ์ธก์ •์„ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ณ  mavros ๋…ธ๋“œ๋ฅผ ์—ด์–ด ์›๊ฒฉ ์ธก์ •์„ ํ†ตํ•ด FCU์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. Mavros๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์–ด๋–ค UDP ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ฐธ๊ณ  : udp-b://@ ๋ฅผ GCS URL๋กœ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

๋ชจ๋“  12 ๋Œ“๊ธ€

  • UDP ์ฃผ์†Œ๋Š” PC IP ์ฃผ์†Œ ๋ฐ ๊ด€๋ จ ํฌํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. launch file ๋˜๋Š” ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น ์ค„์—์„œ ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š”
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

๊ทธ๋Ÿฌ๋‚˜ ํฌํŠธ์™€ ์ฃผ์†Œ๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋‚ด ์ปดํ“จํ„ฐ์— ์›๊ฒฉ ๋ถ„์„์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์–ด๋–ค IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? FCU์˜ IP ์ฃผ์†Œ๋Š” ์–ด๋””์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ „์†ก์„ ์œ„ํ•ด rc ์›๊ฒฉ ์ธก์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@zhahaoyu ifconfig ์‚ฌ์šฉํ•˜์—ฌ PC IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ…”๋ ˆ ๋ฉ” ํŠธ๋ฆฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ mavros ์€ ์ด๋ฏธ ํ…”๋ ˆ ๋ฉ” ํŠธ๋ฆฌ ํฌํŠธ๋ฅผ ํ†ตํ•ด FCU (PX4)๋กœ๋ถ€ํ„ฐ mavlink ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ROS ๋ฉ”์‹œ์ง€๋กœ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค. mavros ๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋กํ•˜์—ฌ ๋™์ผํ•œ ์ •๋ณด๋ฅผ QGC๊ฐ€ ์ •๋ณด๋ฅผ ์ˆ˜์‹  ํ•  ์ˆ˜์žˆ๋Š” UDP ํฌํŠธ์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

    • FCU์™€ PC ๊ฐ„์˜ ์—ฐ๊ฒฐ

<FCU> ---telemtry port --<MAVROS>

  • PC์—์„œ :
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • ๋”ฐ๋ผ์„œ FCU์˜ IP ์ฃผ์†Œ๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์‹ค์ œ๋กœ FCU์˜ IP ์ฃผ์†Œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @weiweikong. ์ด์ œ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. roslaunch mavros px4.launch ์„ (๋ฅผ) ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ ํ…”๋ ˆ ์— ์„ ํ†ตํ•ด FCU์™€ ํ†ต์‹ ํ•˜๋Š” Mavros ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ QGC ์šฉ UDP ํฌํŠธ๋ฅผ ์—ด๊ณ  QGC์—์ด๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Mavros๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ QGC๋ฅผ ์—ด๋ฉด ์ž๋™์œผ๋กœ ๋™์ผํ•œ ํ…”๋ ˆ ์—  ํฌํŠธ๋ฅผ ๋“ฃ๊ณ  mavros๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ QGC์™€ mavros ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ—‰ํ—‰

  • UDP ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ
<include file="$(find mavros)/launch/node.launch">
        <arg name="blacklist_yaml" value="$(find mavros)/launch/px4_blacklist.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
    </include>

gcs_url ์„น์…˜์€ UDP ๊ตฌ์„ฑ์„์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ px4 ์›น ์‚ฌ์ดํŠธ์—๋Š” https://pixhawk.org/peripherals/onboard_computers/intel_edison์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์ด
์˜ˆ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด

<arg name="gcs_url" default="udp://:14556@my-intel-edisons-ip:14550" />

๊ทธ๋Ÿฌ๋ฉด QGC๊ฐ€ UDP๋ฅผ ํ†ตํ•ด ํฌํŠธ 14556์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

  • ์•ˆ์ „์„ ์œ„ํ•ด UDP ํฌํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์‹œ์ž‘ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

<launch>
    <!-- vim: set ft=xml noet : -->
    <!-- example launch script for PX4 based FCU's -->

    <arg name="fcu_url" default="/dev/ttyUSB0:57600" />
    <arg name="gcs_url" default="udp://:[email protected]:14550" />
    <arg name="tgt_system" default="1" />
    <arg name="tgt_component" default="1" />
    <arg name="log_output" default="screen" />

    <include file="$(find mavros)/launch/node.launch">
        <arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
        <arg name="log_output" value="$(arg log_output)" />
    </include>
</launch>

QGC๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ mavros๊ฐ€ ์—ฌ์ „ํžˆ ๋‹ค์Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

ERROR] [1478057788.915106802]: serial0: receive: End of file
terminate called after throwing an instance of 'std::system_error'
  what():  Resource deadlock avoided
================================================================================REQUIRED process [mavros-2] has died!
process has died [pid 12427, exit code -6, cmd /opt/ros/kinetic/lib/mavros/mavros_node __name:=mavros __log:=/home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2.log].
log file: /home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2*.log
Initiating shutdown!
================================================================================
[mavros-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

@zhahaoyu ๋‚˜๋Š”์ด ์ƒํ™ฉ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์ƒ QGC๋Š” ROS์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ •์ƒ์ ์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผํ•˜๋ฉฐ mavros ์˜ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก QGC UDP ๊ตฌ์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

serial0: receive: End of file

์ด์ œ ์œ„์˜ ์ •๋ณด๊ฐ€ QGC๊ฐ€ FCU๋ฅผ ์ง๋ ฌ ํฌํŠธ์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ด๋ผ๋ฉด QGC ๋˜๋Š” mavros ๊ฐ€ ์ถฉ๋Œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

QGC๊ฐ€ ์ง๋ ฌ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. SITL ๋ชจ๋“œ์—์„œ ROS์™€ ํ•จ๊ป˜ QGC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ pixhawk fcu๋กœ ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

@zhahaoyu ์•„๋งˆ๋„ QGC๋ฅผ ๋จผ์ € ์‹œ์ž‘ํ•œ ๋‹ค์Œ mavros wih PX4๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ง๋ ฌ ํฌํŠธ ๋Œ€์‹  UDP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•˜์‹ญ์‹œ์˜ค.

@weiweikong ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฐธ๊ณ ๋กœ ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. QGroundControl Station์„ ์—ด๊ณ  ์™ผ์ชฝ ์ƒ๋‹จ์˜ "Q"์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ณ  "๊ธฐ๋ณธ ์„ค์ •"ํŒจ๋„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ์˜ "์ผ๋ฐ˜"์„ ํด๋ฆญ ํ•œ ๋‹ค์Œ "๋‹ค์Œ ์žฅ์น˜์— ์ž๋™ ์—ฐ๊ฒฐ"์„ ์ฐพ์€ ๋‹ค์Œ "SiK ๋ผ๋””์˜ค"๋ฅผ ์„ ํƒ ํ•ด์ œํ•˜๊ณ  "UDP"๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.
  3. QGroundControl์„ ๋‹ซ์•„ FCU์—์„œ ์—ฐ๊ฒฐ์ด ๋Š์–ด ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. Mavros ํŒจํ‚ค์ง€ ํด๋”์—์žˆ๋Š” px4.launch ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  " udp : // : [email protected] : 14550"์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ๋Š” 14560 ๋ฐ 14550์ž…๋‹ˆ๋‹ค.
  5. roslaunch mavros px4.launch
  6. QGroundControl ์—ด๊ธฐ

์ด์ œ FCU <---telemetry---> MAVROS <---UDP---> QGC ์ฒด์ธ์ด ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. QGC๋Š” ๋” ์ด์ƒ FCU vai Telemetry์™€ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์›ํ•œ๋‹ค๋ฉด ์ˆ˜๋™ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : udp-b://@ ๋ฅผ GCS URL๋กœ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

์•ˆ๋…•ํ•˜์„ธ์š”, ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. FPV Radio Telemetry Ground Module์ด ์žˆ์œผ๋ฉฐ Iris ๋“œ๋ก ์„ ์†Œ์œ  ํ•œ ์›๊ฒฉ ์ธก์ •๊ณผ ํ†ต์‹ ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

ํ…”๋ ˆ ๋ฉ” ํŠธ๋ฆฌ (Ground)๋ฅผ ์šฐ๋ถ„ํˆฌ PC์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋“œ๋ก ์„ ์ผœ๋„ Qground ์Šคํ…Œ์ด์…˜์ด ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰