小型移動ロボット用汎用伸縮アームの開発 -...

54
大学大学院 システム ロボット アーム ( システム ) 2006 1

Transcript of 小型移動ロボット用汎用伸縮アームの開発 -...

筑波大学大学院博士課程

システム情報工学研究科修士論文

小型移動ロボット用汎用伸縮アームの開発

橋本達矢

(知能機能システム専攻)

指導教官 坪内孝司

2006年 1月

概要小型移動ロボットで接触を伴うタスクが可能になれば、その使用の幅は大きく広がる。本研究では、小型移動ロボットで壁に設置されたスイッチや引き出しを操作するためのアームの開発を行った。また、開発したアームを用いて対象物の操作を実現した。対象物は、以下のものとした。

• エレベータのスイッチ

• 電灯のスイッチ

• メールボックスの引き出し

まず、使用する小型移動ロボットとして前後進と旋回の二自由度を有する台車を選択し、この台車に搭載可能なアームの仕様を検討した。小型・軽量で、かつ広い可動範囲を有するものとして、伸縮機構により伸び縮みを行うアームを開発することとし、定めた仕様に基づいてアームの設計・製作を行った。設定した対象物の操作には、高精度のアーム位置制御が要求される。各関節において重力補償つき PI制御を行うとともに、たわみによって手先位置が目標値からずれるのを防ぐため、たわみ補償を行った。また、状況に応じた動作ができるよう、いくつかの制御モードを用意した。最後に、設定したタスクを実現するための実装を行った。対象物付近まで移動するため、測域センサを用いて周辺環境を認識した。また、アーム先端に取り付けたカメラにより対象物を認識し、位置の修正を行った。上記の要素を統合し、対象物の操作を行うロボットシステムを構築した。

目次

第 1章 はじめに 11.1 研究の背景と目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 本論文の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

第 2章 実現したいタスク 22.1 「押す」 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.1.1 エレベータのスイッチ . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.1.2 電灯のスイッチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.2 「引く」 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

第 3章 アームの仕様 53.1 使用するロボット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2 ロボットへの搭載 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.3 アームの可動範囲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.4 アームの自由度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.5 手先にかかる最大荷重 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.6 手先の精度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.7 アームの構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

第 4章 アームの設計と製作 84.1 設計指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.2 伸縮機構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.3 スライドレール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.4 ベルト、プーリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.5 各関節の駆動に必要なトルクの計算 . . . . . . . . . . . . . . . . . . . . . . . 10

4.6 モータ、減速器の選定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.7 エンドエフェクタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.8 製作したアームの仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.9 開発したアームの評価・検討 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

第 5章 アームの制御 165.1 アームのコントローラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.2 アームの座標系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

i

5.3 キネマティクス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.4 インバースキネマティクス . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.5 各関節角度の PI制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.6 重力補償 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.7 たわみ補償 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.7.1 アームのたわみ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.7.2 たわみの実測値への関数フィッティング . . . . . . . . . . . . . . . . . 24

5.7.3 たわみ関数を用いた目標値の再設定 . . . . . . . . . . . . . . . . . . . 25

5.8 負荷の認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.9 アーム駆動モードの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.10 アーム駆動の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.11 アーム制御の評価・検討 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

第 6章 対象操作 336.1 動作計画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.1.1 スイッチ操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.1.2 引き出し操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.2 システム構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.3 ナビゲーションにおける環境認識 . . . . . . . . . . . . . . . . . . . . . . . . 34

6.3.1 測域センサ URG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.3.2 最小二乗法による直線近似 . . . . . . . . . . . . . . . . . . . . . . . . 36

6.4 対象物の認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.4.1 USBカメラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.4.2 カメラキャリブレーション . . . . . . . . . . . . . . . . . . . . . . . . 38

6.4.3 画像内における対象検出 . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.4.4 位置導出方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.5 対象操作実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.5.1 スイッチ操作実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.5.2 引き出し操作実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6.6 対象操作の評価・検討 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

第 7章 おわりに 45

謝辞 46

参考文献 47

ii

図目次

2.1 エレベータのスイッチ位置(左:筑波大学第三学群 L棟、右:総合研究棟 B) 3

2.2 電灯のスイッチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3 メールボックスの引き出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1 アームの外観図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.1 伸縮機構の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.2 スライドレール(左から RSR 9N、RSR 12N、RSR 15N) . . . . . . . . . . . 10

4.3 トルク計算のモデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.4 M-1型山彦に搭載した伸縮アーム . . . . . . . . . . . . . . . . . . . . . . . . 13

4.5 振り下ろした伸縮アーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.6 上方へ伸ばした伸縮アーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.1 アームのコントローラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2 ロボットの座標系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.3 各関節における PI制御結果 (上:第一関節、中:伸縮機構、下:第二関節) . 20

5.4 PI制御に重力補償を加えた第一関節と伸縮部の制御ブロック図 . . . . . . . . 22

5.5 PI制御のみと重力補償つき PI制御との比較 (上から、アームの長さ、第一関節角度、PWM比の変化) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5.6 アームのたわみの実測値と、フィッティングした関数 . . . . . . . . . . . . . 25

5.7 たわみ補償の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.8 たわみ補償なし (上)とたわみ補償あり (下)の場合の手先位置比較 . . . . . . 28

5.9 負荷なし (上)と負荷あり (下)の場合の負荷値 . . . . . . . . . . . . . . . . . . 30

5.10 アーム駆動の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.1 スイッチ操作の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.2 引き出し操作の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.3 測域センサ URG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.4 USBカメラ QV-700N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.5 テンプレート画像 (上)とテンプレートマッチングを行った画像 (下) . . . . . 39

6.6 対象位置導出のモデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.7 エレベータによるフロア移動実験の様子 . . . . . . . . . . . . . . . . . . . . 41

6.8 走行中にURGで得られたデータ . . . . . . . . . . . . . . . . . . . . . . . . 42

iii

6.9 引き出し操作実験の様子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

iv

第1章 はじめに

1.1 研究の背景と目的

近年、ロボットはその活躍の場を様々な環境に広げつつある。例えば、家庭にはエンターテインメント性やセキュリティ機能などを備えたホームロボットが入ってきている [1][2][3]。家庭のように比較的狭い空間での動作には、小型移動ロボットが適しており、今後その需要は高まると考えられる。現在、ホームロボットの中には、家庭内の画像を携帯電話に送信したり、家電をリモコン操作したりする機能を備えたものがある。このように小型の移動ロボットでは、通信技術を用いて人間の役に立つものが多く見られるが、対象への物理的接触を伴うタスクが可能なものは少ない。もし小型移動ロボットに対象への物理的接触を伴うタスクが可能になれば、その使用の幅は大きく広がる。これまで、移動マニピュレータにより物体操作を行う研究がされてきた [4][5][6]。移動台車にマニピュレータを搭載することで、広範囲の活動が可能となり、様々な場面での活躍が期待される。物体把持には、多自由度マニピュレータが多く用いられているが、重量が大きいため、小型の移動ロボットで実現したものは少ない。一方、押す、引くという動作は、アプローチの方向が限られたものが多く、少ない自由度で実現可能である。また、動作範囲や耐荷重をある程度制限することにより、小型の移動体でも搭載できるコンパクトなメカニズムにすることができる。よって本研究では、小型移動ロボットで押す、引くなどの動作を実現するための汎用アームを開発し、このアームを用いたタスク実現を目標とする。

1.2 本論文の構成

本論文は 7章で構成されている。本章では研究の背景と目的について述べた。続く 2章では、実現したいタスクをあげる。3章では、2章で述べたタスクを実現するためのアームの仕様について検討する。4章では、仕様を満たすアームの設計と製作について述べる。5章では、開発したアームの制御系について説明する。6章では、開発したアームを用いて設定したタスクを実現するための手法について述べ、実験の評価を行う。7章では、本研究の成果をまとめる。

