Пакет dwm1000_pose состоит из двух нод: map публикует карту маяков, трансформации TF, и маркеры визуализации, pose публикует позицию коптера относительно карты маяков.
Для расчета позиции коптера используется алгоритм трилатерации в виде системы нелинейных уравнений. Решение данной системы производится с помощью алгоритма Левенберга-Марквардта.
Чтобы запустить систему позиционирования:
roslaunch dwm1000_pose sample.launchpose публикует рассчитанную позицию на основе расстояний от коптера до маяков с помощью алгоритма трилатерации.
dwm1000/beacon_data(dwm1000_msgs/BeaconDataArray) – список расстояний от маяков до коптераrangefinder/range(sensor_msgs/Range) – расстояние от коптера до пола
mavros/vision_pose/pose(geometry_msgs/PoseStamped) – рассчитанная позиция коптера
map публикует карту маяков
map– путь к текстовому файлу со списком маяков
Файл карты имеет один маркер на строку со следующим форматом строки:
marker_id x y z yaw pitch roll
/dwm1000/visualization_anchor(visualization_msgs/MarkerArray) – визуализация карты маркеров для rviz
-
<map>=><anchor_map>– положение карты маяков -
<map>=><anchor><id>– положение маяков