From 5d353125d2fc8314771418e5fcfa1a5a322836d8 Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Thu, 9 Aug 2018 19:11:45 +0300 Subject: [PATCH] docs: add some useful snippets --- docs/SUMMARY.md | 1 + docs/snippets.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 6f714d52..16666eb4 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -32,6 +32,7 @@ * [Использование 3G-модема](3g.md) * [Устройство сети RPi](network.md) * [Работа с логами PX4](flight_logs.md) +* [Протокол MAVLink](mavlink.md) * Учебник * [Теория и видеоуроки](lessons.md) * [Учебно-методическое пособие](metod.md) diff --git a/docs/snippets.md b/docs/snippets.md index 53bd4690..a9ee0403 100644 --- a/docs/snippets.md +++ b/docs/snippets.md @@ -75,6 +75,8 @@ while True: Рассчет общего угла коптера к горизонту: +TODO: fix + ```python telem = get_telemetry() @@ -105,6 +107,58 @@ while not rospy.is_shutdown(): --- +Пример подписки на топики из MAVROS: + + +```python +from geometry_msgs.msg import PoseStamped, TwistStamped +from sensor_msgs.msg import BatteryState +from mavros_msgs.msg import RCIn + +# ... + +def state_update(pose): + # Обработка новых данных о позиции коптера + pass + +# Остальные функции-обработчики +# ... + +rospy.Subscriber('/mavros/local_position/pose', PoseStamped, pose_update) +rospy.Subscriber('/mavros/local_position/velocity', TwistStamped, velocity_update) +rospy.Subscriber('/mavros/battery', BatteryState, battery_update) +rospy.Subscriber('mavros/rc/in', RCIn, rc_callback) +``` + +Информацию по топикам MAVROS см. по [ссылке](mavros.md). + +--- + +Пример отправки произвольного [MAVLink-сообщения](mavlink.md) коптеру: + +```python +# ... + +from mavros import mavlink +from pymavlink import mavutil + +# ... + +mavlink_pub = rospy.Publisher('mavlink/to', Mavlink, queue_size=1) + +# Отправка сообщения HEARTBEAT: + +hb_mav_msg = mavutil.mavlink.MAVLink_heartbeat_message( + mavutil.mavlink.MAV_TYPE_GCS, 0, 0, 0, 0, 0) +hb_mav_msg.pack(mavutil.mavlink.MAVLink('', 2, 1)) +hb_ros_msg = mavlink.convert_to_rosmsg(hb_mav_msg) + +mavlink_pub.publish(hb_ros_msg) + +``` + +--- + Реакция на переключение режима на пульте радиоуправления (может быть использовано для запуска автономного полета, см. [пример](https://gist.github.com/okalachev/b709f04522d2f9af97e835baedeb806b)): ```python