目的
Pepperを移動させるアプリを作るために、関連情報を整理し、メモします。
簡単な移動
まず、第一歩の目標としてPepperを動かす。
前提
- Pepperの周囲に十分のスペースがあること。
- 充電口のフタを閉めっていること。
必要なObjectsやActions
-
Object:Frame 位置情報を表すオブジェクト
- Robot Frame: ロボット自身の位置情報
- Free Frame: 任意の位置情報(移動先を指定する時に使う)
- Object:Transform 移動ルートを表すオブジェクト、
- Action:GoTo 移動アクション
移動させる
Gotoアクションに移動先の位置情報を指定すれば、その位置に移動できます。
今回はロボットの1メートル先を目標として、移動させてみます。
1. ロボットの位置情報を取得
val actuation: Actuation = qiContext.actuation
val robotFrame: Frame = actuation.robotFrame()
2. 移動ルートを作成
val transform = TransformBuilder.create().fromXTranslation(1.0)
3. 移動先の位置情報を作成
val targetFrame: FreeFrame = qiContext.mapping.makeFreeFrame()
targetFrame.update(robotFrame, transform, 0L)
4. Gotoアクションを作成し、実行する
val goTo = GoToBuilder.with(qiContext)
.withFrame(targetFrame.frame())
.build()
val goToFuture: Future<Void> = goTo.async().run()
goToアクションに関する感想
goToアクションに関する感想
- 障害物を自動的に回避できますので、移動先へ真直ぐに進行するではありません。
- 移動する時に地面の状態や、Pepperのハードより、最後の着地は想定した目標位置とズレが存在します。
- 途中で何かの原因で移動を完了できない場合があります。(大きな原因は障害物)
- 処理が中断されば場合に、再開できない時もある。(障害物に囲まれた、または前回の処理はまだキャンセルされてないなど)