1

第2章 実現したいタスク

2.1 「押す」

2.1.1 エレベータのスイッチ

図 2.1にエレベータ内の様子を示す。エレベータを用いて、自律的にフロア移動を実現した例がある [7]。階段昇降ができない一般の車輪型移動ロボットにとって、人の手を借りることなくエレベータを使用し、フロア移動が可能になることは、その活動範囲を大きく広げる点で非常に有用である。この例では、多自由度マニピュレータを用いることでエレベータのスイッチ操作を実現している。もしコンパクトなアームでエレベータのスイッチ操作ができれば、小型の移動ロボットや荷物運搬ロボットにもフロア移動が可能となる。

2.1.2 電灯のスイッチ

図 2.2に電灯のスイッチを示す。巡回ロボットによる消灯や、ベッドに寝ている人の指示により部屋の電灯を消すことができると便利である。電灯のスイッチは、エレベータのスイッチに比べて小さく、操作の実現は容易ではない。よって、この対象物を操作することができれば、アームの位置制御や対象認識の正確さを示すことができる。

2.2 「引く」

図 2.3にメールボックスを示す。ロボットに引き出しの操作ができれば、遠隔地からメールボックス等の確認を行うことが可能になる。小型のロボットで引き出しの操作を行った例は見られない。よって、引き出し操作が実現すれば、ロボットの新たな可能性を提示できる。また、スイッチ操作に比べ対象に多く接触するため、対象物やロボット自身を破損しない操作方法の知見が得られる。本研究では、引き出し操作において、取っ手に手先をかけ引っ張り出す動作を「抜き動作」、引っ張り出された引き出しを元の状態にしまう動作を「差し動作」と呼ぶこととする。

2

147cm 137cm

[a] [b]

図 2.1: エレベータのスイッチ位置(左:筑波大学第三学群 L棟、右:総合研究棟 B)

130cm

15mm

20mm

図 2.2: 電灯のスイッチ

3

88cm

図 2.3: メールボックスの引き出し

4

第3章 アームの仕様

3.1 使用するロボット

本研究では、小型の移動ロボットで押す、引くという動作を実現するためのメカニズムを開発する。開発したメカニズムは、実際にロボットに搭載して評価実験を行う。このロボットには筆者の研究室で開発されたM-1タイプの山彦1を使用する。

3.2 ロボットへの搭載

山彦に搭載することを考え、汎用アームのシステム全体をコンパクトで軽量にしたい。そのためには、手先やアームを軽量化し、モータのように重量のある部品は根元付近に配置するなどの工夫が必要である。また、開発するメカニズムは、山彦の移動の妨げにならないため、前後左右へ突出しないように設置する。設置位置はロボット上面とし、床から 40cm程度の高さとなる。

3.3 アームの可動範囲

アームの可動範囲を決めるため、操作対象がどのような位置に存在するかを調査した。まず、メールボックスの引き出し (図 2.3)は床面から 88cm以内の位置にあり、使用するロボットの近傍である。次に電灯のスイッチ (図 2.2)は、ほぼ床面から 130cmの高さに設置されている。エレベータのスイッチ (図 2.1)は、複数のスイッチが縦に配置されており、その高さは床面から 110~150cmの範囲にある。以上より、本研究では床面から 150cmの高さのものまでを操作可能なアームを開発することとした。

3.4 アームの自由度

小型移動ロボットにマニピュレータを搭載する場合、ロボットの移動系の自由度を活かすことで、システム全体をコンパクトにする手法が多く用いられている。本研究でも、台車の移動系における自由度を使い、アームの自由度を減らすことでコンパクトなシステムを実現

11996年にメカトロシステムズ(株)によって設計製作された山彦。大きさは全長 370mm、全幅 322mm、全高 420mm。

5

する。本研究で使用する台車はノンホロノミックな移動体であり、直接制御できるのは前後進と旋回の 2自由度のみである。一般に、三次元空間内の対象を操作する場合、ロボットには 6自由度が必要となるため、アームには 4自由度を持たせることが考えられる。しかし、本研究では押す・引くという比較的単純な動きを行うことから、床平面上以外の 3自由度を持たせることとした。

3.5 手先にかかる最大荷重

対象を操作するため、アームの手先は対象に接触する。この時、手先には荷重がかかるため、この荷重に耐えられるような仕様にする。バネばかりを用いて、対象を操作するときにどれくらいの力が必要かを測定した。測定対象は、エレベータのスイッチ、電灯のスイッチ、引き出しとした。測定結果を表 3.1に示す。引き出し操作では、中に入っているものの質量によって引くときに必要な力が変わってくる。しかし、対象としているメールボックスに重いものを入れることはないため、500gf程度の力があれば操作可能である。よって、本研究では手先の最大荷重を 500gfとして設定し、これを基に設計を行っていく。

表 3.1: 操作に必要な力 操作に必要な力 

エレベータのスイッチ 300~500gf

電灯のスイッチ 300~400gf

引き出し 300gf~

3.6 手先の精度

図 2.2に示すように、電灯のスイッチは縦 15mm×横 20mmと非常に小さい。また、引き出しの取っ手部分に手先を引っ掛けるためにも、手先には高い位置精度が必要となる。よって、これらを操作するためにアームの手先の誤差は 5mm以下とする。

3.7 アームの構造

これまでに述べた仕様を満たす具体的なアームを検討した。先に述べたように、アームは小型の移動ロボットに搭載できるようコンパクトでなければならない反面、非常に広い可動範囲を求められる。この仕様を満たすものとしては多関節のマニピュレータ [8] [9][10][11]などが考えられるが、本研究では、はしご車等で用いられているような伸縮するアームを開発することとする。伸縮アームを使用する利点としては、以下のことが挙げられる。

6

End-effector

Arm

図 3.1: アームの外観図

• 使用しないときは収縮させることにより、コンパクトにすることができる。

• 関節が少ないため駆動用のモータが少なくて済み、低コスト・軽量化を計ることができる。また、逆運動学による関節の角度算出が容易である。

以上の条件から考案したアームの外観を図 3.1に示す。スイッチ操作や引き出しの取っ手へ引っ掛けるためのエンドエフェクタをアーム先端に備える。アームには、伸縮による自由度のほかに、ロボットへの固定部分に 1つ、エンドエフェクタとの間に 1つ、共にピッチ方向への自由度を持たせることとした。

7

第4章 アームの設計と製作

4.1 設計指針

先にも述べたように、開発するアームは小型移動ロボットに搭載する。よって、耐荷重に注意しつつ、より軽く小型の部品を使用したり、モータのように重量のある部品は根元付近に配置するなどの工夫が必要不可欠である。でるだけ軽量でコンパクトなアームにすることを念頭に置いて設計を行っていく。

4.2 伸縮機構

伸縮機構の概要を図 4.1に示す。アームは、収縮時 40cm以下・伸長時 110cm以上になるものとし、40cm程度のリンク 4段で構成する。この伸縮アームでは、1段目から 2段目を押し出す動力を利用して 3段目、4段目を押し出す仕組みになっている。アームを伸ばす際の詳細を以下に記述する。

1. 1段目に配置されたベルトをモータの動力で回転させると(図 4.1中 [a])、ベルトの一部に固定されたスライダがレール上を移動する(図 4.1中 [b])。

2. 1段目のスライダ上に 2段目のスライドレールを設置し、その両端に配置したプーリにベルトを掛ける。この 2段目のベルトの一部を 1段目に固定することで、1段目のベルトを回して 2段目のレールを押し出す際に、2段目のベルトを回転させることが出来る(図 4.1中 [c])。この回転を利用して、2段目のレール上のスライダを 1段目同様に移動させる(図 4.1中 [d])。

