屋外型警備ロボットの開発

知能機械システム工学科 知能ロボティクス研究室
学籍番号 １０２０１４８
細川 圭介

i

目次

目次
第１章

第２章

緒言

・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１

１．１

はじめに ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ １

１．２

警備ロボット ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・

１．３「屋外型」の必要性 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ２

１．４

本研究のねらい ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ３

１．５

本文の構成 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・３ロボットの持つ機能

・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ４

２．１ 遠隔操縦機能・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・５２２．２ 衝突の回避機能 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ７

２．３ ＣＣＤカメラによる画像処理機能 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・８

第３章

メカニズム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ９

３．１ 移動機構の構成 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１０

３．２ 実装・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１１

第４章 制御システム・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１５

ii

目次
４．１ 制御システムの構成・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１５

４．２ ＣＰＵボード ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・１７

４．３ ロボット用インターフェイスボード ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ １８

４．４ ロボットドライバ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ２４
４．４．１ TITECH ROBOT DRIVER について・ ・ ・ ・ ・２４
４．４．２ ロボットドライバの実装 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ２８４．５モータ制御 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・３２

４．５．１ モータについて ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・３３

４．５．２ モータの実装・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・３５

４．６

環境認知センサ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ３５

４．６．１ 超音波センサ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ３５

４．６．２ 超音波センサの実装・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ３８

４．６．３ 赤外線センサ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ４０

４．６．４ 赤外線センサの実装・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・４１

４．６．５

カラートラッキングビジョンＰＣＩ・ ・ ・ ・ ・ ・ ・ ・ ４５

４．６．６ カラートラッキングビジョンＰＣＩの実装 ・ ・ ・ ・ ・ ４９

４．７

遠隔操縦・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・５３

iii

目次
４．７．１ サーバクライアント方式について・ ・ ・ ・ ・ ・ ・ ・ ５３

・ソケット通信について ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ５６

・ソケット通信の実装・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ５７

４．７．２ ＵＳＢジョイスティックについて・ ・ ・ ・ ・ ・ ・ ・ ・５９・ＵＳＢについて・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ６０

・ＵＳＢジョイスティックの実装 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ６４

４．７．３ 映像通信 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ６６

・ネットミーティングについて ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ６６

４．７．４ ＷＥＢカメラのサーボ制御 ・ ・ ・ ・ ・ ・ ・ ・ ・ ６７・実装 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・７０

４．８

電源 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・７１

第５章 まとめ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・７３

５．１

研究成果と考察 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・７３

５．２

今後の展開 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ７４

参考文献 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ７５

謝辞 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・７６

第１章 緒言

1

第１章 緒言

本文は，新しい屋外型警備ロボットについて述べたものである．

１．１ はじめに２０世紀初期においてロボットという概念が生まれ，1980 年以降，社会は大量消費を前提とした，大量生産を目的とする社会構造へと変化を遂げる．それに伴い産業用ロボットの需要は，ますます増加の一途をたどることとなる．今日の日本においては，世界中から「ロボット大国日本」と呼ばれるように，世界中の産業用ロボットの約６割が設置され，製造の現場における手段の一つとして定着しており，その技術も成熟段階に入ったと言っても過言ではない．こういった背景化において，今後ロボットの需要は，オフィスで働く，
高齢者看護の補助などといった人間の仕事の補佐や，危険な場所での作業を人間に代わって行うといった，人間の身近なところで働くものが高くなると考えられる．
平成 13 年 9 月 11 日，アメリカにおいて同時多発テロが起こった．これをうけて，日本国内でも緊急対応措置として空港ほか国内重要施設の警備体制強化を打ち出し，警察庁は米国支援を表明した国の大使館を含め，重点警備対象施設を拡大した，在日米軍基地の警備ができるよう自衛隊法の改正を検討するという声も挙がった．これは，日本もテロの対象になり得ることを想定したからである．国内でも小学校襲撃殺傷事件といった従来の危機管理意識を超える犯罪が増えている．つまり，現在，一層の安全確保が強く求められて
いる．
ここ数年，
「ホームセキュリティ」という言葉をよく耳にするようになった．これは，日
本警備保障（現在のセコム）が先駆となった家庭用機械警備システムサービスのことである．警備会社というものは，外国では比較的古くから存在し，19 世紀中頃のアメリカ，西部開拓時代に列車強盗に対する警備と捜査を行うことを業務としたピンカートン社が警備会社のはじまりといわれている．しかし，日本において初めて専業の警備保障会社が設立されたのは昭和 37 年であった．そして，昭和 39 年に行なわれた東京オリンピックにおいて広く世間に知られることとなった．このように，日本において警備会社は，戦後にでてきた歴史の浅い事業である．これは，「水と安全はただ」という根強い国民意識が存在するとともに，かつては，宿直・夜警・守衛・巡視・保安員といった名称で，自社員をもって，自主警備に当たることが多かったからである．また，地域的な防犯力も存在した．地域交流による団結力が不審者の浸入を防いでいたからある．現在は，プライバシーの尊重や核第１章 緒言2

家族化，女性の社会進出などにより地域的な防犯力は著しく低下した．
警備において，人的警備には以下のような問題点がある． ①人命の危険，②人材の教育，③人件費，④労務管理．これらの解決策としてはじめられたのが，「ホームセキュリテ
ィ」のような機械警備である．機械警備は，人命を危険にさらすこともなく，長い目で見れば，初期投資とメンテナンスを必要とするだけで，人的警備より安く済む．警備ロボッ
トは，このような機械警備の一つとしてあげられる．

１．２ 警備ロボッ
警備ロボットロボット
警備ロボットといえば，最近では総合警備保障の「ガードロボＣ３型」，富士重工やセン
トラル警備保障と富士重工の共同開発した「ＲＦＳ２」などが上げられる．
「ガードロボＣ３型」は，自律移動，自動充電，障害物回避，位置認識，遠隔監視，煙・炎・人体・漏水センサによる 異常の検出と通報，同時通話方式の遠隔通話や音声警報といった機能を搭載している．自律移動は，あらかじめロボットに記憶させておく地図によって走行するため，専属のオペレータが常時操作する必要がない．自動充電は，ロボットが充電装置に自動的にドッキングし充電することが可能であり，タイムスケジュールによる自動運用ができる．遠隔監視は，内蔵しているカメラにより現地の情報を画像で確認することで行う．異常検出機能には，遠赤外線センサ・紫外線センサ・近赤外線センサ・光距
離センサなどを用いて，人体検出・炎検出・煙検出・漏水検出を行うことができる．
「ＲＦＳ２」は警備清掃ロボットで，清掃業務と合わせて，警備業務も同時にこなす．
このロボットも自律移動，自動充電，障害物回避，遠隔監視，異常の検出と通報ができる．
自律走行・障害物回避は，ジャイロによる方向制御，車輪からの走行距離検出，障害物センサにより行う．この「ＲＦＳ２」も自動充電機能により，24 時間休むことなく働くこと
ができる．

１．３

「屋外型
屋外型」の必要性

１．２で挙げた警備ロボットは「屋内型警備ロボット」であり，現在ある警備ロボットと呼ばれるものの多くは，そのほとんどが屋内を巡回・監視するものである．屋外の機械警備には監視カメラ・センサーの設置などがあるが，どうしても死角ができ，カメラやセンサだけでは不審者に対しての対応（追い払う・追跡するといった行動）ができず，建物などに設置された装置では範囲が限定されてしまう．警備員の場合，夜間の警備には危険が伴う．とくに，近年は異常気象ため夏場は夜間だけでなく昼間でも，熱中症といった危第１章 緒言3

険もある．よってこれらに替わる屋外の警備手段として屋外を巡回・監視できる「屋外型警備ロボット」が有効であると思われる．また，屋外を巡回・監視できるロボットは，作業環境の悪い場所，例えば原子力発電所などでの活躍も期待できる．本研究では，人（不審者・不法侵入者など）に対応するため，人を追尾する機能をもたせた，屋外を警備できるロボットの開発を目指す．

１．４

本研究のねらい本研究のねらい

本研究は，作製したロボットを用い，警備ロボットに必要な動作とその制御システムの説明をメインにおき，大まかなメカニズムを記載する．

１．５

本文の
本文の構成

本節は本文の構成とその内容についての説明する．第二章では本ロボットの持つ機能についての説明をする．第三章ではメカニズムについて，おもに移動機構に重点をおいて説明する．第四章では制御システムの構成，各部の説明を行う．最後に第五章では本研究の結果と今後の課題についてまとめる．

4

第２章 ロボットの持つ機能

第２章 ロボットの持つ機能
本章では，人間の警備員をサポートするために必要なロボットの機能について述べる．

図 2.1

本研究のロボットを図 2.1 に示す．これは屋外型警備ロボットであり，人間の警備員の負担を減らすための二つの機能を持っている．一つは遠隔操縦機能である．人間が操作をすることで，屋外での警備をサポートすることができる．もう一つの機能は自動的な監視（自律モード）を行う．その内容は，以下のとおりである．ロボットを警備させる場所ま第２章 ロボットの持つ機能

5で移動させた後，ジョイスティックのボタン操作により，静止状態時に，カメラ（画像処理用）が動く物体をとらえると，操縦者側のＰＣに警報（警告音）がながし，異常を報せる．
これらの機能によりロボットを遠隔操縦によって警備をおこなう場所まで移動させ，自律モードに切り替えることで人間の手を離れ自動的に周辺の警備をおこなうことができる．

２．１

