69 lines
2.5 KiB
Bash
69 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
||
# Проверка собранного образа: на месте ли пакеты, сообщения, зависимости.
|
||
# Запускается внутри контейнера, окружение ROS уже поднято точкой входа.
|
||
set -u
|
||
|
||
echo "=== пакеты ==="
|
||
ros2 pkg list | grep -i flyguard || echo " НЕТ пакетов flyguard"
|
||
|
||
echo
|
||
echo "=== исполняемые ==="
|
||
ros2 pkg executables flyguard || echo " НЕТ исполняемых"
|
||
|
||
echo
|
||
echo "=== сообщение ObstacleStatus ==="
|
||
ros2 interface show flyguard_msgs/msg/ObstacleStatus 2>&1 | grep -v '^#' | grep -v '^$' | head -12
|
||
|
||
echo
|
||
echo "=== python-зависимости ==="
|
||
python3 - <<'PY'
|
||
import numpy, scipy
|
||
print("numpy", numpy.__version__, "| scipy", scipy.__version__)
|
||
try:
|
||
import cv2
|
||
print("opencv", cv2.__version__)
|
||
except Exception as e:
|
||
print("opencv НЕТ:", e)
|
||
PY
|
||
|
||
echo
|
||
echo "=== импорт конвейера ==="
|
||
python3 - <<'PY'
|
||
from flyguard.pipeline import FlyGuard, Params
|
||
from flyguard.mushroom_body import MushroomBody
|
||
from pathlib import Path
|
||
import glob
|
||
fg = FlyGuard(Params())
|
||
print("конвейер импортируется, стадий в параметрах:", len(Params().__dataclass_fields__))
|
||
hits = glob.glob("/opt/ros/**/flyguard/artifacts/mushroom_body.npz", recursive=True) \
|
||
+ glob.glob("/opt/flyguard/**/mushroom_body.npz", recursive=True)
|
||
if hits:
|
||
mb = MushroomBody.load(hits[0])
|
||
print(f"память тоннеля: {hits[0]}")
|
||
print(f" клеток Кеньона {mb.cfg.n_kc}, активных {mb.n_active}, "
|
||
f"обучена на {mb.n_seen} примерах, признаков {mb.n_pn}")
|
||
else:
|
||
print("память тоннеля НЕ НАЙДЕНА в образе")
|
||
from flyguard.mbon_readout import MbonReadout
|
||
hits = glob.glob("/opt/ros/**/flyguard/artifacts/mbon_readout.npz", recursive=True) \
|
||
+ glob.glob("/opt/flyguard/**/mbon_readout.npz", recursive=True)
|
||
if hits:
|
||
rd = MbonReadout.load(hits[0])
|
||
print(f"считывание MBON: {hits[0]}")
|
||
print(f" клеток Кеньона {rd.cfg.n_kc}, признаков {rd.n_pn}")
|
||
else:
|
||
print("считывание MBON НЕ НАЙДЕНО в образе")
|
||
PY
|
||
|
||
echo
|
||
echo "=== rosbag ==="
|
||
if ros2 bag --help >/dev/null 2>&1; then
|
||
echo "ros2 bag доступен"
|
||
python3 -c "import rosbag2_py; print('rosbag2_py ok')" 2>&1 | tail -1
|
||
else
|
||
echo "ros2 bag НЕДОСТУПЕН"
|
||
fi
|
||
|
||
echo
|
||
echo "=== launch-файл ==="
|
||
ros2 launch flyguard detect.launch.py --show-args 2>&1 | head -20
|