3. 以上の仕組みを繰り返すことで、3段目および 4段目も 2段目の動きに連動して伸縮する。

この伸縮機構の利点は、根元付近に配置したモータひとつでアームの伸縮を行えるので、アームを支える第一関節の耐荷重が小さくできることである。また、1段目から 2段目が押し出されるのに同期して 3段目および 4段目が押し出されていくので、アーム先端の位置計算が容易である。1段目 (長さ L1)から 2段目が押し出された量を nとすると、アームの全長 l

は以下の式で表される。l = L1 + 3n (4.1)

8

(1) (2) (3)

motor

Belt-holder graspingTiming-belt on First stage

[a]

[b]

Belt-holder graspingTiming-belt on Second stage

[d]

Belt-holder graspingTiming-belt on Third stage

Belt-holder graspingTiming-belt on Third stage

[c]

図 4.1: 伸縮機構の概要

4.3 スライドレール

伸縮部には、伸縮時の摩擦が少なく、かつガタが少ないものが望まれる。そこで、スライドレールを用いることとした。スライドレールは、軽量・コンパクトでありながら、様々な荷重に対して安定した精度と剛性を得ることができる。このスライドレールを 1~3段目に配置し、各段のスライドユニットがそれぞれ 1-2段目、

2-3段目、3-4段目の接続部にくるようにする。4段目はアルミ製のフレームで構成する。ここで、スライドレールを選定するためにアームにかかる荷重を求めた。アームの各接合部にかかる荷重は、アームを地面に対して水平に伸ばしたときに最大となる。この状態で、アーム先端に鉛直下向きに 1kgfの力がかかっていると仮定した場合の各接合部にかかる荷重を表4.1に示す。

表 4.1: 各接合部にかかる荷重

1-2段目間 2-3段目間 3-4段目間17.9Nm 11.0Nm 5.4Nm

アームにかかる荷重より、安全率を考慮した上で各段に用いるスライドレールを選定した。荷重に耐えられる十分な剛性を持ち、かつ軽量なタイプのものが望ましいことから、表 4.2

に示すスライドレール (THK製)を用いることとした。その概観を図 4.2に示す。ここで許容

9

表 4.2: 用いるスライドレールとその仕様

1段目 2段目 3段目

型番 RSR 15N RSR 12N RSR 9N

許容モーメント 63.1Nm 28.9Nm 18.4Nm

レール長 350mm 370mm 375mm

質量 417g 270g 147g

図 4.2: スライドレール(左から RSR 9N、RSR 12N、RSR 15N)

モーメントとは、各スライダにおける許容モーメントを指す。

4.4 ベルト、プーリ

ベルトには、タイミングベルト (つばき製)を用いる。タイミングベルトは、ワイヤに比べ剛性が高く、高精度の位置制御に適している。ベルトは、メカニズムをコンパクトにするために小さく曲げられるものが良い。しかし、小さい径に曲げると心線が折れてしまうという問題があり、曲げ限度の直径はベルトピッチの 4倍以上である。そこで、最もピッチの小さいベルトピッチ 2.0mmのタイミングベルトを用いることとした。また、プーリ (つばき製)もメカニズムをコンパクトにするため、出来るだけ径の小さいものを使用することとした。

4.5 各関節の駆動に必要なトルクの計算

図 4.3のモデルと表 4.3の各パラメータより各関節の駆動に必要なトルク(τ1,τ2)の計算を行う。ここでは簡単のため、伸縮アームの 4段のリンクを 1本の棒状の剛体とした。また、lng(n = 1, 2)は各リンクの端から重心までの距離である。対象を操作する際の荷重として、リンク 2の重心に鉛直下向きに 0.5kgの荷重がかかっていると仮定する。各関節に必要なトルク τn(n = 1, 2)は、重力に抗するトルク τg と仕事を行うためのトルク

10

Robot

l

l1 l2

l1g l2g

M1 Mj2 M2τ1 τ2

図 4.3: トルク計算のモデル

表 4.3: 各リンクの仕様部位 長さ 質量

リンク 1 1100mm(l1) 1.5kg(M1)

ジョイント 2 - 0.3kg(Mj2)

リンク 2+荷重 (0.5kg) 100mm(l2) 0.7kg(M2)

τwの和で表される。τn = τng + τnw  (n = 1, 2) (4.2)

重力に抗するトルク τng(n = 1, 2)は以下の式から求められる。

τ1g = M1l1g + Mj2l1 + M2(l1 + l2g) g (4.3)

τ2g = M2l2gg (4.4)

仕事を行うためのトルク τnw(n = 1, 2)は以下の式から求められる。ここでは、各関節回りの慣性に関してのみ考慮する。

τnw = Inωn  (n = 1, 2) (4.5)

各関節回りの慣性モーメント In(n = 1, 2)は以下のように計算される。ここで I1に関しては、図 4.3に示すようにリンク 2がリンク 1と同一直線上にある状態について検討した。

I1 =∫ l1

0

M1

l1x2dx +

∫ l1+l2

l1

M2

l2x2dx + Mj2l

21 (4.6)

I2 =∫ l2

0

M2

l2x2dx (4.7)

以上の式から求めた各関節の駆動に必要なトルクは、τ1=21.9Nm, τ2=1.96Nmであった。次に、アームの伸縮に必要なトルクの計算を行う。伸縮は、アームの根元に配置したモータによって行う。モータに最も大きな荷重がかかるのは、アームを地面に対して垂直に立てているときである。アームの伸長加速度を 0.5m/sec2とすると、二段目以降の重量 1.424kgを持ち上げるモータトルクは 0.37Nmである。

11

4.6 モータ、減速器の選定

求めた必要トルクから決定したモータと減速比を表 4.4に示す。モータは全てMaxon製のものを用いる。また、比較的高速回転を必要とする伸縮用の減速器にはギアヘッドを用い、低速で高トルクが必要な第一、第二関節の減速器にはハーモニックドライブを用いることとする。

表 4.4: モータと減速比用途 モータ 減速比 出力トルク

第 1関節 24V20W 300 28.8Nm

第 2関節 24V2.5W 400 2.27Nm

伸縮 24V20W 19 0.44Nm

4.7 エンドエフェクタ

アームには、伸長させた状態で先端に負荷がかかるとたわみが生じる。高い位置にあるスイッチを操作する際に、アームを伸ばし、台車の前進やアームの姿勢変化などで操作を行おうとすると、アームのたわみにより手先が対象から逃げることがあり、操作失敗につながる。そこで、エンドエフェクタにソレノイドを取り付け、ソレノイドの直動運動によってスイッチ操作を行うこととした。ソレノイドは電磁石の一種であり、コイルに電流を流すと中の鉄芯が押し出される仕組みになっている。このコイルに大電流を流し、鉄芯を素早く押し出せば、アームのたわみで手先が逃げる前にスイッチを押し込むことができる。引き出し操作では、ソレノイドの先端を取っ手部分にかけて「抜き動作」を行い、エンドエフェクタの背で前面部分を押し込むことにより「差し動作」を行うこととする。

4.8 製作したアームの仕様

以上の部品と加工したアルミ材等を用いて、アームを組み上げた。図 4.4に、M-1型山彦に搭載した伸縮アームを示す。また、製作したアームの仕様を表 4.5に示す。この伸縮アームは、通常は山彦の上部に搭載され、移動の妨げになりにくい。引き出しの操作は、図 4.5に示すようにアームを前方に振り下ろし、エンドエフェクタを取っ手に引っ掛けることで実現する。一方、電灯やエレベータのスイッチ操作は、図 4.6に示すようにアームを真上に起伏させ、対象の位置まで伸長させることで実現する。開発した伸縮アームをM-1

型山彦に搭載することにより、床面から 160cmの高さまで対応できる。

12

