Pepper Robot - getImageLocal выдает ошибку

При попытке получить изображение от робота с помощью getImageLocal я получаю сообщение об ошибке. И это несмотря на то, что я запускаю код прямо на роботе. Сообщение об ошибке:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    video_device.getImageLocal(handle)
RuntimeError: Uncaught error: Pointer serialization not implemented

Код, который я использовал для получения этой ошибки, приведен ниже (я получаю ту же ошибку при использовании C ++):

import qi
import sys

if __name__ == "__main__":
    app = qi.Application(sys.argv)

    # start the eventloop
    app.start()

    video_device = app.session.service("ALVideoDevice")
    handle = video_device.subscribe('handler', 0, 0, 10)

    video_device.getImageLocal(handle)
    video_device.releaseImage(handle)

В настоящее время я запускаю этот код, используя:

python test.py --qi-url=tcp://pepper.local

Мне было бы очень интересно узнать, что я здесь делаю неправильно, или есть более серьезная основная проблема.


person Gavin Suddrey    schedule 20.06.2017    source источник


Ответы (1)


Даже если вы запустите этот код непосредственно на роботе, вы не сможете получить это изображение с помощью кода Python. Тот факт, что вы получаете ту же ошибку при использовании C ++, действительно очень беспокоит ...

Если вы хотите работать на Python, вам следует рассмотреть возможность использования метода getImageRemote () для получения изображений. Это решение работает, если ваш код работает на роботе, но также и на удаленном компьютере.

Если вы хотите получать изображения быстрее, вы также можете рассмотреть возможность использования GStreamer (вот ссылка на сообщение, описывающее, как его использовать. Это действительное решение для Nao, но его также можно использовать для Pepper).

Какую версию Naoqi вы используете?

person Maxime BUSY    schedule 21.06.2017
comment
Единственный возможный способ использования getImageLocal - запуск из того же пространства памяти. Средствами из C ++ ваш модуль должен быть кросс-скомпилирован как разделяемая библиотека (.so), а затем запускаться из робота с помощью ALLauncher. - person Alexandre Mazel; 21.06.2017
comment
Спасибо @AlexandreMazel. Вы правы, мне нужно было написать модуль, чтобы метод заработал. Ваше здоровье! - person Gavin Suddrey; 23.06.2017