ALDialog/QiChat 메모

ALDialog/QiChat에 가능성을 느꼈기 때문에 메모입니다.

ALDialog/QiChat 개요





Choregraphe에 Dialog 상자를 배치하면,QiChat 라는 스크립트에 의해 Pepper군의 대화 등을 제어할 수 있다.
잘 사용하는 기본적인 QiChat 문장을 메모.

concept



대화 패턴을 선언하는 데 사용.
변수로서 대화의 패턴을 넣어 두는 이미지.
예:

스크립트
...
concept:(yes) [はい いいですよ]
u:(~yes) やったー
...
[] 안에 넣어 여러 패턴을 등록할 수 있다.~ 를 붙이면 concept 의 내용을 가져온다.

결과
Human: はい (100%)
Robot: やったー
Human: いいですよ (100%)
Robot: やったー

proposal



Pepper군에게 말하는 말을 함수화할 수 있는 신택스.
다음과 같이 취급한다.proposal: %hoge Pepperです、こんにちは( % 다음에 태그명으로 태그를 붙일 수 있다)

^nextProposal



다음 proposal를 가져옵니다.
예:

스크립트
...
proposal: 1番目
proposal: 2番目
proposal: 3番目
u:(こんにちは) ^nextProposal
...

결과
Human: こんにちは (100%)
Robot: 1番目
Human: こんにちは (100%)
Robot: 2番目
Human: こんにちは (100%)
Robot: 3番目

^previousProposal



한 개 전에 proposal를 가져온다.
(주: ^nextProposal 와 같이 앞으로 가는 동작은 아니다.)
예:

스크립트
...
proposal: 1番目
proposal: 2番目
proposal: 3番目
u:(こんにちは) ^nextProposal
u:(こんばんは) ^previousProposal
...

결과
Human: こんにちは (100%)
Robot: 1番目
Human: こんにちは (100%)
Robot: 2番目
Human: こんばんは (100%)
Robot: 1番目
Human: こんばんは (100%)
Robot: 2番目
Human: こんばんは (100%)
Robot: 1番目

^sameProposal



방금 전과 같은 proposal를 가져온다.
예:

스크립트
...
proposal: 1番目
proposal: 2番目
proposal: 3番目
u:(こんにちは) ^nextProposal
u:(こんばんは) ^previousProposal
u:(おはよう) ^sameProposal
...

결과
Human: こんにちは (100%)
Robot: 1番目
Human: おはよう (100%)
Robot: 1番目
Human: おはよう (100%)
Robot: 1番目

^activate(태그 이름), ^deactivate(태그 이름)



태그가 붙은 proposal 의 유효화와 무효화를 실시한다.
예:

스크립트
...
proposal: こんにちは
proposal: %hoge おはよう
proposal: こんばんは
u:(こんにちは) ^nextProposal
u:(おはよう) ^deactivate(hoge) 今は朝では無いですよね
...

결과
Human: こんにちは (100%)
Robot: こんにちは
Human: おはよう (100%)
Robot: 今は朝では無いですよね
Human: こんにちは (100%)
Robot: こんばんは

^goto(태그 이름), ^gotoReactive(태그 이름)


% 에 의해 태그가 붙은 문장을 가져온다.
(참고: ^goto 한 번만.)
예:

스크립트
...
proposal: %hoge Pepperです
u:(こんにちは) こんにちは ^goto(hoge)
u:(おはよう) おはよう ^gotoReactive(hoge)
...

결과
Human: こんにちは (100%)
Robot: こんにちはPepperです
Human: こんにちは (100%)
Robot: こんにちは
Human: おはよう (100%)
Robot: おはようPepperです
Human: おはよう (100%)
Robot: おはようPepperです

^gotoRandom(태그명)



같은 태그가 붙은 문장을 랜덤하게 가져온다.
(주 : 이쪽도 한 번 가져온 문장은 가져 오지 않는다)
예:

스크립트
...
proposal: %hoge Pepper1です
proposal: %hoge Pepper2です
proposal: %hoge Pepper3です
u:(こんにちは) こんにちは ^gotoRandom(hoge)
...

결과
Human: こんにちは (100%)
Robot: こんにちはPepper3です
Human: こんにちは (100%)
Robot: こんにちはPepper1です
Human: こんにちは (100%)
Robot: こんにちはPepper2です
Human: こんにちは (100%)
Robot: こんにちは

include



외부 주제 파일을 가져옵니다.
정리할 수 있어 매우 편리.
예:

스크립트

hoge_jpj.top
...
proposal: Pepperです
proposal: 百万馬力ですよ!
...

main_kr.top
...
include: hoge_jpj.top
u:(こんにちは) ^nextProposal
...

결과
Human: こんにちは (100%)
Robot: Pepperです
Human: こんにちは (100%)
Robot: 百万馬力ですよ!

서브 규칙



예:

스크립트

u:(こんにちは) こんにちは、今日の体調はどうですか?
    u1:(~good) それは良かったです。
    u1:(~bad) お気の毒に、どこが悪いですか?
        u2:(e:Dialog/NotUnderstood) $Dialog/LastInput が悪いのですか。
                                    $Dialog/LastInput が良くなる情報を表示します。
                                    $health=$Dialog/LastInput

결과

Human: こんにちは (100%)
Robot: こんにちは、今日の体調はどうですか?
Human: 辛いです (100%)
Robot: お気の毒に、どこが悪いですか?
Human: 頭 (100%)
Robot: 頭が悪いのですか。頭が良くなる情報を表示します。


위의 예와 같이 u: 뿐만 아니라,u1: , u2: 와 같이 u 뒤에 숫자를 추가하여
대화의 조건 분기를 할 수 있고, 자연스러운 대화의 흐름을 실현할 수 있다.

proposal: 今日の体調はどうですか?
    u1:(~good) それは良かったです。
    u1:(~bad) お気の毒に。


위와 같이 proposal 이후에도 사용할 수 있다.

스크립트의 맨 아래 줄처럼 변수에 대화 내용을 넣어 Dialog다음 상자에 값을 전달할 수 있습니다.
값을 전달하고 그 내용에 따라 처리할 수 있다.
(참고: 대화 입문 (Pepper TechFes 기술 세션) / 상자 출력 )

소감


proposal 주변과 concept 변수를 사용하면 일련의 대화의 흐름은 간단하게 할 수 있을 것 같다.
상당히 버릇이있는 스크립트이므로 테스트를 반복하면서 구현이 될 것 같습니다 ...
아직 세세한 곳에 손이 닿을 것 같은 신택스가 있으므로 공부하는 대로 갱신합니다.

참고



대화 입문 (Pepper TechFes 기술 세션)QiChat 를 사용하여 대화와 연동하여 모션을 움직이는 방법 등

Dialog 및 메모리 이벤트 (Dialog 응용)Dialog 의 메모리 이벤트나 QiChat 내에서 메모리 이벤트를 가져오는 방법 등

pepper와의 대화를 진화시키는 QiChat-Syntax 정리(자신용 메모)
일본어판 공식 문서라고 해도 좋은 신택스의 소개량입니다.

QiChat - Table of ContentQiChat 공식 문서(영어)

좋은 웹페이지 즐겨찾기