Mavros: MAVCMD . рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдзреБрди рдмрдЬрд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬреВрди 2019  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mavlink/mavros

рдореИрдВ rosrun рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдзреБрди рдмрдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
rosrun mavros mavcmd 258 0 0 0 0 0 0 0

рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреМрди рд╕реЗ рдкреИрд░рд╛ рднреЗрдЬрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?


MAVROS рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдордВрдЪ

рдЖрд░рдУрдПрд╕: рдореЗрд▓реЛрдбрд┐рдХ
рдЙрдмрдВрдЯреВ: 16.04

рдСрдЯреЛрдкрд╛рдпрд▓рдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

[ ] рдЕрд░реНрджреБрдкрд╛рдпрд▓рдЯ
[рдПрдХреНрд╕] рдкреАрдПрдХреНрд╕рек

рд╕рдВрд╕реНрдХрд░рдг: 3.7.1

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MAV_CMD рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рдЖрджреЗрд╢ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдЖрдк PLAY_TUNE рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╢реБрд░реБрдЖрддреА рдкреНрд░рд╢реНрди: рдЕрдм рдЬрдм рдкреНрд▓рдЧрдЗрди рдореМрдЬреВрдж рд╣реИ ( рдпрд╣ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВ - рдзрдиреНрдпрд╡рд╛рдж @mortenfyhn) рдорд╛рд╡рд░реЛрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдзреБрди рдмрдЬрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдореИрдВ Pixhawk1 рдкрд░ ROS noetic, Ubuntu 20.04, ArduSub 4.0.2 рдкрд░ рд╣реВрдВред рдЬрдм рдкрд┐рдХреНрд╕рд╣реЙрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдмрдЬрд░ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдмрдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ред

рдореИрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░ рдЪреБрдХрд╛ рд╣реВрдВ
roslaunch mavros apm.launch fcu_url:=udp://:[email protected]:14549
рдФрд░ рдЬрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
rostopic echo /mavros/state
рдпрд╣ рдирд┐рдпрдорд┐рдд рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдБ
rostopic pub -1 /mavros/play_tune mavros_msgs/PlayTuneV2 "format: 2 tune: '>e16e8e16r16c16e8g4<g4'"
рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреБрдирд┐рдпрд╛рджреА рдХрджрдо рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реВрдЪрдХ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдореИрдВ рдЕрднреА рднреА рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдБред

рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рдЖрдк рдЬреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╕рд┐рд░реНрдл play_tune рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдорд╛рд╡рд░реЛрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрди рд▓реЛрдб/рдмреНрд▓реИрдХ рд▓рд┐рд╕реНрдЯреЗрдб/рд╕рдорд╛рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ? рдпрд╣ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ play_tune рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд▓рдЧрдЗрди apm_pluginlists.yaml рдЬреЛ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ apm.launch ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХреЗ рд╢реАрдШреНрд░ рдкреНрд░рддрд┐рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП!

рд╣рд╛рдБ, рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ
[ INFO] [1620733606.153262125]: Plugin play_tune loaded
[ INFO] [1620733606.155413105]: Plugin play_tune initialized

apm_pluginlists.yaml рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

plugin_blacklist:
# common
- actuator_control
- ftp
- safety_area
- hil
# extras
- altitude
- debug_value
- image_pub
- px4flow
- vibration
- vision_speed_estimate
- wheel_odometry

plugin_whitelist: []
#- 'sys_*'

рдЕрдЬреАрдм рд╣реИ рдХрд┐ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ QGroundControl рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдЖрдк рдорд╛рд╡рд▓рд┐рдВрдХ PLAY_TUNE_V2 рд╕рдВрджреЗрд╢ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХреЗ "рдорд╛рд╡рд▓рд┐рдВрдХ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд░рдЦрд░рдЦрд╛рд╡ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдУрд╣, рджрд┐рд▓рдЪрд╕реНрдк, рдпрд╣ QGC рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ред

qgc_mavlink_messages

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ ArduSub рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

рдУрд╣ рдФрд░ рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :-)

рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХреНрдпреВрдЬреАрд╕реА рдореЗрдВ рддрдм рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬрдм рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рд╕реАрдзреЗ рдкрд┐рдХреНрд╕рд╣реЙрдХ рдХреЛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдХреНрд╕рд╣реЙрдХ рдЗрд╕реЗ рдХреНрдпреВрдЬреАрд╕реА рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@mortenfyhn PLAY_TUNE FCU рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ GCS рдкрд░ рджреЗрдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░реВрдЯ рдХрд░рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдорд╛рд╡рд░реЛрд╕ v1 рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЖрдк рдкреИрдХреЗрдЯ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрд╕реАрдпреВ рдФрд░ рдПрдордПрд╡реАрдЖрд░рдУрдПрд╕ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рд╣рдореНрдо, рдЖрдк рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Wireshark рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ)ред
рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдУрдкрдирд╕реЛрд░реНрд╕ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ ArduSub рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ :)