図 4.4: M-1型山彦に搭載した伸縮アーム

表 4.5: アームの仕様収縮時全長 388mm

伸長時全長 1218mm

アーム旋回可能範囲 225deg

エンドエフェクタ旋回可能範囲 270deg

動力 DCモータ× 3

最大伸長速度 25cm/sec

可搬重量 500g

総重量 2.8kg

13

図 4.5: 振り下ろした伸縮アーム

4.9 開発したアームの評価・検討

開発したアームは、設計指針に則し、軽量でコンパクトにすることができた。また、モータに電流を流して駆動実験を行ったところ、回転部、伸縮部ともにスムーズな動作を確認できた。しかし一方で、問題点も判明した。問題点のひとつは、たわみである。アームの支柱部分はスライドレールで構成されている。スライドレールはステンレス製で高い剛性を持っているが、アーム全体を軽量化するため、負荷荷重の少ない上段ほど細いレールを用いている。アームを伸長させたところ、自重によりたわみが生じ、手先が垂れ下がった。スイッチや引き出しの操作には高い位置精度が要求されるため、たわみによる手先の位置誤差を解消する必要がある。ふたつめの問題点は、振動である。伸長した状態で回転するアームに制動をかけると、手先が大きく振動した。この振動も、アーム支柱部分の細さが原因であると考えられる。手先が振動した状態では対象物の操作ができないため、できるだけアームに振動が生じないような制御を行うべきである。

14

図 4.6: 上方へ伸ばした伸縮アーム

15

第5章 アームの制御

5.1 アームのコントローラ

図 5.1にアームのコントローラを示す。アームの制御はモータ制御モジュールによって行う。この制御モジュールは、モータのエンコーダからのパルスを読み込み、制御量に応じたPWM信号をモータドライバ回路に出力することで、最大で 8チャンネルのモータを使用することができる。本研究では、この制御モジュールを用いてアームの 3つのモータを制御する。

5.2 アームの座標系

環境中におけるロボットの座標系を図 5.2に示す。また、それぞれの位置・姿勢を以下のように定義する。

x : 手先の x座標

y : 手先の y座標

z : 手先の z座標

xv : 台車の中心の x座標

yv : 台車の中心の y座標

L0 : 台車の中心からアームの根元までの長さ

Lh : 床面からアームの根元までの高さ

L1 : 伸縮部の長さ

L2 : エンドエフェクタの長さ

θa : 手先の水平面上の角度

θb : 手先の水平面からの角度

θ1 : 第一関節の角度

θ2 : 第二関節の角度

θv : 台車の水平面上の角度

16

図 5.1: アームのコントローラ

θa , θv

θb

θ2

θ1

L1

L2

Y

Z

X

Lh

L0

(xv , yv)

(x,y,z)

図 5.2: ロボットの座標系

17

5.3 キネマティクス

ロボットに搭載したアームの手先の位置 (x, y, z)、姿勢 (θa, θb) は、アームの各関節角度(θ1, θ2)、伸縮長 (L1)およびロボットの位置・姿勢 (xv, yv, θv)から以下のように与えられる。

x = xv + L0 − L1 cos θ1 + L2 cos (θ1 + θ2) cos θv (5.1)

y = yv + L0 − L1 cos θ1 + L2 cos (θ1 + θ2) sin θv (5.2)

z = Lh + L1 sin θ1 + L2 sin (θ1 + θ2) (5.3)

θa = θv (5.4)

θb = θ1 + θ2 − π (5.5)

5.4 インバースキネマティクス

アームを目標位置に到達させるために、目標の位置、姿勢から各関節角度、伸縮長を求める必要がある。平面上の位置、姿勢に関しては、台車の走行履歴によって定義する。台車から見た手先の位置、姿勢を (x, z, θb)と定義した時、アームの各関節角度 (θ1, θ2)、伸縮長 (L1)

は以下の式で表される。

θ1 = arctanx + L2 cos θb

z − L2 sin θb+

π

2(5.6)

θ2 = θb − arctanx + L2 cos θb

z − L2 sin θb+

π

2(5.7)

L1 =√

(x + L2 cos θb)2 + (z − L2 sin θb)

2 (5.8)

5.5 各関節角度のPI制御

各モータは、目標角度に関する PI制御 [12]を行う。PI制御ではまず、比例項の働きによって目標角度と現在角度との偏差に応じた出力を得る。これにより現在角度を目標角度付近に近づけることができる。しかしながら、比例動作だけでは定常偏差が残ってしまうので、積分項を加えることにより定常偏差をなくし、目標角度へ到達させる。

τ ref = KP

(θref − θ

)+ KI

∫ (θref − θ

)dt (5.9)

τ ref : 目標トルク [Nm]

θref : 目標角度 [deg]

18

θ : 現在の角度 [deg]

KP : 比例ゲイン

KI : 積分ゲイン

PWM値が 0の時にモータの端子間を短絡させ、ブレーキをかけるような回路を用いることにより、PWM比とモータに流れる平均電流が比例し、PWM比とトルクの関係を以下の式で近似することができる。

δ =1V0

(R

τ ref

Kτ+ Keω

)(5.10)

δ : PWM 値/255

V0 : 電源電圧 [V ]

R : モータの巻線抵抗 [Ω]

τ ref : 目標トルク [Nm]

Kτ : トルク定数 [Nm/A]

Ke : 逆起電力定数 [V/rpm]

ω : 角速度 [rpm]

上記の二式から求められた PWM比の信号をモータドライバに送ることにより、目標角度への追従を行った。比例、積分のゲインは、実機による検証を行い、より良いものを設定した。ゲイン調整において、目標角度に収束すること、アームに振動が発生しないようにすること、上記の二点を満たす範囲で出来るだけ早く目標角度に収束することに留意した。開発した伸縮アームは、軽量・コンパクト化を図ったため非常に細く、加速度の大きな変化に弱い。よって、比例ゲインを低めに設定し、目標角度に近付くと緩やかな減速を行うことでアームの振動が発生しにくいようにした。各関節における PI制御の結果を図 5.3に示す。実験では、同時にひとつの関節または伸縮部のみを駆動させた。第一関節と第二関節では、5秒毎に目標値を 200°、100°、50°、0°と変化させた場合の目標値への追従状況を検証した。第一関節においては、滑らかな減速が行われ、アームの振動はほとんど生じなかった。また伸縮部では、5秒毎に目標値を 800mm、400mm、200mm、0mmと変化させ、うまく目標値への追従ができていることを確認した。

5.6 重力補償

開発した伸縮アームは、ピッチ方向の回転に加え、その長さを変えることができる。そのため、アームの姿勢や長さによって重力から受ける影響が大きく変化する。この問題に対処す

19

0

50

100

150

200

0 5 10 15 20

0

100

200

300

400

500

600

700

800

0 5 10 15 20

0

50

100

150

200

0 5 10 15 20

angl

e [d

eg]

Reference angleActual angle

time [sec]

leng

th [m

m]

Reference lengthActual length

time [sec]

angl

e [d

eg]

Reference angleActual angle

time [sec]

図 5.3: 各関節における PI制御結果 (上:第一関節、中:伸縮機構、下:第二関節)

20

るため、本研究では重力補償を行うこととした。重力補償は、重力に抗するトルクをフィードフォワードによって予め与えるものであり、この働きにより、重力による影響をキャンセルし、常に同じゲインで各関節を制御できると考えた。重力補償は第一関節と伸縮部にのみ適用し、第二関節には適用しない。これは、第二関節が駆動するエンドエフェクタが小さく、重力による影響がほとんどないためである。図 5.4に重力補償を加えた第一関節と伸縮部の制御ブロック図を示す。第一関節の重力補償項は、第一関節の角度 θ1とアームの長さ l1に依存する。よって、第一関節のモータトルクは次式で表される。

