Skip to main content

Python API library for SimTech simcomplex (autonomous ship handling emulating system)

Project description

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

Зависимости

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ashapi-1.0.0.tar.gz (122.1 kB view hashes)

Uploaded Source

Built Distribution

ashapi-1.0.0-py3-none-any.whl (74.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page