https://github.com/ArduPilot/ardupilot/blob/0cd97ce3d8f394e2b853b1f835abf74e6488daf5/libraries/GCS_MAVLink/GCS_Common.cpp#L3494 -L3497

рдФрд░:

https://github.com/ArduPilot/ardupilot/blob/0cd97ce3d8f394e2b853b1f835abf74e6488daf5/libraries/AP_Notify/ToneAlarm.cpp#L450 -L469

рдФрд░:

https://github.com/mavlink/mavros/blob/8b9a32ac323e79cef826ee5f39aeb07a1162d240/mavros_extras/src/plugins/play_tune.cpp#L28 -L31

рддреЛ: рдкрд░рд┐рд╡рд╛рд░ рдХрд▓реНрдпрд╛рдг PLAY_TUNE рдЪрд╛рд╣рддрд╛ рд╣реИ, рдкреНрд▓рдЧрдЗрди PLAY_TUNE_V2 рднреЗрдЬрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдкреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрджреЗрд╢ рдЪрдпрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ (рд╢реБрд░реБрдЖрддреА-рдЕрдиреБрдХреВрд▓) рддрд░реАрдХрд╛ рд╣реИ?
рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╕реНрдерд╛рди рдХрд╣рд╛рдБ рд╣реЛрдЧрд╛?

рдореИрдВ рд╢рд╛рдпрдж рд╕рд╛рджреЗ PLAY_TUNE рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред @vooon , рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдиреАрддрд┐ рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рдПрдХ рдирдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд▓рдЪрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдкрдврд╝рддрд╛ рд╣реИ ~play_tune рд▓рд┐рдП mavros_msgs/PlayTune -> mavlink PLAY_TUNE, рдФрд░ ~play_tune_v2 рд▓рд┐рдП mavros_msgs/PlayTuneV2 -> mavlink PLAY_TUNE_V2. рд▓реЗрдХрд┐рди рдпрд╣ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛, рдЬреЛ v2 рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП ~play_tune рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдореИрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ ~play_tune рдкрд░ v1 рдпрд╛ v2 рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд╡рд▓рд┐рдВрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реВрдВрдЧрд╛ред

@mortenfyhn рдЪреВрдВрдХрд┐ рд╣рдо 1.0 рдЪрд░рдг рдореЗрдВ рд╣реИрдВ, рдореИрдВ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджреЗрд╢ рдХреЗ рдЪреБрдбрд╝реИрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкрд░рдо рдкреНрд▓рд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

рдРрд╕рд╛ рдХреБрдЫ:

void connection_cb() {
  int new_ver = 0
  if (nh.getParam("message_version", new_ver) {
    // check 1 vs 2
  } 
  if (new_ver == 0) {
    new_ver = m_uas->is_ardupilotmega() ? 1 : 2;
  }

  message_version = new_ver;
}

@mortenfyhn рдЪреВрдВрдХрд┐ рд╣рдо 1.0 рдЪрд░рдг рдореЗрдВ рд╣реИрдВ, рдореИрдВ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

:+1:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдореИрдВ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдХрд░реВрдБрдЧрд╛:

  • рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВред
  • рдпрджрд┐ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВред
  • рдпрджрд┐ v1/v2 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдпрджрд┐ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ m_uas->is_ardupilotmega() == true , рддреЛ v1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рд╛рдВ, рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 0 == рдСрдЯреЛ (рдПрдкреАрдПрдо рдХреЗ рд▓рд┐рдП v1/рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП v2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реИред

рдЖрд╣, рд╕рд╛рде рд╣реА, рд╣рдореЗрдВ рдХреЗрд╡рд▓ PlayTuneV2.msg рдХреЛ PLAY_TUNE рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрд╕ рдкреНрд░рд╛рд░реВрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ == рдПрдордПрдордПрд▓ (рдПрдкреАрдПрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди), рдлрд┐рд░ рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдВ (рдЫрджреНрдо рдХреЛрдб):
```
PLAY_TUNE рдкреАрдЯреА{};

рдорд╛рд╡рд▓рд┐рдВрдХ :: рд╕реЗрдЯ_рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдкреАрдЯреА рдЯреНрдпреВрди, рдЯреНрдпреВрди-> рдЯреНрдпреВрди);
рдорд╛рд╡рд▓рд┐рдВрдХ :: set_string_z (pt.tune2, рдЯреНрдпреВрди-> рдЯреНрдпреВрди [pt.tune.size():]);
``

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