τ refθ1

= KPθ1

(θref1 − θ1

)+ KIθ1

∫ (θref1 − θ1

)dt + mg

l12

cos θ1 (5.11)

τ refθ1

: 第一関節の目標トルク [Nm]

θref1 : 第一関節の目標角度 [deg]

θ1 : 第一関節の現在の角度 [deg]

KPθ1: 第一関節の比例ゲイン

KIθ1: 第一関節の積分ゲイン

m : アームの質量 [kg]

g : 重力加速度 [m/sec2]

l1 : アームの長さ [m]

また、伸縮部の重力補償項は、重力に逆らって二段目以降のリンクを押し上げるトルクを生じるものであり、アームの長さにはよらないため、第一関節の角度 θ1にのみ依存する。よって、伸縮部のモータトルクは次式で表される。

τ refl1

= KPl1

(lref1 − l1

)+ KIl1

∫ (lref1 − l1

)dt + mg sin θ1 (5.12)

τ refl1

: 伸縮部の目標トルク [Nm]

lref1 : 伸縮部の目標長さ [mm]

l1 : 伸縮部の現在の長さ [mm]

KPl1: 伸縮部の比例ゲイン

KIl1: 伸縮部の積分ゲイン

重力補償を実装し、PI制御のみの場合と比較したグラフを図 5.5に示す。このグラフは、アームを地面と水平になるよう目標値を与えた状態で伸縮させ、第一関節の角度変化と PWM

21

図 5.4: PI制御に重力補償を加えた第一関節と伸縮部の制御ブロック図

比を追ったものである。図 5.5の上段のグラフがアームの伸びを示している。アームは始動と同時に伸び始め、伸びきった所でしばらくその状態を保持する。始動から 20秒が経過すると、元の状態に収縮する。この間、第一関節では目標角度への制御が行われている。図 5.5の中段は角度変化を表すグラフである。重力補償がない PI制御では、アームが伸びるに従って重心が第一関節から離れてゆき、第一関節のトルクが不十分なためにアームが下がってしまう。また、伸長状態からアームを縮めると、逆に第一関節のトルクが過分になるため、アームが持ち上がってしまう。アームの伸縮によって目標値からずれた角度は、I項の働きで徐々に目標値に戻るが、収束するまでには時間がかかる。一方、重力補償を加えた PI制御では、図 5.5下段の PWM比のグラフから分かるように、アームの動きに応じて適切なトルクが加わるため、伸縮に伴うアームの上下はなく、常に目標値を維持することができている。

5.7 たわみ補償

5.7.1 アームのたわみ

手先の位置・姿勢の目標値 (x, z, θb)を与えると、逆運動学により各関節の目標値を求め、重力補償つき PI制御で目標値に追従させるプログラムを作成し、実装した (θbは、エンドエフェクタが床面となす角を示す)。しかしながら、実際の手先位置が、与えた目標値 (x, z, θb)からずれる問題が生じた。このずれは、アームの位置・姿勢によって異なり、大きい時は 60mm程

22

3.0

3.5

4.0

4.5

5.0

5.5

6.0

6.5

7.0

7.5

0 5 10 15 20 25 30 35 40 45

0

200

400

600

800

0 5 10 15 20 25 30 35 40 45

0

10

20

30

40

0 5 10 15 20 25 30 35 40 45

without gravitycompensation

with gravitycompensation

time [sec]

time [sec]

time [sec]

θ1 [deg]

l1 [mm]

PWM duty[y/255]

with gravitycompensation

without gravitycompensation

図 5.5: PI制御のみと重力補償つき PI制御との比較 (上から、アームの長さ、第一関節角度、PWM比の変化)

23

度もあった。様々な位置・姿勢をとらせて検証したところ、アームを伸長させたり、水平に近い角度にするほど、下方向へのずれが大きくなることから、アームのたわみが原因であると推測される。このままでは、対象操作に支障を来すため、たわみ補償を行うこととする。各関節における位置制御は正確に動作しており、目標値への追従ができている。手先位置のずれは、伸ばしたアームが円弧状にたわみ、手先が下がってしまう為に起こる。よって、制御ブロックにたわみ補償を組み込むことは好ましくない。そこで、インバースキネマティクスで手先の目標位置・姿勢 (x, z, θb)から各関節の目標角度 (θ1, θ2, l)を求める部分にたわみ補償を取り入れることとする。これにより、アームのたわみで手先が下がる分を、予め少し上向きに目標位置を設定することで、手先のずれを抑えることができる。

5.7.2 たわみの実測値への関数フィッティング

一般に、片持ばりが自由端に集中荷重Wt[Nm]を受けた場合のたわみ量 vtは式 5.13で表される。また、全長に等分布荷重Wa[Nm]を受ける場合のたわみ量 va は式 5.14で表される。

vt =Wtl

3

3EI(5.13)

va =Wal

4

8EI(5.14)

l : はりの長さ [m]

E : 縦弾性係数 [Pa]

I : 断面二次モーメント

これらの式を用いてたわみの計算を行ったところ、実機のたわみと最大で 10mm以上の誤差があった。これは、スライダ-レール間のガタ、ベルトによる張力、部品同士の平面取り付け精度など、様々な要素が複雑に関係しており、単純に片持ばりのたわみとして取り扱えないためだと考えられる。そこで、アームのたわみによる手先位置のずれを求める関数を探索することとした。まず第一段階として、手先位置のずれを実測し、グラフにプロットした。それが図 5.6の×印である。たわみによるずれは、第一関節の角度 θ1とアームの長さ l1に関係があるものとして、この二つを変数にとり、それぞれ x軸と y軸に設定した。サンプルは、ロボットの x軸方向の目標値を固定して手先の高さを 10cm刻みで変化させる、という試行を繰り返して得た。次に、プロットされた×印の点群にうまくフィットする関数の検討をつけた。ここでは、点群の形状から指数関数 f(x, y) = ex2+y2

を基に、式 5.15の関数を設定してパラメータ (a,b,c,d)

の調整によりずれの実測値へのフィッティングを行った。

f(θ1, l1) = aeb((θ1−c)2+(l1−d)2) (5.15)

24

100

120

140

160

180

200

220

0 100 200 300 400 500 600 700 800

-10 0

10 20 30 40 50 60 70 80

a*exp(b*((x-c)*(x-c)+(y-d)*(y-d)))

gaps caused by deflection

θ1 [deg]

l1 [mm]

gap [mm]

図 5.6: アームのたわみの実測値と、フィッティングした関数

図 5.6の格子で描かれているのがフィッティングした関数である。パラメータの値は、それぞれ、a = 70, b = −0.00035, c = 173, d = 800であった。このフィッティング関数により、ある目標位置 (x, z, θb)が与えられた時に、どれくらいのたわみによる手先のずれが生じるかが推定できる。以後、この関数をたわみ関数と呼ぶ。

5.7.3 たわみ関数を用いた目標値の再設定

たわみ関数を用いて、手先の目標位置を再設定する流れを図 5.7 に示し、その手順を以下に説明する。

1. 手先の目標位置 (x, z, θb)から、インバースキネマティクスによって各関節の目標角度(θ1, l1, θ2)を得る。

2. 第一関節の角度 θ1とアームの長さ l1 をたわみ関数に代入し、たわみ量 (∆x,∆z,∆θb)を求める。

3. 手先の目標位置 (x, z, θb)にたわみ量 (∆x,∆z,∆θb)を上乗せした値を、新たな目標位置として再設定する。

4. 再設定された目標位置 (x + ∆x, z + ∆z, θ + ∆θb)から、再びインバースキネマティクス

25

を使って各関節の目標角度 (θ′1, l′1, θ′2)を得る。

5. 第一関節の角度 θ′1とアームの長さ l′1をたわみ関数に代入し、たわみ量 (∆x′,∆z′,∆θ′b)を求める。

