Using qicli commands¶
qicli commands allows you to:
- see information,
- use methods, and
- watch signals.a
How to run qicli¶
Prerequisite¶
Make sure NAOqi is running.
Running qicli¶
Two possible methods:
Connect on SSH to your robot.
Use qicli on your computer and connect remotely on a robot.
$ ./qicli cmd args --qi-url IPofYourRobot
qicli info¶
qicli info is used to display:
- a list of services,
- a detailed list of methods and signals of specific services,
- information about:
- method parameters, return type or return type members,
- signal type,
- property type or property type members.
With no argument, it lists services:
$ qicli info
> 001 [ServiceDirectory]
002 [LogManager]
003 [ALFileManager]
004 [ALMemory]
005 [ALLogger]
...
This is equivalent to:
$ qicli info --list
$ qicli info -l
$ qicli # Without any argument
With a service name as argument, it gives:
$ qicli info ServiceDirectory
> 001 [ServiceDirectory]
* Info:
machine 37814cee-e5a8-4183-9862-65d10460f0e5
process 3665
endpoints tcp://127.0.0.1:9559
tcp://198.18.0.1:9559
tcp://10.2.1.177:9559
* Methods:
100 service (String)
101 services List<> ()
102 registerService UInt32 ()
103 unregisterService Void (UInt32)
104 serviceReady Void (UInt32)
105 updateServiceInfo Void ()
108 machineId String ()
* Signals:
106 serviceAdded (UInt32,String)
107 serviceRemoved (UInt32,String)
There is always 3 parts:
- Info: general information about service,
- Methods: list of methods,
- Signals: list of signals.
The 2 last parts may be empty.
Methods and Signal follow the format:
[id] name [return_type] ([parameters_types...])
If the name of the service is a bit long, identifiers can be used instead:
$ qicli info ServiceDirectory
$ qicli info 1
Command also accept several services’ names simultaneously:
$ qicli info ServiceDirectory LogManager
> 001 [ServiceDirectory]
* Info:
machine 37814cee-e5a8-4183-9862-65d10460f0e5
process 3665
endpoints tcp://127.0.0.1:9559
tcp://198.18.0.1:9559
tcp://10.2.1.177:9559
* Methods:
100 service (String)
101 services List<> ()
102 registerService UInt32 ()
103 unregisterService Void (UInt32)
104 serviceReady Void (UInt32)
105 updateServiceInfo Void ()
108 machineId String ()
* Signals:
106 serviceAdded (UInt32,String)
107 serviceRemoved (UInt32,String)
002 [LogManager]
* Info:
machine 37814cee-e5a8-4183-9862-65d10460f0e5
process 3665
endpoints tcp://127.0.0.1:9559
tcp://198.18.0.1:9559
tcp://10.2.1.177:9559
* Methods:
100 log Void (LogMessage)
101 getListener Object ()
102 addProvider Int32 (Object)
103 removeProvider Void (Int32)
* Signals:
Globing can also be used:
$ qicli info "LogMa*"
> 002 [LogManager]
* Info:
machine 37814cee-e5a8-4183-9862-65d10460f0e5
process 3665
endpoints tcp://127.0.0.1:9559
tcp://198.18.0.1:9559
tcp://10.2.1.177:9559
* Methods:
100 log Void (LogMessage)
101 getListener Object ()
102 addProvider Int32 (Object)
103 removeProvider Void (Int32)
* Signals:
The parameter can also be the name of a service followed by the name of a member of that service separated by a dot. In this case it displays information about that member.
For example, used with the name of a method, it displays information about its return type and its parameters:
$ qicli info ServiceDirectory.service
> [ServiceDirectory.service]
100 service ServiceInfo (String)
return type ServiceInfo
members
name String
serviceId UInt32
machineId String
processId UInt32
endpoints List<String>
sessionId String
parameters
1: String
Used on a property or a signal, it displays information about its type:
$ qicli info ALMood.valenceLevel
> [ALMood.valenceLevel]
114 valenceLevel ValueConfidence<float>
members
value Float
confidence Float
$ qicli info ALMood.currentFocusedUserMood
> [ALMood.currentFocusedUserMood]
112 currentFocusedUserMood (String)
signal type(s)
1: String
This syntax can also be chained to get information about a member submember:
$ qicli info ALMood.personStateFromUserSession.bodyLanguageState
> [ALMood.personStateFromUserSession.bodyLanguageState]
BodyLanguageState
members
ease BodyLanguageEase
$ qicli info ALMood.personStateFromUserSession.bodyLanguageState.ease
> [ALMood.personStateFromUserSession.bodyLanguageState.ease]
BodyLanguageEase
members
level Float
confidence Float
Extra options:
--show-doc
Show documentation for methods, signals and properties.
--hidden
Show hidden services, methods, signals and properties.
--raw-signature
Show the raw signature.
-z
Prints the result in a parseable format
qicli call¶
This command allows you to call service’s methods ans signals.
Returned values follow json format.
$ qicli call ALFileManager.ping
> ALFileManager.ping: true
More complex return values can also be returned.
$ qicli call ALMemory.getEventList
> ALMemory.getEventList: [ "/Preferences", "ALAnimatedSpeech/EndOfAnimatedSpeech", "ALAudioSourceLocalization/SoundLocated", "ALAudioSourceLocalization/SoundsLocated", ...]
Where
[ ... ] is a list in json.
Identifiers can also be used instead of names:
$ qicli call 4.123
> ALMemory.getEventList: [ "/Preferences", "ALAnimatedSpeech/EndOfAnimatedSpeech", "ALAudioSourceLocalization/SoundLocated", "ALAudioSourceLocalization/SoundsLocated", ...]
Several arguments can be given:
$ qicli call ServiceDirectory.service PackageManager
> ServiceDirectory.service: [ "PackageManager", 41, "4fd62363-f74d-4c6d-81d1-c1b9304c77d2", 3840, [ "tcp://10.0.252.216:34510", "tcp://127.0.0.1:34510" ], "0967f415-db38-43a4-b5a9-7ac70539891d" ]
Complex arguments (list, objects) of methods must be given in JSON with option –json.
Warning
JSON and terminals do not work well together.
$ qicli call --json ALMemory.insertListData "[[\"foo\",true],[\"bar\",1]]"
> ALMemory.insertListData: null
In order to call a hidden method, add –hidden
Extra options:
--method arg
Method’s name.
--arg arg
Method’s args.
--bench arg
Bench the call time using given iteration count.
--continue**
Continue on error.
qicli watch¶
Qicli watch is used to see when a signal is triggered.
For example, to get information each time a package is installed on your robot, use:
$ qicli watch PackageManager.onPackageInstalled
Extra options:
-s [ --signal ] arg
Service’s name.
-t [ --time ]
Print time.
--hidden
Watch hidden signals if they match the given pattern.
--continue
Continue on error.
--almemory
Watch ALMemory events.
qicli log-view¶
Qicli log-view is used to display logs.
$ qicli log-view
Extra options:
-v [ --verbose ]
Set maximum logs verbosity shown to verbose.
-d [ --debug ]
Set maximum logs verbosity shown to debug.
-l [ --level ]
arg (=4) Change the log minimum level: [0-6] (default:4). This option accept the same arguments’ format than –qi-log-level.
-f [ --filters ] arg
Set log filtering options. This option accepts the same arguments’ format than –qi-log-filters.
qicli log-send¶
Qicli log-send is used to send logs.
for sending a message:
$ qicli log-send hello
This is equivalent to:
$ qicli log-send --message hello
$ qicli log-send -m hello
To send a message with your own Message’s category (default: “qicli.qilog.logsend”):
$ qicli log-send --category MyCategory -m MyMessage
$ qicli log-send -c MyCategory -m MyMessage
Extra options:
-v [ --verbose ]
Set message verbosity to verbose.
-d [ --debug ]
Set message verbosity to debug.
-l [ --level ] arg (=4)
Change the log minimum level: [0-6] (default:4). This option accepts the same arguments’ format than –qi-log-level.