遠隔操縦機能遠隔操縦機能は，図 2.1.1 ネットワーク構成図に示すように，操縦者側 PC，警備ロボ
ット側 PC２台の合計３台のＰＣで行う．警備用ロボットに，制御ＰＣ・カメラ用ＰＣを用いることにより，制御と処理速度の重いマルチメディア処理であるコミュニケーション
ツールを区別する事で，システムの安定化を図っている．具体的に，この３台の各ＰＣには，無線ＬＡＮカードが搭載されており，ＴＣＰ／ＩＰを利用した，ＩＰアドレス間通信
をこの３者の間で行う．操縦者側のＰＣと警備ロボット側の制御ＰＣ間はソケット通信を行い，操縦者側のＰＣと警備ロボット側のカメラＰＣ間は，アプリケーションソフトを介した映像通信を行う．
ネットワーク環境は，図 2.1.1 に示すにように，グローバルネット内に，ＮＡＴサーバを兼ねた無線ＬＡＮ中継機器（ルータ）を設置することにより，グローバルネット側から見て閉鎖的なローカルネットエリアを構築している．これにより，グローバルネット内からローカルネット内へのアクセスを不可能とした実験エリア環境を築く．具体的には，操縦者側ＰＣ・警備ロボット側制御ＰＣ・映像転送ＰＣの３者に対して，固定ＩＰアドレスを割り振る．操縦者側ＰＣアドレスを 192.168.0.3，警備ロボット側制御ＰＣアドレスを192.168.0.4，映像転送ＰＣアドレスを 192.168.0.5 とする．この３者のＩＰを固定とする
ことで，今後，ロボットの移動範囲拡大のために無線ＬＡＮ中継機器を増設したとしても，
そのローミング環境内ではロボットの遠隔操作を行うことができる．

第２章 ロボットの持つ機能

6

図 2.1.2 に示すように，操縦者はロボットに搭載されたウェブカメラによる映像を，
操縦者側のＰＣで見ながら，操縦者側のＰＣにつながれているＵＳＢジョイスティックを動かし操縦する．その方法は，無線ＬＡＮカードを通じて受信した命令を元に，ロボット
用インタフェースボードに指令を送る方法を用いる．操縦者側のＰＣのジョイスティック
はゲームポートを介して，ジョイスティックＸ軸・Ｙ軸座標，ボタン１，ボタン２の有無の情報をリアルタイムにて検出し，その情報をソケット通信によって警備ロボット側制御
ＰＣへ送信する．警備ロボット側制御ＰＣは受け取った情報を元に動作へと反映する．ジョイスティック情報の検出をゲームポートから行う理由としては，汎用性の高いデバイス
を用いることによって，家庭・学校等から，遠隔操作を行う際の便利を考慮したものである．

図 2.1.1 ネットワーク構成図

7

第２章 ロボットの持つ機能

図 2.1.2 USB‑Joystick による操縦
２．２ 衝突の衝突の回避機能

図 2.2.1 に示すように，赤外線センサ，超音波センサをロボットの前面に取り付けることによって，遠隔操縦時の衝突を未然に回避する．具体的には，赤外線センサの前方約１５ｃｍ以内に物が接近すると，警備ロボットは自動的に，赤外線センサ後方に対して，反応しない場所まで移動する．

8

第２章 ロボットの持つ機能

超音波センサ赤外線センサ

図 2.2.1

２．３ＣＣＤカメラ
ＣＣＤカメラによる
カメラによる画像処理機能
による画像処理機能

画像処理機能は，物理的対応のために用いる．具体的に，ロボットが自律モード時に侵入者（動く物体）を検知・認識し，その物体に対し接近する際に目標を見失わないために使用する．超音波センサや赤外線センサなどのセンサのみでも，物体を検知して接近していくことはできるが，動くものだけを検知し，追うことは困難である．また，カメラ（画像処理用）は，超音波センサなどよりも，遠くの物体を検知することができるため，ロボットの監視範囲も広がる．

9

第３章 メカニズム

第３章 メカニズム
本章では本研究における警備ロボットの機械構造とその動き，そして実際に作製された警備ロボットを写真を交えて説明する．

正面図

側面図

上面図

10

第３章 メカニズム

３．１

移動機構の
移動機構の構成

本研究での警備ロボットの移動機構は図 3.1.1 に示すように，本体の中心に対して左右に並列に配置した，それぞれが独立して動く２つの駆動輪と，支えとして本体前方に配置した３６０度フリーに動くキャスタで構成されている．両駆動輪の回転方向と回転速度をそれぞれ制御する事により，前進，後進，その場での回転による方向転換，カーブを描いて進むことができる．

前方

駆動輪

フリーキャスタ

駆動輪

駆動輪

＜正面図＞

＜側面図＞

駆動輪

フリーキャスタ

前方＜上方図＞
図 3.1.1

移動機構の構成

フリーキャスタ

11

第３章 メカニズム

３．２

実装

駆動輪，キャスタに使用しているタイヤは，本ロボットの屋外での使用を可能にするために，直径１２０mm のオフロードラジコン用大型タイヤを採用．本体の重量を支えるために，ホイールにはウレタン制のタイヤを削りだしてはめ込むことで軸に対する剛性を高めている．また中空となっているタイヤとホイールの間には発砲ウレタンを注入することで，タイヤがつぶれて沈んでしまう事を解消した．図 3.2.1 左はオフロードラ
ジコン用大型タイヤ，右はホイールにはめ込む前のウレタン製のタイヤである．

図 3.2.1

タイヤ

モータから駆動輪への動力の伝達は傘歯ギアによって垂直に伝えている．これにより駆動輪部をコンパクトにまとめ，本体への取付，位置の調整等を容易にしている．図 3.2.2は駆動輪部の設計寸法図である．

12

第３章 メカニズム

図 3.2.2

駆動輪部設計寸法図

図 3.2.3，図 3.2.4 はそれぞれ本体に取り付けられた駆動輪部とキャスタである．また，
図 3.2.5 は足回り全体を示している．

13

第３章 メカニズム

図 3.2.3

駆動輪部

14

第３章 メカニズム

図 3.2.4

図 3.2.5

キャスタ

足回り全体（本体前方）

15

第４章 制御システム

第４章 制御システム
本章では図 4.1.1 に示す制御システム仕様書を元に，制御システムの構成から制御のながれにはじまり，制御に関する各部の詳しい説明を記載する．

４．１制御システムの構成
制御・ＰＣ
ﾛﾎﾞｯﾄ用ｲﾝﾀﾌｪｰｽﾎﾞｰﾄﾞ

富士通製 A/D⇔D/AUPP ﾎﾞｰﾄﾞ

MotherBord

GIGABYTE GA‑6VA

CPUIntel Cleron 633Mhz

MemoryDIMM 128M × 2

HardDisk

東芝製 NotePC 8G

Sound Card

Creative SoundBlaster128

無線ＬＡＮカード

MELCO 製

センサ系
赤外線センサベストテクノロジ製 ×４

画像ＰＣ
ノート型ＰＣ
カメラ
無線ＬＡＮカードTOSHIBA 製
Creative USB CAMERAMELCO 製
図 4.1.1 制御システム仕様

16

第４章 制御システム

図 4.1.1 に示すように，本ロボットの制御システムは制御ボード，赤外線リモコンセ
ンサ，モータ×２，超音波センサ，そして電源部によって構成されている．制御ボードは
図 4.1.2，図 4.1.3 に示すように，演算用ＣＰＵボードとアナログ信号の入出力用ＡＤ−Ｄ
Ａボードで構成されており，モータはドライバによって制御する．図 4.1.2 は制御システ
ムの構成図であり，矢印向きは入出力する信号の流れを表している．

無線 LAN
トラッキング

駆動輪部

ＣＰＵ

ビジョン

赤外線リモコン

ドライバ

モーター１

ドライバー

モーター２

ＡＤ−ＤＡ

超音波センサ

図 4.1.2

制御ボードの構成はＣＰＵ，メモリを有するＣＰＵボードと拡張ボードであるグラフィックカード，ＬＡＮカード，ＡＤ−ＤＡボード，主記憶装置のハードディスク，入力機器のキーボード，マウス，グラフィックカードからの画像情報を表示するＣＲＴで構成される．

17

第４章 制御システム

ＣＰＵボードＣＰＵ

ハードディスクメモリ

グラフィックカード

無線ＬＡＮカード

ＣＲＴ

操縦者側コンピュータ

ＡＤ−ＤＡボード

アナログ入出力信号
キーボード

マウス

図 4.1.3

４．２ ＣＰＵボード
ＣＰＵボード

図 4.2.1

18

第４章 制御システム

ＣＰＵボードは産業用のものではなく，市販されている組み立てパソコン用のものを使用した．その意義は，処理速度が高速，ＩＳＡバス，ＰＣＩバスを有し拡張性が高い，安価の３点である．よって本研究のＣＰＵボードの構成は一般的なパソコンとなんら変わりは無い．ロボットへの実装を図 4.2.1，図 4.2.2 へ，主なスペックを図 4.1.1 で示す．

図 4.2.2

４．３

ロボット用
ロボット用インターフェイスボード

ＡＤ−ＤＡボードには富士通ロボット用インターフェイスボード ＲＩＦ−０１ を使用（図 4.3.1）．このボードは、図１４に示すようにＩＳＡバス規格のハーフサイズ・ボー
ドに、アナログ入力３６チャンネル、アナログ出力１６チャンネル（−１０ｖ〜＋１０）、
デジタル入出力３２チャンネルを搭載したロボット用インタフェース・ボードである．入19

第４章 制御システム

出力制御チップ部としてＤ/Ａ変換器１２ビット/８チャンネルのＭＰ７６１３（ＥＸＡＲ社製）を２個搭載している．Ａ/Ｄ変換器は１２ビット/８チャンネルのＡＤ７８９１（アナログ・デバイス製）を２個搭載している．さらに，日立製 Universal Plus Processor 以
下ＵＰＰも２個搭載している．インタフェース部としてベース・アドレスはジャンパピン
にて０００Ｈ〜０７Ｆ８Ｈの範囲でＩＳＡバスのアドレス空間のうち，８バイト分の領域を占有し，任意に設定できる．本ロボットは図 4.3.2 が示すようにＲＩＦ−０１ロボット
用インタフェースのＤ/Ａ・Ａ/Ｄ・ＵＰＰの機能を使用する．

図 4.3.1

20

第４章 制御システム

図 4.3.2

第４章 制御システム

21

Ｄ/Ａは駆動用モータを直接制御するロボットドライバへの命令伝達を行う．Ａ/Ｄについては外部センサからのアナログ電圧信号の読み取りを行っている．ＵＰＰについては赤
外線リモコンからのパルス信号を解析している．基本的にＲＩＦ−０１は電圧・パルス信号の読み取り，測定を行う．測定を行い具体的なデータの形で読み取りを行うために下記に示す４つのＣ言語サブルーチンが必要である．