6. 再設定された目標位置 (x + ∆x, z + ∆z, θ + ∆θb)からたわみ量 (∆x′,∆z′,∆θ′b)を差し引いた値を、始めの目標位置 (x, z, θb)と比較する。両者の差分が 1mm未満であれば、(θ′1, l′1, θ′2)を各関節の目標角度として制御ループに渡す。差分が 1mm以上ならば、その差分を再設定された目標位置 (x + ∆x, z + ∆z, θ + ∆θb)から差し引き、新たな目標位置として再々設定し、差分が 1mm未満になるまで手順 4~6を繰り返す。

上記の機能を実装し、検証実験を行った。実験の様子を図 5.8に示す。黒い印がついた部分が、手先の目標位置である。たわみ補償がない場合は、手先が垂れ下がり、目標位置からずれていることが分かる。このずれは、アームを伸ばし、水平にするほど大きくなっている。一方、たわみ補償を行った場合は、ほぼ目標位置に手先を合わせることができている。様々な目標位置を与えて調べたところ、たわみ補償実装時の目標位置からのずれは、3mm以内に抑えられており、高精度の位置制御が実現できた。

5.8 負荷の認識

引き出しの「差し動作」において、引き出しがそれ以上押し込めなくなったことを認識し、アームの動きを止める必要がある。もし、アームの制動が遅れると、引き出しの破損やアームの故障につながる。引き出しの押し込み完了を認識する手法としては、手先に力センサ等を取り付け、センサに大きな荷重がかかったことで押し込み完了を認識する方法が考えられる。しかし、開発したアームは手先の重量が増すと大きなたわみを生じることや、ロボット本体からアーム先端までの長いケーブルにより、センサの信号にノイズがのりやすい等の問題がある。そこでモータの目標トルクと回転数の関係よりアームにかかっている負荷を認識することで、引き出しの押し込み完了を検知することとする。回転数の計測に使用するエンコーダは、各関節の位置制御のためにモータに付属しているものであり、新たにセンサ類を取り付ける必要がない。モータの目標トルクは第 5.5節の式 5.9で表される。この目標トルクから、モータの回転数に適当な係数をかけたものを引いた値を、負荷値として扱うこととする。この負荷値を制御プログラム中で監視し、予め定めた閾値を越えた時点で、引き出しの押し込み完了と判断する。負荷値を算出するプログラムを実装し、実験を行った。その結果を図 5.9に示す。これは、第二関節において、動作中に人間の手で負荷を与えた場合と、無負荷の場合とを比較したものである。図 5.9の下のグラフの点線で囲まれた部分が、手で負荷を与えたところである。高い PWM比にも関わらず、負荷によってモータの回転数が減少しているため、負荷値が上昇している。この負荷値の上昇を捉えることによって、引き出しの押し込み完了を判断する。た

26

No

Yes

図 5.7: たわみ補償の流れ

27

図 5.8: たわみ補償なし (上)とたわみ補償あり (下)の場合の手先位置比較

28

だし、外部から負荷を与えていないにも関わらず、起動時に高い負荷値が出てしまっているので、起動後 0.3秒間は負荷値の監視は行わないこととする。

5.9 アーム駆動モードの設定

アームは重力による影響を受けるため、同じ姿勢を維持するためには、常に各関節でトルクを発生させる必要がある。しかしながら、アームを使用しない移動時にさえトルクを発生させ、電力を消費するのは非効率的である。また対象操作時において、対象へのアプローチの過程でいくつかの中継姿勢をとることが考えられる。迅速な操作実現のため、この中継姿勢への追従は可能な限り高速で行いたい。一方、対象にアプローチする際は、破損させることがないよう、低速でアームを駆動させることが望ましい。そこで、上記の仕様を満たすため、以下の 3つのアーム駆動モードを用意した。

• 目標角度への高速追従 (中継姿勢時)

• 目標角度への低速追従、および負荷監視 (対象操作時)

• 収納状態で、各モータへの出力 0(移動時)

対象操作時における目標角度への低速追従は、出力 PWM比の最大値を制限することで実現した。この時、第 5.8節で述べた負荷監視機能を働かせ、負荷を検知すると目標角度への追従を一旦停止する。移動時には、まず各関節に初期姿勢を目標角度として与え、全関節が目標角度に到達したら PWM比を 0にし、電力消費を抑えることができる。状況に応じてアーム駆動モードを選択することで、より効率的で確実な動作が可能となった。

5.10 アーム駆動の流れ

アーム駆動の流れを図 5.10に示す。アームのコントローラ上では、各関節の制御ループの他に、手先の目標位置・姿勢を受信するスレッドを動かす。ノート PCなどの統括制御部からアームの目標位置、姿勢を受信すると、たわみ補償つきインバースキネマティクスを用いて目標角度を算出する。そして、各モータのエンコーダパルスから現在の関節角度を求め、目標角度に収束するよう、重力補償つき PI制御を行う。この時、第 5.9節で述べたモードに応じたパラメータで制御が行われる。

5.11 アーム制御の評価・検討

重力補償つき PI制御により、アームの各関節を目標角度に追従させることができた。ゲインを適切な値に調整して滑らかな減速を行うことで、アームに振動が生じるのを抑えた。ま

29

-10

0

10

20

30

40

50

60

0 0.5 1 1.5 2 2.5 3 3.5 4

-10

0

10

20

30

40

50

60

0 0.5 1 1.5 2 2.5 3 3.5 4

0.024

0.02

0.016

0.012

0.008

0.004

0

-0.004

0.024

0.02

0.016

0.012

0.008

0.004

0

-0.004

PWM duty [y/255], Angular Velocity [deg/sec] Load Value

Time [sec]

Load ValuePWM duty [y/255], Angular Velocity [deg/sec]

Time [sec]

図 5.9: 負荷なし (上)と負荷あり (下)の場合の負荷値

30

図 5.10: アーム駆動の流れ

31

た、たわみ補償により、アームのたわみで手先が目標位置からずれる問題を解消した。さらに、負荷認識や駆動モードを設け、アームを使いやすい環境を整えた。これにより、第 2章で述べた対象物を操作可能なアームシステムを開発することができた。現状で対象操作に支障はないが、追加すると便利な機能としては以下のものが考えられる。まず、図 5.10に示したように、ノート PCからは、アームコントローラに対し、手先の目標位置・姿勢などが送信されるが、ノート PCがアームの状態を知る手段はない。与えた目標位置・姿勢に対して、アームが現在どのような動きをしているかを認識できれば、より適切な指令をアームコントローラに送ることができる。ノート PCで取得したいアームの情報としては、各関節の角度、各速度、手先の位置・姿勢などが考えられる。また、アームのみの動作では振動は生じないが、アームを搭載した台車が動くと、アームが振動することがある。アームの振動を検知し、これを打ち消すような振動抑制制御を行うことで、この問題は解消される。上記の機能が追加されれば、さらに高度なタスクが可能となり、伸縮アームの用途が増すと考えられる。

32

第6章 対象操作

6.1 動作計画

6.1.1 スイッチ操作

スイッチ操作の流れを図 6.1に示す。ロボットには予め、スイッチの位置を含む簡単な地図を持たせる。ロボットは、スイッチ操作の必要が生じると、周囲のランドマークを頼りにスイッチ付近まで移動する。そしてアームを伸ばし、スイッチを操作する。この時、対象の位置を正確に認識し、アームの手先を対象に合わせる必要がある。先にも述べたように、アームにはヨー方向の自由度がない。そこで対象とエンドエフェクタとの間に横方向のずれがあった場合は、台車の方向転換または切り返し動作によってそのずれをなくすこととする。

6.1.2 引き出し操作

