Search code examples
pythonnao-robotpepperchoregraphe

What is the right way to package and to deploy QiMessaging Service application to Pepper/Nao robot?


I'm confused about the right process of packaging and deploying a custom Service application to a robot. I'm using Python.

  • I read this document but it looks more like a guide for App creation.
  • At the other hand I tried robot-jumpstarter that looks very promising. I used python jumpstart.py python-service my-package-name MyServiceName command to generate a service template. I could open and install the Service trough a Choregraphe but I didn't find a CLI tool to do this. Moreover the project structure looks different from this and the robot-jumpstarter generates a lot of code. I want to start with something more simple and to complicate if necessary.

I would like to know what is the right QiMessaging service project structure and how to package and deploy to a robot with CLI tools. Now I'm loading the services with autoload.ini.

Edit: I found this guide.


Solution

  • I made robot-jumpstarter, and yes, it has a fair amount of boilerplate code to make debugging more easy etc.

    If you want a bare-bones service, How to write a qimessaging service in the documentation covers that; there's also the tutorial you already found that covers that and in addition also how to use qipkg, which is indeed the standard command-line way of packaging a service. The examples given in those two docs are indeed pretty much as simple as can get.

    The minimum structure should be a manifest.xml, a .pml file, and your python script (and maybe an icon for the package; heavily recommended at least, apps without icons are ugly).

    You should also be aware that:

    • the word "service" can refer either to a NAOqi service (that registers, that you can call with qicli etc. and that is managed by the ServiceDirectory service), or to a systemd service, which is basically a standalone process (that may or may not contain a NAOqi service), that is managed by ALServiceManager
    • often when one makes a NAOqi application in Python, the core code of the application is in one or several NAOqi services contained in the application's package ("application" and "service" are not mutually exclusive categories)