///////////ボードの初期化/////////////////////
int regst( unsigned baseadr){
reg_data=0xcf;_outpw(baseadr+4, reg_data); //ｼﾞｬﾝﾊﾟｰとの認証}
int regstoutpw(unsigned baseadr ,unsigned int regstno){
reg_data=regstno;_outpw( baseadr, reg_data);
return 0;}////////// D/A 出力 //////////////////////////////
double daoutpw(unsigned baseadr,int portno,double value){
int da_data;if( (portno >= 0)&&(portno <= 15) ){da_data = (value + 10.0) / 20.0 * 4096.0; //2048=0v
if (da_data <0) da_data =0;
if (da_data > 4095) da_data = 4095;_outpw(baseadr+2, 0xf0+portno);_outpw(baseadr, (unsigned)da_data);}
else{
printf("チャンネル Era¥n");}}//////A/D ｲﾝﾌﾟｯﾄ ////////////////
double adinpw( unsigned int baseadr ,unsigned int portno ){doublevolt;
int
ad_read_data;
unsigned int
ad_write_data;
ad_write_data = portno*8+5;
if( (portno >= 0)&&(portno <= 15) ){第４章 制御システム_outpw(baseadr+2, 0x70+portno);_outpw(baseadr , portno*8+5);
for(i=0;i<10; i++) ad_write_data=i;ad_read_data=(signed)_inpw(ba  Mseadr );if(ad_read_data & 0x0800) ad_read_data |= 0xf000;
volt = (double)ad_read_data / 2048 * 10;return(volt);}
else{
erron=(1);return(erron);}}22

・ボード初期化
ボード初期化
ＲＩＦ−０１ボードの初期化をするにあたって regst(base_adr)のサブルーチンを使用
する．_outpw(baseadr+4, reg_data)によってあらかじめ図 4.3.2 に示すようにＩＳＡバス
上のジャンパピンの設定状態と reg_data=0xcf=base_adr という状態を一致させる．この命令をメイン文に記載することによってこのボードを待機状態に維持することができる．
尚，下記に述べる機能は全てボードの初期化を必要とする．

・Ｄ/Ａ
このボードのＤ/Ａ部の機能を使用する場合，上記の初期化手順によってこのボードへのアクセスを行う．その後，例えば図１４に示すようにＣＮ１アナログ出力のチャンネル１に対して＋５ｖの出力を行う場合，daoutpw(base_adr,1,5.0)となる．また，チャンネル５に対して−７ｖの出力を行う場合，
daoutpw(base_adr,1,-7.0)となる．

・Ａ/Ｄ
Ａ/Ｄを使用するにあたって adinpw()のサブルーチンを使用する．Ａ/Ｄ部はアナログ電圧の入力であり，Ｄ/Ａ部はアナログ電圧の出力である．故にＣ言語上で読み取った電圧値

第４章 制御システム

23を測定するためにサブルーチンの最後で下記の命令を実行する必要がある．
volt = (double)ad_read_data / 2048 * 10;return(volt);

このサブルーチンの戻り値である volt は０ｖ入力の場合，２０４８という値がad_read_data ということになる．つまり，ad_read_data は−１０〜＋１０間の測定に対して０〜４０９６の変動がある．その変動を電圧の変動値としてわかりやすく表示を行う
ために上記の計算を行っている．具体的に v=adinpw(base_adr,0)と指定する事により，図4.3.2 に示すＣＮ２アナログ入力チャンネル１の電圧信号を読みとることができる。

・ＵＰＰ
ＵＰＰの使用にあたって下記の特別な初期化設定が必要である．
///////////UPP 初期化////////////////////////////////////////////
初期化////////////////////////////////////////////_outp(base_adr+2,0x11);//////←//////←1_outp(base_adr,0xff);//////←//////←2_outpw(base_adr+2,0x03);////////////←////←3
upp= _inpw(base_adr)//////←_inpw(base_adr)-32768;//////←4
図 4.3.2 に示すＣＮ３ＵＰＰ１６チャンネルのデジタル入出力端子の１〜８チャンネル
を下位ビット，８〜１６チャンネルを上位ビットと定める．上記ソースの１の行によって下位ビット８に対して，ＭＰＵ（直接入力）モードに設定を行う．次に，２によりＭＰＵ
ポートに指定する端子を１６ビットの形で指定を行う．この場合，ｆｆという指定により全ての端子がＭＰＵ端子として設定されることとなる．各チャンネルのモード設定を行った後，３により上位ビットからの信号を判断するのか下位ビットからの信号を判断するのかを指定する．つまりＵＰＰはマイクロコンピューターである故に，Ａ/Ｄなどのような入力信号を直接受け渡すのではなく．そのまま使用できるデータの形に変換する処理を施すことができる．よってここでは下位８ビットを指定することにより入力されたチャンネル

24

第４章 制御システムをビット変換した形を４のような命令により取得することができる．

４．４ ロボットドライバ

モータの制御用ドライバには，岡崎産業製 Titech Robot Driver Ver.1 を使用する．
ここでは，ドライバの特性と実装について述べる．

４．４．１ TITECH ROBOT DRIVER について

TITECH ROBOT DRIVER の特徴として，小型，軽量，高出力（750W），低自己消費型(PWM 駆動)，であり，電流制御，速度制御，位置制御の３つのモードがある．また，タコジェネ無しでの速度制御や同じくタコジェネ無しの即応性の良い位置制御を実現して
いる．

項目

仕様

定格出力電圧±30V

定格出力電流±3.8V

最大出力電圧±45V

最大出力電流(連続)±16.7V

最大出力(連続)

750W

主電源

ＤＣ12〜48V

指令入力電圧±10V

外形寸法(L W H)

100＊90＊35

備考

十分な放熱板使用時

25

第４章 制御システム
重量

130g

放熱板を除く

電流制御
制御モード

速度制御

タコジェネ不要

位置制御
保護機能

モータ・ブレーキ機能

電流制限
電気ブレーキ停止

モータ端子短絡

フリー・停止モータ端子開放

正逆転限界停止

リミット・スイッチ使用

図 4.4.1.1 駆動回路の諸仕様

前述したように，動作モードは，それぞれ電流制御，速度制御，位置制御モードの三種類ある．本研究では，このモードの中から速度制御モードを設定した．速度制御モードは（図 4.4.1.2）でフィードバックに用いるモータの回転速度情報は，擬似タコジェネレータ
回路によって演算する方法と，外部の機械的タコジェネレータによって測定する方法の二
つがある．

26

第４章 制御システム

図 4.4.1.2 速度制御モード

PIN

信号名

備考

５

＋５Ｖ

＋５Ｖ（５〜６Ｖ），0.1Ａ電源

４ＧＮＤ

５Ｖ電源の０Ｖ端子

３ＧＮＤ±１５Ｖ電源の０Ｖ端子

２

＋１５Ｖ

＋１５Ｖ±１０％，0.1Ａ電源

１

−１５Ｖ

＋１５Ｖ±１０％，0.1Ａ電源
図 4.4.1.3 ＣＮ１

27

第４章 制御システム
PIN

信号名

備考

12

ＲＥＦ

指令信号，入力インピーダンス：100Ｖ

11

ＣＯＭ

グラウンド端子10ＥＢＫ

電機ブレーキ（モータ端子短絡）

９ＲＬＳ

正回転リミットスイッチで電機ブレーキ作動

８

ＬＬＳ

逆回転リミットスイッチで電機ブレーキ作動

７

ＭＴＦ

フリー停止（モータ端子解放）

６ＣＯＭグラウンド端子

５ＣＯＭグラウンド端子４

ＴＧ

タコジェネ入力／電子ガバナ出力

３ＮＦＢ

位置制御用ポテンションメータ・フィードバック

２

＋１０Ｖ

最大１０ｍＡ１−１０Ｖ

最大−１０ｍＡ
図 4.4.1.4 ＣＮ２モータ電機子抵抗値Ｒa の補償，電子ガバナ回路を正常に動作させるには，使用するモー
タの電機子抵抗値Ｒa に合わせて調整する必要がある．そのためには，電機子抵抗値Ｒaをモータの規格書から，もしくは実際に測って調べ，ＶＴ１を調整するＶＴ１res を計算
する．
ＶＴ１res＝５００／３Ｎturns ＊Ｒa [ｋΩ]
ＶＴ１は０〜ＶＴ１max[Ω]の範囲で調整でき，その回転量ＶＴ１pos は次式のように計算できる．
ＶＴ１pos＝ＶＴ１res／ＶＴ１max
ただし，標準仕様では電流センサ一次側巻数はＮturns＝３，半固定抵抗ＶＴ１はＶＴ１
max＝２００ｋΩである．なお，ＶＴ１の設定は，ＶＴ１上に刻まれた印をもとに目測で

28

第４章 制御システム

おこなうため，設定値に多少のずれが生じる．ここで注意しなくてはならないことは，この設定値を計算値より大きくした場合，回路の動作が不安定になることである．そのため計算値より少なめに設定しなければならない．モータ回転速度の計算，電子ガバナ回路使用状態では，コネクタＣＮ２の４番ピン（ＴＧ）からモータの回転速度ωp をモニターできる．ωp[rpm]は，ＴＧ端子の出力電圧Ｖp[V]に次のように直線的に比例する．
ωp＝（Ｖrated／３００）＊ ωfree ＊ Ｖｐ
ただし，Ｖrated[V]はモータの定格電圧，ωfree[rpm]は定格電圧での無負荷回転数であり，対象とするモータの説明書から調べたものを使う．
速度フルスケール調整(ＶＴ４)．最大入力指令電圧に対するモータ速度ωfn をフルスケール速度と呼ぶ．
Ωfn は，ＶＴ４の回転量ＶＴ４pos(０〜１００％)によって，次式のように計算する．
ωfn＝(４７／１００ＶＴ４pos＋４７)＊ωpmax[rpm]

速度制御モードの電流制限の調整については，ＶＴ５の回転量を７０％以下に設定する．
以上の特性から，モータへの実装について述べる．

４．４．２ ロボットドライバのロボットドライバの実装

本ロボットの駆動用モータ電圧を直接制御しているロボットドライバを図 4.4.2.3 に示す．また，その構成図を図 4.4.2.4 に示す。このロボットドライバは図 4.4.2.4 に示す１１、１２（ＣＯＭ、ＲＥＦ）にＤ/Ａからの信号を入力することによりＶｄｄ、０に接続された
ＤＣバッテリーをエネルギー源として駆動用モーターの制御を行う。ロボットドライバ自体の制御モードとして「速度制御モード」
・「電流制御モード」があり、図 4.4.2.4 に示す
ＳＷ１の切り替えによりモードを選択することが可能ととなる。本ロボットは速度制御モ

第４章 制御システム

29

ードを利用してモーター制御を行う。具体的に制御対象となるモーターは４つ存在するのでロボットドライバは各々４つ必要となる。故にＤ/ＡチャンネルはＣＨ１〜４チャンネルを使用する。各チャンネルの信号端子とグラウンド端子を図 4.4.2.4 に示す１１、１２（ＣＯＭ、ＲＥＦ）に接続し、下記に示すＣ言語プログラムによりロボットドライバへの命令を行う。

daoutpw(base_adr,1,0.0); //出力//出力 CH1⇒
CH1⇒ロボットドライバ１
ロボットドライバ１
daoutpw(base_adr,2,0.0); //出力//出力 CH2⇒CH2⇒ロボットドライバ２
ロボットドライバ２
daoutpw(base_adr,3,0.0); //出力//出力 CH3⇒
CH3⇒ロボットドライバ３
ロボットドライバ３
daoutpw(base_adr,4,0.0); //出力//出力 CH4⇒CH4⇒ロボットドライバ４
ロボットドライバ４

上記Ｃソースはロボットドライバに対して０ｖを入力している。故にドライバに接続されているモーターは停止状態を維持する。速度、制御モードを用いることにより４つのドライバに対して例えば、下記のようなプログラムを実行するとdaoutpw(base_adr,1,10.0); //出力//出力 H1⇒
H1⇒ロボットドライバ１
ロボットドライバ１
daoutpw(base_adr,2,10.0); //出力//出力 H2⇒
H2⇒ロボットドライバ２
ロボットドライバ２
daoutpw(base_adr,3,10.0); /出力 CH3⇒
CH3⇒ロボットドライバ３
ロボットドライバ３
daoutpw(base_adr,4,10.0); //出//出 CH4⇒CH4⇒ロボットドライバ４
ロボットドライバ４

ロボットドライバは−１０ｖ〜＋１０ｖまでの勾配により接続されているＤＣバッテリ
ーにより速度制御を行うので、例えば接続されているＤＣバッテリーがＤＣ２４ｖだとす
るとＭＡＸの２４ｖをモータに流し制御を行う。また、Ｄ/Ａからの値がこれと逆の−１０だとするとドライバは−２４ｖをモータに供給し制御を行うことになる。つまり、モータ
はＤ/Ａからの電圧信号が０ｖだと停止、＋信号を正回転、−信号を逆回転となる。また、
４つのモータ全て、例えば＋４ｖというＤ/Ａからの信号が入力されると。図 4.4.2.4 に示

30

第４章 制御システム

制御電圧

出力電圧
0

0

0.5

1.7

1

3.2

1.5

4.6

2

6.09

2.5

7.54

3

9

3.5
4

10.44
11.9

図 4.4.2.1

すＶＴ１〜ＶＴ５を調節する事によりほど同回転での制御が実現され。ロボットは直進や斜め移動を簡単に実現することが可能である。その入出力の関係を図 4.4.2.4 に示す．また，ロボットドライバ使用にあたって注意として、図１９に示す Vdd、０に対して大容量のアンペアを持つＤＣ電源を使用する際、図 4.4.2.4 に示す１１、１２（ＣＯＭ、ＲＥＦ）
に対してＤ/Ａからの入力電圧がまったくない場合、先に Vdd、０にＤＣ電源を接続してしまった場合、ボードの暴走を引き起こしてしまう可能性が十分にあるといことである。この点に注意して使用すればボード、モーターの破損はまずないと考えられる。実際、本ロボットに積んだ場合。図 4.4.2.4 に示す Vdd、０にスイッチを取り付けることによって上記の危険性から回避することができた。しなしながら最終的にそのスイッチを押すのはプ
ログラムではなく人間であるので、Ｄ/Ａ入力電圧を確認した後に入電するよう心がけなけ
ればならない．

31

第４章 制御システム
TITECHロボットドライバ
14
12

出力電圧

10
8
系列1
6
4
2
0
0

1

2

3
制御電圧

図 4.4.2.2

図 4.4.2.3

4

5

32

第４章 制御システム

図 4.4.2.4

４．５

モータ制御
モータ制御

本研究のロボットの駆動には，日邦電機株式会社製の型式 MM−26EH HIGH SPEED
MOTOR（図 4.5.1.1）を 2 個使用した．

33

第４章 制御システム

４．５．１ モータについて
モータについて図 4.5.1.1

34

第４章 制御システム

MM−26EH HIGH SPEED MOTOR は高速，高出力で頻繁な起動・停止動作をおこな
う電動工具用モータのため，苛酷な使用に耐えられるようにつくられている．また，このモータは，減速機付きのモータであるため，大トルクを出すことができる．
ここで使用したモータは，ブラシ付きＤＣモータという種類のものである．ＤＣモータとは，直流で駆動するモータを（広義で）総称していう．ＤＣモータには，ブラシ付きＤ
Ｃモータ以外にも，ブラシレスＤＣモータ，ステッピングモータ，アクチュエータなどがある．
ブラシ付きＤＣモータ（ＤＣモータ）は，ブラシ，整流子，そしてコイル（電磁石）を組み合わせたもので，電流を力に変換し動作する（図 4.5.1.2）．ブラシは，電流を整流子に送る（整流子と接触することにより、その先にある電磁石に電流を流す）役割をしている．整流子とは，モータの回転子に取付けてブラシに接触する部分のことで，コンミュテーターともいう．

図 4.5.1.2
ブラシ付きＤＣモータの長所は，起動トルクが大きく，出力効率が高いこと，他のモータと比べると安価であることが挙げられる．また，短所としては，整流子の寿命に限界があることや整流時に電気的ノイズが発生することが挙げられる．

35

第４章 制御システム

４．５．２

モータの
モータの実装モータに対する指令信号は図 4.5.2.1 に示すロボット用インタフェースボードのＤ／Ａ
出力チャンネル０，１より出力し，それぞれのモータに接続されたドライバに信号を送る．
ドライバは指令された信号に応じて電源からモータへと電流を流す．図 4.5.2.1 はドライ
バによって制御されるモータのイメージ図である．

ＤＣ１２ｖ
＋

−

指令信号
MOTOR

DRIVER

図 4.5.2.1

４．６

環境認知センサ
環境認知センサ

本ロボットは，環境認知センサとして，超音波センサ，赤外線センサ，カラートラッキ
ングビジョンを用いる．

４．６．１

超音波センサ
超音波センサ

超音波とは，人間の可聴範囲以上の（約１６ｋＨｚ）の音波をいう．超音波は音であるから常温の空気中を約３４０ｍ／ｓの速度で伝播する．よって，音は１ｃｍの距離を約２８μｓｅｃだけの時間をかけて進む．すなわち超音波を発射してから物体に反射して戻っ

36

第４章 制御システムてくるまでの時間を測定すれば，超音波の送受波器から物体までの距離を知ることができる．超音波を発射してから，反射波が検出されるまでの時間をＴμｓｅｃとすると，物体までの距離ｄは，

d = 0.5T * 340 * 0.001 = 0.17T [mm]で計算できる．このため超音波センサは，障害物の検知や距離測定，自機座標の確認などによく使用される．しかし，硬い物（金属，木材，コンクリート，ガラス，ゴム，紙など）は超音波をほぼ１００％反射するのでこれらの物体の有無は十分検知することが出来るが，布，グラスウール，綿のやわらかく空気を含んでいる物体は超音波を吸収するため物体の有無を検知し辛い．また，物体の表面の起伏が大きいものは，超音波が乱反射するため検知しにくいことがある．
超音波センサと呼ばれるものは，電気信号を超音波に変換した後，空中に発射する送波器と空中を伝搬してきた超音波を受けてそれを電気信号に変える受波器の二つをあわせたものを指す．今回使用する空中用超音波センサは，電気信号を超音波に変換するための振動子として圧電セラミックを用いたものである．
電極をもうけて分極された圧電セラミックにおいて，電極間に電圧を加えると，この電圧に対応した機械的な変形が生じ，また圧電セラミックに外部から応力を加えると電極間に電荷が発生する．これを圧電現象といい，今回使用した超音波センサは，この圧電現象を利用している．構造は，圧電セラミックに金属板を貼り合わせたユニモルフ構造の振動子で形成されている．

37

第４章 制御システム

図 4.6.1.1 振動子原理図（図 4.6.1.1）この振動子に信号電圧を加えると屈曲振動を起こし，この機械振動周波数と信号電圧の周波数を一致させたときに最も効率的に超音波を空中に放射する．また，振動子に空中からの超音波の波動が加わると，振動子に屈曲振動が生じ振動子の電極間に波動に応じた電気の出力が発生する．前者が送波器で，後者が受波器として用いられる．

図 4.6.1.2 振動子構成図

38

第４章 制御システム

この超音波センサは，開口型超音波センサといい，ユニモルフ振動子と共振子を結合して構成されている開口型のため非常に感度が高いのが特徴である．サイズは，外形１０〜２４ｍｍで，主な周波数として，２５ｋＨｚ・３２ｋＨｚ・４０ｋＨｚの３種類がある．

４．６．２ 超音波センサ
超音波センサのセンサの実装図 4.6.2.1 に示すのは，ベストテクノジー製８方向超音波センサボードである．図 4.6.2.2にその構成図を示す．このセンサボードは基本的にＡ/Ｄからの入力によって対象物の検知を行うことができる．しかしながら８チャンネルのチャンネル切り替え時においてＤ/Ａからの５ｖ信号を必要とする．

図 4.6.2.1

39

第４章 制御システム

図 4.6.2.2 超音波構成図
具体的に、図 4.6.2.2 に示す「チャンネルコントロール」部においてＣＮ１〜３に対して５ｖ信号を入力すると接続されている超音波８チャンネルが切り替わる構成になっている．例えば，１チャンネルに接続されている超音波センサを使用したい場合０ｖ・０ｖ・５ｖをＣＮ３・ＣＮ２・ＣＮ１に対してＡ/Ｄから入電を行う．これによりボード回路構成
がチャンネル１に対する処理を開始する．
超音波センサは対象物までの距離をリアルタイムに測定することができるものもあるが，このセンサボードに関しては予め設定した距離まで近づくと応答がある．つまり，その距離に対して対象物が有るか無いかのみの判断を行う．

40

第４章 制御システム

４．６．３

赤外線センサ赤外線センサ赤外線センサは，可視光のセンサでは実現できない特徴を持っている．一つは，人間の視覚を刺激しないで対象物の検出が可能である．もう一つは，対象物の温度を遠方から非接触で瞬時に測定できることである．このような特徴から，高炉・焼成炉・重合反応器などの温度制御技術，材料の均一性・異種材料の接合部の良否・応力分布などを温度分布から測定する技術や病気の原因となっている炎症箇所検知，腫瘍検知などの新しい医療技術などにも使われはじめている．赤外線センサは動作原理により，２種に大別することができる．１つは熱型赤外線センサ，もう１つは量子型赤外線センサである．熱型赤外線セン
サは，感度，応答速度は低いが，波長帯域が広く常温で使用でき，使いやすいという特徴があり，量子型赤外線センサについては，検出感度が高く，応答速度が速いなどの特徴を持っている．本ロボットに使用する赤外線センサは，ロボット自身の反応速度をあげるた
め，検出感度が高く，応答速度の早い量子型赤外線センサを使用した．

４．６．４

赤外線センサ赤外線センサのセンサの実装本ロボットに使用した赤外線センサは光変調回路を搭載しており，外乱光に影響されにくいセンサの発光部から最大約 800ｍｍ離れた物体を検出することができる（図 4.6.4.1，
図 4.6.4.2）．また，検出レベルは，発光素子のフィルタ窓の開閉を調整することで変更できる（図 4.6.4.3，図 4.6.4.4）．

41

第４章 制御システム

図 4.6.4.1 光センサ写真

図 4.6.4.2 寸法図

42

第４章 制御システム

図 4.6.4.3 感度調整ネジの写真

図 4.6.4.4 かんどちょうせいネジの絵

このセンサはＡ/Ｄへの入力において使用することができる．図 4.6.4.4 に示す構成図より右より＋・出力信号・Ｇとなっている。＋、Ｇに対してＤＣ５ｖを入電することによりこのセンサは作動し，図 4.6.4.1 に見られる２つレンズ，発光レンズと受信レンズにより対象物を判断し，図 4.6.4.4 に示す出力信号より，その判断結果を電圧信号により出力を行う．出力された電圧信号は図７に示すように，ＲＩＦ−０１のＡ/Ｄ部へ接続により読み取ることが可能となる．本ロボットはこのセンサを８方向に取りつけることによりロボットの周囲に対物があるかないかを判断できる．具体的な使用として下記のＣ言語ソース

第４章 制御システム

43

により，Ｓ１〜Ｓ８にセンサ出力値が代入される．
S1=adinpw(base_adr,8); //入力//入力 CH＿
CH＿8
S2=adinpw(base_adr,9);S2=adinpw(base_adr,9); //入力//入力 CH＿
CH＿9
S3=adinpw(base_adr,10);//入力
S3=adinpw(base_adr,10);//入力 CH＿
CH＿10
S4=adinpw(base_adr,11);//入力
S4=adinpw(base_adr,11);//入力 CH＿
CH＿11
S5=adinpw(base_adr,12);//入力
S5=adinpw(base_adr,12);//入力 CH＿
CH＿12
S6=adinpw(base_adr,13);//入力
S6=adinpw(base_adr,13);//入力 CH＿
CH＿13
S7=adinpw(base_adr,14);//入力
S7=adinpw(base_adr,14);//入力 CH＿
CH＿14
S8=adinpw(base_adr,15);//入力
S8=adinpw(base_adr,15);//入力 CH＿
CH＿15

前節で記載した超音波センサと赤外線センサはどちらも非接触にて物の有無の検出を行うものであるが，超音波センサは布などの超音波を吸収する物体の検知が難しい．また，赤外線センサは光の反射を利用しているため，ガラスなどの透明な物体の検知ができないという欠点があるため，２種類のセンサを併用する事でそれぞれの欠点を補い，より正確な物体の検出が可能となる．

４．６．５ カラートラッキングビジョンＰＣＩ
カラートラッキングビジョンＰＣＩ

画像処理は富士通株式会社のカラートラッキングビジョンＰＣＩ（図 4.6.5.1）を用いて行う。ここでは，トラッキングビジョンの主となる「動きベクトル計算」
・「累積相関」の２つの説明を行う．
このボードは専用ハードウェアを用いることにより，ＲＧＢカラーでの相関演算を３３ｍｓの間に５００回以上計算することで複数のターゲットを追跡することが可能となり，
１テンプレート最大１２８×１２８画素による複数のテンプレートとの比較を可能とし44

第４章 制御システムている．トラッキングビジョンの柔軟なメモリアクセス機能は，２つの画像メモリ間での高速ＤＭＡ転送機能によってすばやくデータのやり取りを行えるようになっており，動きベクトル・オプティカルフローの計測や，パターンマッチング処理をビデオレートで実現している．警備ロボットにこの動きベクトルの測定機能を用いることによってロボットは任意の作業を画像によって判断することが可能となる．

図 4.6.5.1

・ 動きベクトルのベクトルの計算

動きベクトルとは，特定のターゲットが，どちらにどれがけ動いたかを表す量である．
例えば図 4.6.5.2 のようにフレームｆでｐｆの位置にあったターゲットが次のフレームにおいてｐｆ＋１の位置に移動したとすると，ｐｆとｐｆ＋１を結ぶベクトルの動きベクト
ルがｖとなる．

45

第４章 制御システム

図 4.6.5.2
カラートラッキングビジョンはカメラからの入力画像を時間を追って画像メモリに記憶し，高速ＤＭＡにより相互比較することで，特定のターゲット領域が次の瞬間（時間）どこへ移動したのかを判断することが可能である．具体的にターゲットとなる物のポイントを囲む矩形領域を考え，この画像ブロックに対して述べる相関演算と呼ぶ処理を実行し動きの対応を求めるものである．相関演算とは図 4.6.5.3 に示すように追跡対象とする矩形領域
を参照ブロック（テンプレート）として抽出した上で，次のフレームの候補ブロックとの間で，画像の相関値を計算するものである．候補ブロックを２次元的にスキャンしながらこれを繰り返し，相関が一番高い位置を求める．これによって特定の目標が次のフレーム
でどこに動いたかを示す動きベクトルを知ることができる．尚，候補ブロックがスキャンする領域全体を候補ブロックと呼ぶ．具体的に相関演算では，以下の式で示すブロック内の画像ごとの濃度差の絶対値による総和を求めている．

46

第４章 制御システム

Ｒ（ｘ，ｙ）は参照ブロック，Ｓ（ｘ，ｙ）は探索ブロックの画像データである．Ｄ（ｕ，ｖ）を動きベクトルに対応するディストーションと呼び，ディストーション値がもっとも小さくなる位置をもっとも相関の高い位置とみなし，動きベクトルを求めている．カラー
トラッキングビジョンでは，参照ブロックサイズは８×８画素を基本としており，動きベ
クトルの探索範囲（ｕ，ｖの値）は，−８〜＋７画素に固定される．その結果，探索ブロ
ックサイズは２３×２３となっている．参照ブロックの位置や探索ブロックの位置は，パラメータとして指定することが可能である．また，複数のターゲットに対する動きベクトルの追跡・測定は１フレーム（３３ｍｓ）の間に，異なる参照・ 探索ブロックに対して複数回の相関演算を行うことによって可能となる．

図 4.6.5.3
・累積相関

カラー画像を参照した追跡処理・大型テンプレートでの追跡処理を可能とするため，カラートラッキングビジョンでは、累積相関と呼ぶ方式を用いている．
累積相関とは下記に示す式のように，直前の相関値Ｄｋー１(u,v)に今回の相関演算結果を加算することで，新しい相関値Ｄｋ(u,v)を検出できる演算である．

47

第４章 制御システム

この演算を実行するためにカラートラッキングビジョンでは図 4.6.5.4 に記するように相関演算回路の後段に２ポートの画像メモリを搭載している．

図 4.6.5.4
累積相関を用いることによって，図 4.6.5.3 に示すようにＲＧＢ各プレーンごとに相関演
算を行わない結果を累積することで，カラー画像を用いた追跡処理が可能となる．また，複数の部分テンプレートでの演算結果を累積することによって大型テンプレートを等価的に実現している．例えば，図 4.6.5.5 に示すように１６×１６画素のテンプレートで相関演算を行いたい場合，参照ブロックを４つの８×８テンプレートに分割し順次相関演算を行う．この際，探索ブロックの位置も図のように順次ずらす．そして，４回の演算で得たデイストーションを全て累積することにより等価的に１６×１６画素テンプレートに対するディストーションを得ることが可能となる．しかしながらこの方法においてはＲＧＢ
３つのテンプレートに対する処理を行うことになるので１つのプレーンで処理を比較した
場合，３倍の処理時間を必要とすることになる．また，１６×１６画素のテンプレートに対する処理は８×８画素のテンプレートと比較した場合，４倍の処理時間を必要とすることになる．プログラミングを行う際，機能と処理速度のトレードオフを行い，用途に応じた適切な処理を選択しなければならない．

48

第４章 制御システム

図 4.6.5.5

４．６．６ カラートラッキングビジョン
カラートラッキングビジョンＰＣＩ
トラッキングビジョンＰＣＩのＰＣＩの実装以下のプログラム trv()を元に，警備ロボットへの実装について述べる．
下記のプログラム trv()は，１個のウインドウに対して追跡処理を実行する最も基本的なプログラムである．追跡はカラー画像を参照し，カラーでの相関演算を繰り返し行いながら実行する．追跡ポイントは画像の中央に固定されている．また，追跡に必要なテンプレ
ート画像を取得するために，最初に１枚静止画を取り込んでから，追跡処理を開始する．

第４章 制御システム
void trv(){
int size,mag,roff,soff,h0,v0,h,v,rh,rv,sh,sv,I,I2=0,I3=0;
int dh,dv,mdist,dhz=0,dvz=0,mdistZ=0,devn=0,H=0,V=0;
int X=0,Y=0,z,Z=0;
double volt,a,b,c,d,e,f,g,i,j,k,S1,S2,S3,S4,S5,S6;/*初期パラメータ*/
f=300;//追跡時間をフレーム数で指定
bsize=32;//参照ブロックサイズ
mag=2;//拡大率（間引き率）
h0=320;//参照ブロックの中心座標（Ｈ）
v0=240;//参照ブロックの中心座標（Ｖ）
h=h0;//探索ブロック初期中心座標（Ｈ）
v=v0;//探索ブロック初期中心座標（Ｖ）////参照・探索ブロックの中心から左上座標を計算するオフセット
roff = bsize*mag/2;//32
soff = roff+8*mag;//48/////////////////初期//////////////TrvInut();
TrvSetSyncMode(EXTERNAL);
TrvVideoThrough();
TrvSetSample(devn,mag‑1,mag‑1,mag‑1,mag‑1);//間引き率指定
TrvFetchImage(devn,0);//参照画面取り込み
TrvVideoInput(devn,DOUBLE̲BUF,0);//画像入力開始
for(;;){
TrvWaitNextFrame(0);//////////カラー相関演算////////
rh = h0 ‑ roff;//320‑32 = 288
rv = v0 ‑ roff;//240‑32 = 208
sh = h ‑ soff;//320‑48 = 272
sv = v ‑ soff;//240‑48 = 192
TrvColorCorAny(
devn,bsize,//参照ブロック水平サイズ（８の倍数を指定）
size,//参照ブロック垂直サイズ（８の倍数を指定）
VRAM̲REF,//参照ブロックを取り出す VRAM 番号
VRAM̲SER,//探索ブロックを取り出し VRAM 番号rh,//298 参照ブロック水平アドレス（左上角）
rv,//208 参照ブロック垂直アドレス (左上角）sh,//探索ブロック水平アドレス（左上角）sv,//探索ブロック垂直アドレス（左上角）0,//累積指定０：累積しない１：累積する
0,//参照ブロックマスクデータＩＤ番号0,//探索ブロックマスクデータＩＤ番号&dh,//（出力）動き水平ベクトル&dv,//（出力）動き垂直ベクトル&mdist//（出力）最小相関値);
TrvDrawBox( h‑roff, v‑roff,h+roff, v+roff, 0);h += (dh * mag); //新しいカーソルを書く
v += (dv * mag);
TrvDrawBox(h‑roff,v‑roff,h+roff,v+roff, VL̲RED);}
TrvVideoStop(0); //画像入力停止

49

第４章 制御システム

50}

trv()では，最初に幾つかのパラメーター設定行う．f=300 は３００フレームの間追跡を行うことを指定している．bsizze=32，mag=2 は３２×３２画素の参照ブロックを用い，拡大率２で追跡を行うことを指定している．拡大率を２としているので見かけ上６４×６４画素のテンプレートで追跡をしているように見える。h0=320、v0=240 は，参照ブロック（テンプレート）の中心座標であり，ｈ，ｖは探索ブロックの中心座標である．このプログラ
ムは最初に取り込んだテンプレートを固定的に使うのでｈ０，ｖ０は一定である．一方，
ｈ，ｖはターゲットの動きに応じて順次更新されることになる．尚，参照ブロックと探索
ブロックの実際の指定は，中心座標でなく左墨の座標で行うことになっている．このために中心から左隅を算出するための定数 roff とsoff を下記の用に事前計算する必要がある．

roff = bsize * mag / 2;
soff = roff + 8 * mag;

カラートラッキングビジョンは TrvInit()に始まる３つの関数，TrvSetSybcMode()，TrvVideoThrough()によっては初期化される．
期化後 TrvSetSample(0,mag‑1,mag‑1,mag‑1,mag‑1)
によって間引き率をセットする．TrvSample()を一旦実行すると，それ以降の全ての相関演
算でこの間引き率に従った処理が実行される．
尚，
TrvSetSample()で指定する間引き率は，０が間引き無しを意味するものであるので拡大意率ｍａｇから１を引いて与える必要がある．また，間引き率は，参照ブロックと探索ブロックで独立に指定でき，かつ水平方向と垂直方向の間引き率を独立に指定することができる．次に TrvFetchImage()を実行し，図4.6.6.1 に示すように画像メモリ#0 に静止画を取り込む．カラー・トラッキングビジョン
を用いて追跡処理等を実行するためにはビデオ画像の入出力を正しく制御し，これに同期

51

第４章 制御システム
して処理を行う必要がある．

具体的に,TrvVideoInput( int devn, int mode, int mem)を実行することによって，図4.6.6.1 に示すようにカメラからの動画像が順次画像メモリに保存される．この時，引数mode と mem で指定したモードに従って，メモリローテーションが行われる．ローテーショ
ンには２つのモードがあり，
ここでは２画面切り替えモード(DOUBLE̲BUF)を用いる．
また，
画像入力中はカメラ画像がモニタへスルー表示される．

図 4.6.6.1
画像入力を開始した後，for 文の中で毎フレームごとに行閧処理を記述する．

for(;;){
TrvWaitNextFrame(0);..................
..................
/*追跡処理/*追跡処理*/追跡処理*/..................
}
TrvWaitNextFrame()はフレームの開始地点を待ち合わせる関数である。この関数により，画像信号に同期しながら，処理を繰り返すことができる．一連の追跡処理は原則として１

第４章 制御システム

52

フレーム（３３ｍｓ）の間に終了するように設計されなければならない．尚，２フレーム毎（６６ｍｓ毎）に処理したり，逆に１/２フレーム毎に処理したりというようにフレーム周期を変えることも可能である．for 文の中では実際以下の関数が相関演算を行っている．
TrvColorCorAny(0,
bsize,
bsize,
VRAM̲REF,
VRAM̲SER,
rh,
rv,
sh,
sv,
0,
0,
0,
&dh,
&dh,
&dv,
&mdist);TrvColorCorAny()は，任意の参照ブロックサイズでカラー相関を実行する関数であり，ＲＧＢ３つのプレーンについて順次相関演算を行いその結果を累積した後，動きベクトルを求める。相関演算の結果，ｄｈ，ｄｖに動きベクトル（ｄｈ、ｄｖ＝−８〜７）がｍｄ
ｉｓｔに最小ディストーション値がセットされる．TrvDrawBox()は，オーバーレイプレー
ンにロックカーソル（四角の枠）を描画する関数である．前フレームで描画したカーソルを消すために，値０のカーソルを描画し，次に新しい座標でカーソルを描画する．
TrvVideoStop()は，動画像の入力を停止するためのものである必ずしも実行する必要はないが省エネのためにアイドリング状態に戻す方が好ましいと考えられる．
下記の式において，具体的な制御パラメーターｈ，ｖに着目して考えると．
h += (dh * mag);v += (dv * mag);
ｍａｇは拡大率であり．ｄｈ，ｄｖは TrvColorCorAny()の関数によって，求められた対象

第４章 制御システム

53

物の動きベクトルである．故にｈ，ｖはリアルタイムに更新されたモニターに映る対象物の現座標である．この座標値を元に，ロボット制御を行う．具体的に，ｈ，ｖの値をロボット用インターフェースボードＤ／Ａ 出力に反映させ，モータ制御を行う．

４．７

遠隔操縦

本研究は，インターネット通信でよく使われる．ＴＣＰ／ＩＰを利用した，サーバ・ク
ライアント方式をとった遠隔操縦を行う．ここでは，そのサーバクライント方式におけるソケット通信の説明，および，ソケット通信を利用した遠隔操縦への実装と応用について述べる．

４．７．１ サーバクライアント方式
サーバクライアント方式について
方式についてサーバとは，サービスを提供するためのプログラム，またはネットワークの中心となるコンピュータの略称を指す．サーバがサービスを提供する側に対して，サービスを提供される側をクライアントと呼び，ネットワークに接続するためのアプリケーションソフト
（WEB ブラウザなど）やＯＳのことを指す．多くのネットワークを介した通信は，サービスを提供する側・受ける側に分けて考え，サーバ・クライアント型の通信を利用する．サーバ・クライアント型の通信の例えるとするならば，ＰＣを通してホームページの閲覧を行う場合の HTTP サーバーと，そのサービスを利用する WEB ブラウザ（クライアント）の関
係である．

54

第４章 制御システム

図 4.7.1.1（図 4.7.1.1）HTTP というプロトコル（ＰＣ同士のデータ通信の際の規約）に基づいてサーバに対して「このページが見たい」という要求を出し，サーバ側が該当した html ファ
イルをその応答として送信してくる，これがサーバ・クライアント型の通信である．
TCP/IP は， Internet の標準プロトコルであり，現在最も普及している．複数のＰＣを接続する際によく利用されるが，必ずしもＴＣＰ/ＩＰを使う必要はなく，独自のプロトコルをもって対応することもできる．しかし，ＰＣやＰＤＡなどすでにサポートしている共通のプロトコルを利用することでＰＣ側のソフト開発が省略できるため，
ＴＣＰ/ＩＰが用いられることが多い．ＴＣＰ/ＩＰプロトコルの構造は，DARPA モデルと呼ばれる４階層の概念的なモデルに表わすことができる．
（図 4.7.1.2）

55

第４章 制御システム

図 4.7.1.2
この層はそれぞれリンク層（ネットワーク インターフェイス層）
・ネットワーク層・ト
ランスポート層・アプリケーション層と呼ばれている．
リンク層は，オペレーティングシステムのデバイスドライバなどを含み，ネットワーク
層に対して統一的なインターフェイスを提供する．
利用する通信機器等のハードウェアで，モデムや，イーサネットにおける物理的な接続を行なう部分である．
ネットワーク層は，ＩＰプロトコルの属する層で，何に対して通信をおこなうのかといったデータの送り先を明確にする部分．トランスポート層は，通信を行う両者の間でポートの情報交換を管理する事と，データ転送の方法決める階層．この層にはＴＣＰとＵＤＰという機能の異なる２つのプロトコルが存在し，データの信頼性と速度の面で使われ方が異なる．ＴＣＰプロトコルは，送受信するデータの信頼性を高めるため，データの転送速度が遅い．これに対してＵＤＰプロトコルは，送受信するデータの信頼性は低いが，デー
タの転送速度が速い．
アプリケーション層は，ＴＣＰ/ＩＰにおけるユーザーに対して直接的なインターフェイ
スを提供する部分．この層に属する代表的なプロトコルとして，ＨＴＴＰ，ＦＴＰ，ＳＭ

第４章 制御システム

56

ＴＰ，ＰＯＰ３，ＴＥＬＮＥＴ，ＤＮＳなどがあげられる．

・ソケット通信
ソケット通信について通信についてカリフォルニア大学バークレイ校で AT&T 社ベル研究所が開発したオペレーティングシ
ステムである UNIX を拡張しようという研究が行われ，便利で高機能の UNIX（BSD UNIX）
が開発されていた．その研究の一環として UNIX から通信ネットワーク，特に TCP/IP を利用した通信プログラム を容易にするとして開発されたもので，ネットワークを介して他のコンピュータに接続するときの接続の端点，データの入出力口をソケットと呼ぶ．プログ
ラムから TCP/IP を利用する際に利用されるため TCP/IP のプログラミング上の大きな特徴といえ，TCP/IP 通信をソケット通信と呼ぶこともある．ソケットは，コンピュータ間の通信もファイルへの読み書きとしてプログラミングができないかということを目標にして開発された．
電話には電話番号あるため他の特定の電話機につなげることができる．これがＰＣの場合，ネットワーク上の複数のＰＣの中の特定のＰＣに接続するためには 電話番号 が必要である．このＰＣの 電話番号 に相当するのが，ＩＰアドレスとポート番号である．
ＩＰアドレスとは，ネットワーク上に存在する複数の各ＰＣに割り当てられた番号で，同じ番号をもったＰＣは，ネットワーク上に一つしか存在しない．このＩＰアドレスは３２ビットの数字（例：192.168.0.2）で表記され，通常はネットワーク名やマシン名をドットで区切って表記される．また，ネットワークの大きさに応じてクラスＡからクラスＣまで
三つのクラスに分類されている．その他にもクラスＤ（マルチキャスト用），クラスＥ（実験用）といったものも存在する． ポート番号は，ＩＰアドレスを電話番号だとするとポート番号は内線番号に相当し，一つのＰＣで複数の通信を行う場合，どのプログラムのた57

第４章 制御システム
めの通信なのかを区別し仕分けするための１６ビットの整理番号のことを指す．

遠隔操作時に通常の無線操縦ではなく，インターネット（無線 LAN）を用いたのは，以下のような利点があるためである．一つめは法的規制のない通信可能であること．無線 LAN
は電波を発する立派な無線局にもかかわらず，電波免許不要な周波数帯の電波を使用する
ため免許取得の必要がない．二つめは，遠隔地からの操作が可能であること．インターネ
ットを介しているため，かなりの遠隔地からでも操縦ができる．三つめは，WEB カメラなどを通して操作するロボットの状況を知ることができることである．

・ソケット通信
ソケット通信の通信の実装
図 4.7.1.3 のサブルーチン見取り図を参考に以下のプログラム Socket(),connect()の警備ロボットへの実装について述べる．

図 4.7.1.3
void Socket(){result=bind(svSocket,(const struct sockaddr*)&svAddress,sizeof(svAddress));
if(result==SOCKET̲ERROR){
printf("Server : bind error¥
error¥n");Break();
exit(‑
exit(‑1);

58

第４章 制御システム}
result=listen(svSocket,1);
result=listen(svSocket,1);
if(result==SOCKET̲ERROR){
printf("Server : listen error¥
error¥n");Break();
exit(‑
exit(‑1);}
do{

int adlen=sizeof(clAddress);
printf("待機中printf("待機中");
待機中");
clSocket=accept(svSocket,(struct sockaddr*)&clAddress,&adlen);if(clSocket==INVALID̲SOCKET)
if(clSocket==INVALID̲SOCKET){
printf("Server: accept error¥
error¥n");Break();
exit(‑
exit(‑1);}

do{resul=trecv(clSocket,(char*)&temp,sizeof(double),0);if(result==0){
printf("Server:clSock:closed¥
printf("Server:clSock:closed¥n");Break();

break;}
else if(result==SOCKET̲ERROR){
if(result==SOCKET̲ERROR){
printf("Server:clSock:recv error¥
error¥n");

}

}

}

void connect() {int a1;
a1=100;///////////////////////////////////////////////WSADATA Data;
int result = WSAStartup (MAKEWORD(1,1),&Data);
if(WSAStartup
if(WSAStartup (MAKEWORD(1,1),&Data)!=0){
printf("Client: winsock Dll load error¥
error¥n");exit(‑
exit(‑1);}
SOCKADDR̲IN svAddress;
SOCKET
svSocket;svAddress.sin̲family = AF̲INET;
svAddress.sin̲port= htons(45678);u̲long svaddr=inet̲addr("192.168.0.11");
memcpy(&svAddress.sin̲addr,&svaddr,sizeof(u̲long));
memcpy(&svAddress.sin̲addr,&svaddr,sizeof(u̲long));
svSocket=socket(AF̲INET, SOCK̲STREAM,0);if(svSocket==INVALID̲SOCKET){
printf("Client: socket error¥
error¥n");break;Break();

第４章 制御システム
exit(‑
exit(‑1);}59

result=connect(svSocket,(const struct sockaddr *)&svAddress,
sizeof(svAddress));
if(result==SOCKET̲ERROR){
printf("Client: connect error¥
error¥n");result=WSACleanup();exit(‑
exit(‑1);}
sv = svSocket;
printf("Access Code = %d¥%d¥n¥n",sv);
result=send(svSocket,(char*)&temp,sizeof(double),0);if(result!=sizeof(double)){printf("Client:
printf("Client: clSock: send error¥
error¥n");}

サ ー バ 側 の プ ロ グ ラ ム ル ー チ ン で あ る ， Socket() は 図 4.7.1.3 に 示 す よ う に ，bind(),listen(),accept()の手順を踏むことで，サーバとしての待機状態を確保できる．サー
バをある一つの店として，例えると bind()は営業登録，listen()は開店，accept()はお客を待つ，接待係りということになる．また，クライアント側はサービスを受けるお客だと例
えると，connect()は接続要求を欲している客となる．この，クライアント側があるＩＰア
ドレスで運営を行っているサーバに対して接続要求を行うことで，recv(),send()の情報のやり取りが行われる．本研究では，サーバ側が警備ロボット，クライアント側が遠隔操縦を行う操縦者となる．具体的に，クラインアン側から要求があるまで，警備ロボットは待機を持続する．もし，クライアント側から，接続要求があれば，図 4.7.1.3 に示すように各ルーチンの手順を踏んだ後で，recv(),send()関係が成り立つ．ここで具体的に，やり取りされる信号は，クライアント側に接続されたＵＳＢジョイスティックの情報である．この情報をもとに，遠隔操縦を行う．

第４章 制御システム

60

４．７．２ ＵＳＢジョイスティック
ＵＳＢジョイスティックについて
ジョイスティックについて・ＵＳＢについてＵＳＢについて本研究のロボットの遠隔操縦に用いているジョイスティックコントローラは，ＵＳＢによって接続されている．ＵＳＢは，Universal Serial Bus の略で，Windows98 以降標準でサポートされるようになったパラレルポートやシリアルポートに変わる新しいインターフェイスである．ＵＳＢの特徴は，電源供給ピンを備えているため，プリンタポートなどと違い，バッテリ，ＡＣアダプタなどの別途電源を必要としないことと，伝送速度がシリア
ルポートよりも速いことである．ＵＳＢで，ＰＣとの直接接続やセルフパワー・ハブに接続する場合，USB インターフェースに接続する周辺機器は，最大５Ｖ･500ｍＡの電力を使うことができる．バスパワー・ハブのように USB バスから電源供給される場合は，最大 5V･100mA までとされている．また，転送速度に関しては，データの通信といった高速通信が必要な周辺機器には，最大 12Ｍbps までの高速データ転送が可能であり，キーボ
ードやマウス，
ジョイスティックといった周辺機器に対しては 1.5Ｍbps までの低速通信をおこなうこともできる．
複数のデバイスを接続することを前提に開発されたため，使い終われば，すぐに切り離すことができる点（プラグ＆プレイ）も特徴の一つであるといえる．ハブ（Hub）と呼ばれる分岐点を追加することで最大 127 個の機器を接続することもできる．USB ケーブル
は，PC などルート側（ダウンストリーム）に接続する A コネクタとハブなど USB 周辺
機器側（アップストリーム）に接続する B コネクタを持っており，通常 USB ケーブルは，
データ通信用とバス電源供給用の 2 本で構成されており，ケーブル自身の長さは最長で５ｍまでのばせる．
ＵＳＢの転送処理は，単一のホストが複数のターゲットポーリングするという伝送のやりかたをとっている．物理的な接続方法は，１０ＢＡＳＥ−Ｔなどと同じようにハブを使ってツリー状に接続しているが，論理的にはホストと各ターゲットの間が１対１の接続と61

第４章 制御システムなるような形態をとっている（図 4.7.2.1）．ＵＳＢの転送はＩＳＡバスでいうところの，ＣＰＵからメモリ I/O アクセスのみでおこなわれているようなもので，ホストがターゲッ
トのエンドポイントと呼ばれる一種の FIFO メモリを読み書きするといった動作しかおこなわない．

図 4.7.2.1
ホストがエンドポイントにデータを書き込んだり，エンドポイントのデータを読み出した
りすると，ターゲットの CPU に割り込みが発生し，ターゲット側が次の動作をおこなうという仕組みになっている．また，エンドポイントにはデバイス制御用にもうけられているコントロールエンドポイントと呼ばれるもの以外はすべて単方向であるため，OUT（ホストからターゲット）と IN（ターゲットからホスト）のデータ転送が両方必要なときは，それぞれ別のエンドポイントを用意しなくてはならない．
ＵＳＢの転送モードには，バルク転送，インタラプト転送，アイソクロナス転送などがあるが，データのやりとりは，すべてエンドポイントの読み書きだけでなりたっている．
転送モードの違いというのは，データエラー検出をおこなうか否か，ホストがそのエンドポイントを一定周期でアクセスするようにスケジュールを組むことが必要とされているか

62

第４章 制御システム
否かといった違いだけである．

ＵＳＢのことを理解するうえで必要となってくるものとして，パイプとエンドポイントというものがある．パイプとは，ホストとターゲットの間で仮想的につくられた１対１の伝送路のことを指し，エンドポイントとは各パイプに対応してターゲットに用意されているアクセス権制御付きのバッファメモリのようなものをいう．これらのことをふまえて，先ほどの図 4.7.2.1 をかくと図 4.7.2.2 のようになる．

図 4.7.2.2

ＵＳＢコントローラには，いくつものエンドポイントが存在し，それぞれのバッファサ
イズが何バイトで，どのような転送モードに対応できるかということは，ＵＳＢコントローラにより異なるが，規格上はハイスピードデバイスでは１デバイスにつき最大１５個（コ第４章 制御システム

63

ントロールエンドポイントを除く），ロースピードデバイスでは２個（同）のエンドポイン
トをもつことができる．
エンドポイントを使って実際にホストからターゲットに転送がおこなわれる場合，図4.7.2.3 に示すようなことになる．まず，ホストはターゲットのエンドポイントにＯＵＴのトランザクションを発行，続いてデータトランションが発行される．ターゲットのエンド
ポイント FIFO にデータが正常に入ると，ACK が返ってくる．
書きこみが終了すると，エンドポイントのアクセス権が自動的にターゲットのＣＰＵ側に渡る．ここでターゲットは，エンドポイントに入ったデータをすべて引き取り，エンド
ポイントのアクセス権をホストに返す．エンドポイントにデータが詰まっていたり，アク
セス権がターゲットＣＰＵ側に渡されているときに，ホストがさらにデータを書きこもうとした場合には，データトランザクションのあとでターゲットからＮＡＫが返り，ホスト
はＮＡＫが返ってきたときにリトライする．

64

第４章 制御システム

図 4.7.2.3 データ転送（OUT）模式図・ ＵＳＢジョイスティック
ＵＳＢジョイスティックのジョイスティックの実装

本研究は，図 4.7.2.4 に示す，JUSTY 製ゲーム用 USB ジョイスティックを使用する．
まず，C 言語上からＵＳＢデバイスへアクセスを行うために，マイクロソフト社が提供するＤｉｒｅｃｔＸ ＳＤＫを用いる．ＤｉｒｅｃｔＸとは開発者向けに提供されている開発キットのサンプル集である．このサンプル集上に新たに設けた，サブルーチン main()内において，下記のソースを追記するだけで，USB からのジョイスティック情報を抜き取ることができる．

65

第４章 制御システム
g_pJoystickg_pJoystick->Poll(); g_pJoystickg_pJoystick->GetDeviceState(sizeof(DIJOYSTATE2),&js );x=js.lX;
y=js.lY;
z=js.lRz;
cam=js.rgdwPOV[0];S=js.rglSlider[0];上記ソース上ｘ，ｙ，ｚの値は，図 4.7.2.5 に示すジョイスティックｘ軸，ｙ軸，ｚ軸の実数値になる．
また，
ソース上 cam,S は USB ジョイスティックの各ボタンに相当する．
こ の 実 数 値 を ４ ． ７ ． １ で 述 べ た ソ ケ ッ ト 通 信
send(svSocket,(char*)&temp,sizeof(double),0);の temp に反映することによって，警備ロボットへの指令を行う．

図 4.7.2.4

66

第４章 制御システム

図 4.7.2.5

４．７．３ 映像通信

カメラからの情報は，図６に示すように，警備ロボット側制御ＰＣとは，独立した映像
転送ＰＣ（ノート型ＰＣ）を搭載し，無線ＬＡＮカードを通じて，映像転送ＰＣと操縦者側ＰＣ間で映像伝達を行う．映像通信は，アプリケーションソフトであるマイクロソフト
社，「ネットミーティング」を用いる．

・ ネットミーティングについて
ネットミーティングについて「ネットミーティング」を用いる理由として，ＩＰアドレス間での通信が可能であり，
図 4.7.3.1 に示すように，お互いのアプリケーション上で映像と音声を同時に送受信できる．また，誰でも手に入るために，ソフトウェアの汎用性が高い点が挙げられる．故に本67

第４章 制御システム研究では，このアプリケーションを，コミュニケーションツールとして用い，警備中の映像をリアルタイムで操縦者側の転送事に利用する．

図 4.7.3.1 ネットミーティングの様子

４．７．４ ＷＥＢカメラ
ＷＥＢカメラのカメラのサーボ制御
サーボ制御

本研究は，図 4.7.4.1 に示すように，ロボットを遠隔操縦する際の操縦者の 目”となる
Web カメラの首を動かすためにラジコン用のサーボを使用した．サーボ(Servo)とは，ラテン語で奴隷を意味する Servus が語源であり，指示された命令通りに動くように構成された制御機構のことを指す．このサーボは，小型ＤＣモータとポテンションメータ（可変抵抗器），ギヤ，制御回路を小さくまとめたもので，このユニット自体が一つの完結したサ

68

第４章 制御システムーボシステムとなっている．

図 4.7.4.1

69

第４章 制御システム

サーボを動かすには，制御信号のパルス波を流す必要がある（図 4.7.4.2）．サーボの標準的なものは，制御信号のパルスの周期は約 20[ms]で，サーボの標準的なものは，制御信号のパルスの周期は約 20[ms]で，パルス幅

図 4.7.4.2

が約 1.5ms のときに中立の位置，1.5±0.5ms で時計回り，もしくは反時計回りに振り切第４章 制御システム

70

れる．この回転の位置情報は，パルス幅のみに依存するため，たとえパルス周期が長くなっても，サーボは中立の位置の戻ろうとするだけとなる．

・実装
本研究ではこのサーボをロボット用インタフェースボードの D/A の出力チャンネルを利用して制御を行う．
具体的に下記のソースに，制御の仕方を述べる．

if(temp==900){
daoutpw(base_adr,8,5.0);
Ddelay(0);daoutpw(base_adr,8,0.0);
Ddelay(0);}if(temp==270){
daoutpw(base_adr,8,5.0);
Ddelay(3000);
daoutpw(base_adr,8,0.0);
Ddelay(3000);}

71

第４章 制御システム

４．８ ロボットのロボットの電源

図 4.8.1

ロボットの電源は，ユアサコーポレーションのユアサ小型シール鉛蓄電池・（NPH5-12）（図 4.8.1）を制御ボード用電源として２つと駆動用モータ電源地して１つの計３つを使用．
公称電圧は１２[Ｖ]，定格容量は５[Ａｈ]（10 時間率で），重量は約２[kg]．
鉛蓄電池は，正極に二酸化鉛，負極に金属鉛，電解液に希硫酸を使用した蓄電池で，ア
ルカリ蓄電池に比べて比較的安価でバランスのとれた特性を持つ．

72

第４章 制御システム

図 4.8.2 放電時間と電圧特性
図 4.8.2 は，各放電電流の放電時間と電圧特性を示すグラフである．グラフ中の「C」は蓄電池の定格容量をＡｈを表わした数値で，例えば，放電率が 0.05C の場合は，
０．

０５ ＊ ５ ＝ ０．２５[A]となり，放電率１C は５[Ａ]での放電を示す．

第五章 まとめ73

第五章 まとめ
本文は，屋外警備における人間のサポートを目的とした警備ロボットを作製し，そのロボットの機能と制御システムの構成についてまとめたものである．本章では，この作製したロボットの機能についての動作実験の結果と今後の課題，及び，展開について述
べる．

５．１

研究成果と
研究成果と考察

人間の屋外警備のサポートを目的に，二つの機能を持たせたロボットを使って実験を行なってきた．その結果，警備を行なう場所までの移動や巡回に使用する遠隔操縦に関しては，本システムで行なうことができたが，実際の警備を行なう際には，以下の問題を解決する必要があると思われる．遠隔操作時に於ける問題として一つめは，遠隔に置ける操縦範囲が狭いということである．現在の操縦範囲でも，建物（例えば住宅など）の中から，その周りを警備・巡回することは可能だが，大きな施設（工場など）や完全な遠隔地からの操縦となると現在の操縦範囲では，それに遠く及ばない．二つめは，屋外走行時の操縦者の（ウェブカメラを通しての）視界の揺れが激しく，見づらかったことである．ロボットを移動させるたびに激しく揺れる画面を見せていては，サポートすべき人間を疲れさせてしまいかねない．しかし，これは関しては，駆動輪，及びキャス
ターにダンパーなどのクッションを入れるなどの対処法がとることができる．三つめは，
ウェブカメラを通しての視界が狭かったことである．ロボットの移動を行うときや遠隔での監視を行なう場合，視界は広いほうが良いと思われる．これに関する対処として，
より広角のカメラを使用するなどの方法がとれる．
自律モードにおける自動警備の問題としては，移動する物体を人かどうかを判断する

第五章 まとめ74

すべがないため，実際の警備に実用的であるとは言い難かった．

５．２

今後の
今後の展開

今後の展開としては，遠隔操作の範囲拡大などの前節５．１で対処法が上がらなかったものを解決し，より人が扱いやすく，稼動範囲の広い警備ロボットをめざす．

75

参考文献

参考文献
Ｉｎｔｅｒｆａｃｅ 1998 年 10 月号
特集インターネット家電時代の Ethernet と TCP/IP 活用法

Ｉｎｔｅｒｆａｃｅ 2000 年３月号
特集 ＵＳＢターゲット機器の設計法

極める Visual C++ 基礎にて初歩にあらず
吉田弘一郎･著 技術評論社

トランジスタ技術 2000 年 11 月号
特集 メカトロニクス・センサ活用法

76

謝辞

謝辞

本論文は筆者が，高知工科大学知能機械システム工学科に在学中において行なった研究をまとめたものである．本研究を行なうに当たり，ご指導下さった高知工科大学知能機械シス
テム工学科王碩玉教授に深く感謝致します．また，お忙しい中，わざわざ筆者のために時間を割いて，ご助力いただいた同研究室の大学院生の浜口和洋氏，野村和寿氏にも深く御礼申し上げます．そして，研究中に様々なアドバイスをして下さった，同研究室の皆様に厚く御礼申し上げます．