引き出し操作の流れを図 6.2に示す。引き出し操作時も、先に述べたスイッチ操作時と同様に、ロボットには予め引き出しを含む地図を持たせておく。ロボットは、引き出し操作の必要が生じると、周囲のランドマークを頼りに引き出し付近まで移動する。そしてアームを伸ばし、引き出しを操作する。引き出し操作は、エンドエフェクタを取っ手に掛け、アームを搭載した台車が後進することで実現する。アームのみを使うのではなく、台車の移動を用いる理由としては、以下のことがあげられる。

図 6.1: スイッチ操作の流れ

33

• 引き出しの中を確認するためには、取っ手を 15~20cm程度引く必要がある。エンドエフェクタを取っ手から外れることなく水平に移動させるには、アームを固定したまま台車が動いた方が良い。

• アームの動きのみで取っ手を引くには、予めアームをある程度伸ばしておき、エンドエフェクタを取っ手に掛けた状態でアームを縮ませる方法が考えられる。しかしながら、アームを伸ばすほど、手先の荷重によるたわみは大きくなる。よって、アームは可能な限り縮めた状態で引き出し操作を行うことが望ましい。

引き出しの中を確認した後は、引き出しを元の状態に戻す。その動作は以下の手順で行う。

1. エンドエフェクタの背を前面部分にあてた状態で台車が前進する。

2. 最初に取っ手を引き始めた地点よりも 20mm手前で停止コマンドを発行する。

3. アームの動きによって、引き出しを押し込む。

引き出しの押し込み動作で注意しなければならないのは、それ以上押し込めなくなったらすぐにアームの動きを止めることである。もし、アームの制動が遅れると、引き出しの破損やアームの故障につながる。そこで 5.8で述べた、モータの出力トルクと回転数の関係よりアームにかかっている負荷を認識することで、引き出しの押し込み完了を検知する。

6.2 システム構成

動作計画を実現するためのシステム構成について説明する。対象の操作には、開発した伸縮アームを搭載した山彦を用いる。対象付近まで移動する際に、周囲の環境を認識するセンサとして、測域センサを用いる。また、操作時に対象を認識するため、エンドエフェクタにカメラを取り付ける。測域センサとカメラのデータはノート PCに取り込み、それぞれ処理を行って周囲の環境や対象の位置を得る。得られた情報から、ロボットの移動経路やアームの目標位置を設定することで、タスクの実現を目指す。ロボットやアームの制御は、ノート PC

上の LxSystem[13]によりモータ制御モジュールを介して行う。

6.3 ナビゲーションにおける環境認識

6.3.1 測域センサURG

ロボットは、オドメトリによる自己位置推定を行い、設定された経路に追従するようフィードバック制御することにより、目標地点までのナビゲーションを行う。しかしながら、オドメトリを用いた自己位置推定には、走行距離に応じて誤差が累積するため、周囲の環境を認識して自己位置を修正する必要がある。本研究では、周囲の環境を認識するために、図 6.3に示す測域センサURG-X002S(以後、URGと呼ぶ)を用いる。URGの仕様を表 6.1に示す。URG

34

図 6.2: 引き出し操作の流れ

35

図 6.3: 測域センサURG

から得られる情報は、角度 [rad]と距離 [mm]である。ロボットが、環境に張り付けた座標系のある点 (x, y)に向き θで存在する時、URGによって得られた環境中の点の座標 (xp, yp)は、以下の式で求められる。

xp = r cos(φ + θ) + x + L cos θ (6.1)

yp = r sin(φ + θ) + y + L sin θ (6.2)

xp : 測距点の x座標

yp : 測距点の y座標

r : 測距距離

φ : 測距角度

x : ロボットの x座標

y : ロボットの y座標

θ : ロボットの向き

L : ロボット中心から URGまでの距離

6.3.2 最小二乗法による直線近似

屋内環境では、目標地点まで移動する際に、壁をランドマークとして用いる手法が良く見られる。これは、壁面の直線の傾きや距離から推定自己位置の修正を有効に行えるためである。

36

表 6.1: 測域センサURGの仕様型式 URG-X002S

測距範囲 20~4000mm, 240°測距精度 20~1000mm:± 10mm, 1000~4000mm:距離の 1%

角度分解能 約 0.36°走査速度 100ms/scan

質量 約 170g

外形寸法 50mm× 50mm× 70mm

本研究でも、対象付近への移動に壁面を用いることとし、最小二乗法を用いて測距点群から近似直線を求めることとする。URGで計測した環境中の n個の点 (xi,yi)から、最小二乗法によって得られる近似直線 y = ax + bの係数 a,bは以下の式で表される。

a =

nn∑

i=1

xiyi −n∑

i=1

xi

n∑i=1

yi

nn∑

i=1

x2i −

(n∑

i=1

xi

)2 (6.3)

b =

n∑i=1

x2i

n∑i=1

yi −n∑

i=1

xiyi

n∑i=1

xi

nn∑

i=1

x2i −

(n∑

i=1

xi

)2 (6.4)

また、上式によって求められた直線と、座標 (xr, yr)上のロボットとの距離 dは、以下の式で表される。

d =

√(axr − yr + b)2

1 + a2(6.5)

これらの式を用いることによって、環境中におけるロボットの位置、姿勢を推定することが可能である。URGを用いて周囲の環境を認識することで、オドメトリによる推定自己位置に修正を加え、より正確に目標地点までの移動を目指す。

6.4 対象物の認識

6.4.1 USBカメラ

本研究では、壁に設置された数 cm四方のスイッチのように、非常に小さいものを操作対象としている。これらの対象を操作するためには、対象物を正確に認識する必要がある。

37

図 6.4: USBカメラ QV-700N

そこで対象認識には、対象物を的確に捉えられ、なおかつ、小型軽量で先端に取り付けてもアームへの負荷が少ない、小型カメラを使用することとした。この小型カメラとして、図6.4に示す Logicool社製のUSBカメラQV-700Nを使用する。ロボットに搭載したノート PC

でカメラ画像を取り込み、画像処理を行って対象物の位置を認識する。

6.4.2 カメラキャリブレーション

カメラから得られる画像には歪みがあり、そのままでは正確な対象の位置を求めることができない。そこで、カメラキャリブレーションを行うことによりカメラ画像を補正し、ピンホールモデルとして扱えるようにする。このカメラキャリブレーションには、Camera Calibration

Toolbox for Matlab[15]を使用した。

6.4.3 画像内における対象検出

カメラで取得した画像内で、対象を検出する手法について説明する。本研究では、テンプレートマッチングによって対象を検出することとした。テンプレートマッチングは、予め登録したテンプレート画像を原画像上で走査し、最も相関の高い場所を探索することで、対象の位置を推定する手法である。対象とするエレベータや電灯のスイッチは概観が変わることはないため、この手法が有効だと考えた。スイッチをテンプレート画像として登録し、USBカメラから得られた画像中で、各画素ごとの RGB値の差分の合計が最小となる位置を求める。差分値を求める画素を 5 画素おきにし、さらにテンプレート画像の走査位置も 5画素ごととした。図 6.5にテンプレートマッチングの実験結果を示す。それぞれ、カメラ画像内で対象の位置

38

図 6.5: テンプレート画像 (上)とテンプレートマッチングを行った画像 (下)

を正しく推定できていることが分かる。

6.4.4 位置導出方法

上記の手法により、カメラ画像内の対象の座標が求まった。そこで、この座標を基に、対象の環境内における位置を推定することとする。図 6.6に対象位置導出のモデルを示す。まず、対象の画像内の座標 (u, v)を、中心座標からの距離 (∆u,∆v)に変換する。U軸方向、V軸方向における画像 1ピクセルあたりの角度を∆θu、∆θvとし、URGによって測定した壁までの距離をLとすると、カメラを原点にとった座標系における対象の位置 (xobj , yobj , zobj)は以下の式で求められる。

