Last updated:
0 purchases
ashapi 1.0.0
ashapi
ASHAPI - Autonomous Ship Handling Application Programming Interface - компонент Шлюз программного интерфейса Имитационного Программного Комплекса Автономного Судовождения (ИПКАС).
Шлюз программного интерфейса (ШПИ) обеспечивает открытость системы компьютерного моделирования сценариев автономного судовождения для сторонних разработчиков.
Функциональность ШПИ дублирует функциональность компонента Испытатель, однако вместо предоставления графического интерфейса для управления исследованием вручную, ШПИ предоставляет программный интерфейс для реализации автоматизированных сценариев, осуществляющих компьютерное моделирование, загрузку, сбор и анализ данных, управление судном и другие возможности.
ШПИ является клиентом сервера, имеет доступ ко всем параметрам внутреннего двустороннего протокола передачи данных, и предназначен для передачи данных симуляции стороннему приложению, приема управляющих команд и данных от стороннего приложения для управления симуляцией.
ШПИ позволяет подключать к объектам сцены симуляции алгоритмы автономного судовождения, написанные на языках высокого уровня, запускать и отлаживать их. ШПИ предоставляет функции для управления временем симуляции, добавления моделей судов в сцену, считывания показаний датчиков и состояния моделируемых систем судна, управление движителями, рулями и другими исполнительными устройствами, загрузки данных областей маневрирования, маршрутов и т.п.
Ключевой особенностью ШПИ является возможность перезагрузки или переключения алгоритмов в любой момент без необходимости перезагрузки текущей сцены симуляции, к которой подключен интерфейс. Такая возможность ускоряет цикл «изменение-отладка», поскольку состояние сцены симуляции не уничтожается и может быть использовано снова в точке, где произошел сбой отлаживаемой программы или требуется переключение на другую систему управления.
Пример использования
Для написания собственного сценария проще всего отнаследоваться от определённого в ШПИ класса SimcomplexTask, переопределить пару волшебных методов, подписаться на события симуляции и выполнить задание. В примере ниже показано как распечатать перечень объектов, доступных в симуляции:
from ashapi import Config, SimcomplexTask, local_server
class SceneObjectsTask(SimcomplexTask):
def init(self, path):
self.scene_path = path
def setup(self):
self.done = False
print(f"Opening scene '{self.scene_path}'")
self.scene.open(
self.scene_path,
self.on_scene_opened
)
def on_scene_opened(self, response):
print(f"Opened scene: '{self.scene_path}'")
print(f"Opened scene contains {len(self.scene.objects)} object(s).")
if self.scene.objects:
print("Objects:")
for o in self.scene.objects:
print(f' {o.uid}: {o.code}, "{o.name}"')
self.done = self.scene.path == self.scene_path
self.complete()
def result(self):
return self.done
if __name__ == '__main__':
config = Config.localhost()
with local_server(config):
task = SceneObjectsTask(config, "api/all_models_nv.stexc")
result = task.run()
Установка
$ pip install ashapi
Зависимости
Python >= 3.8
aiohttp
simcomplex (ИПКАС - Имитационный Программный Комплекс Автономного Судовождения)
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.