Інтеграція UGV
ROS2 наземні машини в Lisa 26
Можливості
Доставка боєприпасів та медикаментів: 20-50 кг вантажопідйомність на платформах типу Clearpath Husky або Milrem THeMIS. CASEVAC: евакуація поранених під вогнем. ISR: наземна платформа з камерами у зонах де повітряні дрони заглушені. Ретрансляція: MANET вузол на землі де потрібно покриття.
UGV повільний (5-10 км/год) і вразливий (немає бронезахисту). Не замінює людей — доповнює для завдань де ризик для людей невиправдано високий або де людина не потрібна (доставка вночі по знайомому маршруту).
ROS2 + Lisa 26 інтеграція
MAVLink bridge між ROS2 та Lisa 26: UGV транслює позицію, швидкість, батарею, статус місії через MAVLink GLOBAL_POSITION_INT. Lisa 26 бачить UGV як ще один вузол у мережі. Командир може призначити UGV місію з планшета: "доставити ящик 1 на координату X."
Обмеження: UGV потребує прохідного маршруту (дороги, стежки). В густому лісі або болоті — непрохідний. Зимою: гусеничний UGV краще колісного але повільніший. LiDAR у снігопаді: шум від сніжинок, дальність падає з 30м до 10м.
← Частина Ekf3 Sensor Fusion
Implementation
# pip install numpy
# UGV Integration — ROS2 to Lisa 26 via MAVLink Bridge
# pip install pymavlink
import time
import json
class UGVBridge:
"""Bridge ROS2 UGV navigation to Lisa 26 COP."""
def __init__(self, ros2_node, mavlink_conn):
self.ros2 = ros2_node
self.mav = mavlink_conn
self.payload_kg = 0
self.battery_pct = 100
def send_position_to_lisa26(self):
"""Send UGV position as ground vehicle on Lisa 26 COP."""
pose = self.ros2.get_current_pose()
self.mav.mav.global_position_int_send(
int(time.time() * 1000),
int(pose.latitude * 1e7),
int(pose.longitude * 1e7),
int(pose.altitude * 1000),
0, # relative altitude
int(pose.vx * 100), int(pose.vy * 100), int(pose.vz * 100),
int(pose.heading * 100)
)
def receive_waypoint_from_lisa26(self):
"""Lisa 26 sends delivery waypoint to UGV."""
msg = self.mav.recv_match(type='MISSION_ITEM', blocking=True, timeout=5)
if msg:
return {"lat": msg.x, "lon": msg.y, "action": "deliver"}
return None
def navigate_to(self, lat, lon):
"""ROS2 Nav2 autonomous navigation with obstacle avoidance."""
goal = self.ros2.create_nav_goal(lat, lon)
self.ros2.navigate(goal) # Uses LiDAR SLAM + obstacle avoidance
while not self.ros2.goal_reached():
self.send_position_to_lisa26()
time.sleep(1)
# Lisa 26 sees UGV as blue ground icon on COP
# Commander can assign delivery missions from tablet
Зовнішнє джерело: Obemannat markfordon – Wikipedia
Lisa 26 інтегрується з ROS 2 через DDS (Data Distribution Service). UGV публікує позицію, стан акумулятора і сенсорні дані як ROS 2 topics. Lisa 26 підписується і відображає UGV на COP. Команди (маршрутні точки, зупинка) передаються як ROS 2 services. Підтримувані платформи: THeMIS (Milrem), ClearPath Husky, та DIY колісні шасі з Pixhawk і companion computer.
GPS-denied навігація для UGV: LiDAR SLAM (Simultaneous Localization and Mapping) з Velodyne Puck Lite (€4 000) або Intel RealSense L515 (€350). UGV будує 3D-карту середовища в реальному часі і навігує без GPS. Точність: до 5 см у структурованому середовищі (будівлі, ліс). Lisa 26 отримує карту через ROS 2 і накладає її на COP як додатковий шар наземної обстановки.
Інтеграція з Lisa 26 CASEVAC: UGV отримує маршрутну точку від Lisa 26 (позиція пораненого), навігує автономно через LiDAR SLAM, і повертається до медичного пункту. Весь маршрут відображається на COP в реальному часі. Медик на пункті збору бачить ETA (очікуваний час прибуття) і готує обладнання. Fallback при втраті зв'язку: UGV продовжує за останнім відомим маршрутом до точки призначення.
Пов'язані розділи
Джерела
FSG-A документація v2.0. Український досвід 2022-2026.