xobj = L (6.6)

yobj = L tan(∆θv∆v) (6.7)

zobj = L tan(∆θu∆u) (6.8)

6.5 対象操作実験

6.5.1 スイッチ操作実験

筑波大学第三学群 L棟 3階の研究室前から、エレベータを操作してフロアを移動し、同 4

階の研究室前へ行く実験を行った。以下にその手順を説明する。

39

Xobj

Zobj

Z

X

∆θu*∆u∆u

ProjectedSurface

Object

Xobj

Yobj

Y

X

∆θv*∆v∆v

ProjectedSurface

Object

Top View Side View

図 6.6: 対象位置導出のモデル

1. L棟 3階の研究室前からスタートする。

2. URGで左側の壁を測定し、一定の距離を保って壁と平行な直線上を移動する。

3. 一定間隔毎にURGで左側の壁を測定し、推定自己位置の修正を行う。

4. 壁沿い走行によってエレベータ付近まで移動したら、周辺の壁面との距離・角度を基に、スイッチ前にできるだけ正確に移動する。

5. アームを伸ばし、カメラでスイッチを認識する。

6. エンドエフェクタでスイッチを操作できるよう、ロボットの位置、アームの姿勢を修正する。

7. スイッチを操作し、ドアが開いたらエレベータに乗り込む。

8. エレベータ内でスイッチ前に移動し、5~6と同様のことを行う。

9. スイッチを操作し、ドアが開いたらエレベータを降りる。

10. 壁沿い走行で L棟 4階の研究室前まで移動する。

実験の様子を図 6.7に示す。また、走行中にURGで得られたデータを図 6.8に示す。

40

9

10

5

4

1

2

11

12 8

3 7

6

図 6.7: エレベータによるフロア移動実験の様子

41

-8000

-6000

-4000

-2000

0

2000

4000

-5000 0 5000 10000 15000 20000 25000 30000x [mm]

y [mm]

-8000

-6000

-4000

-2000

0

2000

4000

-5000 0 5000 10000 15000 20000 25000 30000x [mm]

y [mm]

3L302-1

Elevator

3L402

Elevator

3rd Floor

4th Floor

図 6.8: 走行中に URGで得られたデータ

42

6.5.2 引き出し操作実験

筆者の研究室にあるメールボックスを対象とし、引き出し操作実験を行った。実験の様子を図 6.9に示す。第 6.1.2小節で述べた手順で引き出しを操作し、対象物やアームに大きな負荷をかけることなく「抜き動作」、「差し動作」を実現することができた。

6.6 対象操作の評価・検討

小型移動ロボットで対象物の操作を行うためのロボットシステムを構築し、タスクを実行した。これにより、開発した伸縮アームで「押す」「引く」動作が可能であることを証明した。現状では、タスクの成功率は 5割程度である。主な失敗原因としては、推定した対象との相対位置に誤差があることが考えられる。この問題に対処するためには、より正確な自己位置推定、対象認識が必要である。今回は、最小二乗法を用いた直線近似により壁を認識し、テンプレートマッチングによって対象物を認識した。より精度の高い環境認識手法の選択・提案が今後の課題である。

43

9

10

5

4

1

2

11

12 8

3 7

6

図 6.9: 引き出し操作実験の様子

44

第7章 おわりに

本研究では、まず実現したいタスクの具体例を示し、アームの仕様を検討した。そして、仕様に基づき伸縮機構を有するアームの設計、製作を行った。アームの制御においては、各関節で位置に関する PI制御を行った。ここで、アームが受ける重力の影響をキャンセルするため、重力補償項を加えた。また、アームのたわみによって手先が目標位置からずれてしまうのを防ぐため、たわみ補償を行った。このたわみ補償では、インバースキネマティクスで各関節角度を求める際に、たわみによる垂れ下がりを考慮して、予め適当な量だけ上向きの目標位置を設定するものである。この制御系により、手先の位置誤差 3mm以内という、高い精度を実現することができた。最後に、開発したアームを用いて対象操作を行った。ロボットのオドメトリで自己位置推定を行いながら対象付近へ移動した。オドメトリには累積誤差が生じるため、測域センサによって廊下の壁などを検出することで、推定自己位置の修正を行った。壁の検出では、測域センサにより得られた壁の点群から最小二乗法で近似直線を求めることで、その傾きとロボットからの距離を算出した。対象操作時は、カメラによって対象を認識し、ロボットとアームの位置合わせを行うことで、対象物の操作を実現した。今後の課題は、ノート PCへアームの状態を知らせる機能や振動抑制制御など、アームコントローラの機能拡張である。また、確実に対象物を操作するためには、より高い精度で周囲の環境や対象物を認識する必要がある。

45

謝辞

本研究は工学博士大矢晃久筑波大学システム情報工学研究科コンピュータサイエンス専攻助教授のご指導のもとに行われました。桐陰横浜大学小柳栄次教授には、アームの設計・製作にあたり、貴重なご助言、ご協力を頂きました。工学博士油田信一筑波大学副学長、工学博士坪内孝司筑波大学システム情報工学研究科知能機能システム専攻助教授にも多くのご助言を頂きました。さらに、知能ロボット研究室の皆様には研究に限らず、多くの支援やアドバイスを頂きました。以上の方々に厚くお礼を申し上げます。最後に、精神的にも経済的にも支援してくれた家族に深く感謝します。ありがとうございました。

46

参考文献

[1] NEC:PaPeRo, http://www.incx.nec.co.jp/robot/20-

03papero/index.html

[2] 東芝:ApriAlpha, http://www.toshiba.co.jp/about/-

press/2003 03/pr j2001.htm

[3] PFU:MARON-1, http://www.pfu.fujitsu.com/mar-

on/characteristic.html

[4] 江口純司:“移動系の自由度も用いて物体を操作する移動マニピュレータ”,平成 13年度筑波大学大学院修士課程理工学研究科修士論文.

[5] T.Tomizawa, A.Ohya, S.Yuta : “Book Browsing System using an Autonomous Mobile Robot

Teleoperated via the Internet”, Proceedings of IROS’02.

[6] 蛭田かおり:“お茶をサービスする自律移動ロボットの開発”,平成 15年度筑波大学大学院修士課程理工学研究科修士論文.

[7] 永谷,松浦,田中:“自律移動マニピュレータによるエレベータ昇降動作の実現”,ロボティクス・メカトロニクス講演会’03予稿集, 2A1-1F-B6 (2003-05)

[8] 日下部稔:“移動ロボットに搭載するためのマニピュレータとその制御システムの開発”,

平成 9年度筑波大学大学院修士課程理工学研究科修士論文.

[9] 吉村尚秀:“多種の作業を実現するための自律型移動マニピュレータ用自動ハンド交換システムの開発”,平成 11年度筑波大学大学院修士課程理工学研究科修士論文.

[10] 鈴木昭仁:“研究用プラットフォームとしての自律移動マニピュレータの開発”,平成 12

年度筑波大学大学院博士課程工学研究科修士論文.

[11] 冨沢哲雄:“遠隔地より図書を閲覧するロボットシステムの開発”,平成 14年度筑波大学大学院博士課程システム情報工学研究科修士論文.

[12] 須田信英:“PID制御” , (1992)朝倉書店

[13] 吉田 智章:“自律移動ロボットの行動制御とそのプログラミング環境に関する研究”、平成 15年度筑波大学大学院博士課程工学研究科博士論文

47

[14] H.Kawata, W.Santosh, T.Mori, A.Ohya, S.Yuta : “Development of Ultra-Small Lightweight

Optical Range Sensor System”, Proceedings of IROS’05.

[15] Camera Calibration Toolbox for Matlab : http://www.vision.caltech.edu/bouguetj/calib doc/index.html

48