JP3897948B2 - 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JP3897948B2
JP3897948B2 JP2000034642A JP2000034642A JP3897948B2 JP 3897948 B2 JP3897948 B2 JP 3897948B2 JP 2000034642 A JP2000034642 A JP 2000034642A JP 2000034642 A JP2000034642 A JP 2000034642A JP 3897948 B2 JP3897948 B2 JP 3897948B2
Authority
JP
Japan
Prior art keywords
unit
dimensional
mechanism model
embedded software
model simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000034642A
Other languages
English (en)
Other versions
JP2001222572A (ja
Inventor
正芳 橋間
陽介 千田
裕一 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000034642A priority Critical patent/JP3897948B2/ja
Priority to US09/754,301 priority patent/US7257521B2/en
Publication of JP2001222572A publication Critical patent/JP2001222572A/ja
Application granted granted Critical
Publication of JP3897948B2 publication Critical patent/JP3897948B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23456Model machine for simulation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40316Simulation of human-like robot joint, restricted 3-D motion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、アクチュエータやセンサを有し3次元的な動作を行なう機構の設計・開発にかかる技術であって、特に、機構を制御すべくその機構に組み込まれる制御プログラム(組込みソフトウェア)の開発を支援するための、支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
一般に、アクチュエータ(モータ)やセンサを有し3次元的な動作を行なう機構(メカ)を設計する際には、その機構の構想を練った後、詳細設計,出図,部品手配を行なってから、部品の組立を行なって実機を試作し、実機の動作等についての評価を行なう。そして、評価の結果に応じて設計変更を行なってから設計変更後の実機を試作し、再び評価を行なうという処理を繰り返し、評価の結果が良好であれば、設計を完了する。なお、ここでいう機構としては、例えばCDチェンジャ,MDチェンジャ,プリンタ,マニピュレータ等が挙げられる。
【0003】
また、一般に、上述のごとく設計された機構を動作させるべく、その機構を制御するための制御プログラムを開発し、その制御プログラムを、制御対象の機構内に組み込まれるマイクロコンピュータ(以下、マイコンという場合がある)で実行させるようにしている。このマイコンが実行する上記制御プログラムのことを、以下、組込みソフトウェアという場合がある。
【0004】
ところで、上述のような制御プログラム(組込みソフトウェア)を開発する際には、従来、制御すべき機構の試作品(実機)が完成している必要がある。即ち、試作が完了して初めてメカを具体的に動かすことができ、それを使って組込みソフトウェアの開発を開始することができるわけである。
この組込みソフトウェアの開発は、試作品の完成後、その試作品を実際に動作させながら、以下の手順で行なわれる。つまり、まず、組込みソフトウェアの概略設計を行ない、その概略設計に基づいて詳細設計を行なってから、詳細設計の結果をコーディングして組込みソフトウェアを作成し、その組込みソフトウェアのデバッグを行なう。
【0005】
【発明が解決しようとする課題】
しかしながら、上述のように、組込みソフトウェア(制御プログラム)の開発を行なう際には制御対象の機構の試作品(実機)が必要であるため、試作品が完成するまでは組込みソフトウェアの開発を開始することができず、その開発に時間やコストがかかり非効率的であるという課題があった。
【0006】
また、試作品が完成して組込みソフトウェアの開発を開始したとしても、機構の試作段階では評価結果に応じて試作品の設計変更を行なうことは度々あり、その都度、組込みソフトウェアの開発を中断して、設計変更後の試作品の完成を待ってから、設計変更後の試作品に応じた仕様変更や再コーディングを行なわなければならず、その開発にさらなる時間やコストがかかり極めて非効率的であるという課題もあった。
【0007】
このように、従来、機構の設計(実機の作成)とその機構のための組込みソフトウェアの開発とのコンカレント性は全くなく、同時に実行することができなかったので、組込みソフトウェアの開発は極めて非効率的に行なわれている。このため、機構の設計と組込みソフトウェアの開発とをコンカレントに(並行して)遂行できるようにすることが望まれている。
【0008】
本発明は、このような課題に鑑み創案されたもので、機構の設計とその機構を制御するための組込みソフトウェアの開発とをコンカレントに遂行できるようにして、その組込みソフトウェアの開発の効率化をはかり、開発期間の短縮,工数の削減を実現した、支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成するために、本発明の支援システムは、アクチュエータおよびセンサを含む複数の部品からなる機構を3次元的に設計する機構設計部と、該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部と、該機構に組み込まれ該機構の動作を制御するための制御プログラムを組込みソフトウェアとして開発する組込みソフトウェア開発部と、該機構設計部による設計データを該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部と、該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部とをそなえて構成されるとともに、該組込みソフトウェア開発部が、該組込みソフトウェアの詳細設計を行なうべく該組込みソフトウェアの仕様を記述する状態遷移図・表を作成・編集する状態遷移図・表作成部を含んで構成され、該状態遷移図・表作成部が、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該状態遷移図・表作成部との間でデータ送受を行なう際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させることを特徴としている。
【0010】
のとき、該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させてもよい。
【0011】
この場合、該組込みソフトウェア開発部が、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップを含んで構成され、該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なってもよい。そして、該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、該第2インタフェース部が、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させてもよい。
【0012】
さらに、本発明の支援システムは、アクチュエータおよびセンサを含む複数の部品からなる機構を3次元的に設計する機構設計部と、該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部と、該機構に組み込まれ該機構の動作を制御するための制御プログラムを組込みソフトウェアとして開発する組込みソフトウェア開発部と、該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部と、該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部とをそなえて構成されるとともに、該組込みソフトウェア開発部が、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップを含んで構成され、該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なう際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴としている。
【0013】
この場合、該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させてもよい。そして、該第1インタフェース部が、該3次元機構モデルシミュレーション部によるシミュレーション結果を、該機構の設計に反映させるべく該3次元機構モデルシミュレーション部から該機構設計部へ入力するように構成してもよい。
【0014】
なお、該第2インタフェース部が、該組込みソフトウェア開発部から該3次元機構モデルシミュレーション部へ、該3次元機構モデルにおける該アクチュエータに対するアクチュエータ指令信号を受け渡すとともに、該3次元機構モデルシミュレーション部から該組込みソフトウェア開発部へ、該アクチュエータ指令信号に応じたシミュレーション結果として得られる、該3次元機構モデルにおける該センサからのセンサ信号を受け渡すように構成してもよい。
【0015】
また、該アクチュエータに対する該アクチュエータ指令信号と該3次元機構モデルシミュレーション部からの該センサ信号との時間変化をリアルタイムで解析して表示しうる解析部をそなえてもよい。
【0016】
一方、本発明の記録媒体は、アクチュエータおよびセンサを含む複数の部品からなる機構を制御すべくその機構に制御プログラムとして組み込まれる組込みソフトウェアの開発を支援する機能をコンピュータにより実現するための、支援プログラムを記録したコンピュータ読み取り可能なものであって、該支援プログラムとして、該機構を3次元的に設計する機構設計部として、該コンピュータを機能させる機構設計プログラムと、該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部として、該コンピュータを機能させる3次元機構モデルシミュレーションプログラムと、該組込みソフトウェアを開発する組込みソフトウェア開発部として、該コンピュータを機能させる組込みソフトウェア開発プログラムと、該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部として、該コンピュータを機能させる第1インタフェースプログラムと、該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部として、該コンピュータを機能させる第2インタフェースプログラムとが記録されており、該組込みソフトウェア開発プログラムが、該組込みソフトウェアの詳細設計を行なうべく該組込みソフトウェアの仕様を記述する状態遷移図・表を作成・編集する状態遷移図・表作成部として、該コンピュータを機能させる状態遷移図・表作成プログラムを含むものであり、該状態遷移図・表作成プログラムが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行させるように構成され、該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該状態遷移図・表作成部との間でデータ送受を行なわせる際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させるように構成されていることを特徴としている。
このとき、該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させてもよい。
【0017】
この場合、該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なわせるように構成されていてもよい。そして、該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、該第2インタフェースプログラムが、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させてもよい。
【0018】
また、本発明の記録媒体は、アクチュエータおよびセンサを含む複数の部品からなる機構を制御すべくその機構に制御プログラムとして組み込まれる組込みソフトウェアの開発を支援する機能をコンピュータにより実現するための、支援プログラムを記録したコンピュータ読み取り可能なものであって、該支援プログラムとして、該機構を3次元的に設計する機構設計部として、該コンピュータを機能させる機構設計プログラムと、該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部として、該コンピュータを機能させる3次元機構モデルシミュレーションプログラムと、該組込みソフトウェアを開発する組込みソフトウェア開発部として、該コンピュータを機能させる組込みソフトウェア開発プログラムと、該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部として、該コンピュータを機能させる第1インタフェースプログラムと、該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部として、該コンピュータを機能させる第2インタフェースプログラムとが記録されており、該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なわせるように構成され、該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、該第2インタフェースプログラムが、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させるように構成されていることを特徴としている。
【0019】
この場合、該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させてもよい。そして、該第1インタフェースプログラムが、該3次元機構モデルシミュレーション部によるシミュレーション結果を、該機構の設計に反映させるべく該3次元機構モデルシミュレーション部から該機構設計部へ入力させるように構成されていてもよい。
【0020】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図3は、本発明の一実施形態としての支援システムを構築しうるコンピュータシステムを示す外観図である。
この図3に示すように、コンピュータシステム100は、図4を参照しながら後述するごとくCPU221,RAM222,ハードディスク211等を内蔵した本体部101と、この本体部101からの指示により表示画面102aで画面表示を行なうCRTディスプレイ102と、このコンピュータシステム100にユーザの指示や文字情報を入力するためのキーボード103と、表示画面102a上の任意の位置を指定することによりその位置に表示されているアイコン等に応じた指示を入力するマウス104とをそなえて構成されている。
【0021】
本体部101は、さらに、外観上、フロッピィディスク212(図4参照)やCD−ROM210がそれぞれ取り出し自在に装填されるフロッピィディスク装填口101aおよびCD−ROM装填口101bを有しており、その内部には、装填されたフロッピィディスク212やCDROM210をドライブする、フロッピィディスクドライバ224やCDROMドライバ225(図4参照)を有している。
【0022】
ここでは、CD−ROM(コンピュータ読み取り可能な記録媒体)210に、本発明の一実施形態としての支援プログラム30(図2参照)が記録されている。
このCD−ROM210がCD−ROM装填口101bから本体部101内に装填され、CD−ROMドライバ225により、そのCD−ROM210に記録された支援プログラム30がこのコンピュータシステム100のハードディスク211内にインストールされる。
【0023】
また、コンピュータシステム100のハードディスク211には、図1を参照しながら後述するメカ設計部(意匠設計・3次元CADシステム)20により設計されて定義された、設計対象機構についての設計データが格納され、その設計データに基づき、コンピュータシステム100(後述する3次元リアルタイムシミュレーション装置30)において、その機構についての3次元機構モデルが構築されるようになっている。
【0024】
さらに、コンピュータシステム100のハードディスク211には、図1を参照しながら後述する組込みソフトウェア開発部40により開発される制御プログラム(組込みソフトウェア)が格納される。ハードディスク211には、開発を完了した組込みソフトウェアが格納されるほか、開発中の組込みソフトウェアも格納・保存される。
【0025】
図4は、本発明の一実施形態としての支援システムを構築しうるコンピュータシステムのハードウェア構成を示すブロック図であり、この図4に示すように、本実施形態のコンピュータシステム100においては、バスライン220を介して、中央演算処理装置(CPU)221,RAM222,ハードディスクコントローラ223,フロッピィディスクドライバ224,CD−ROMドライバ225,マウスコントローラ226,キーボードコントローラ227,ディスプレイコントローラ228,モデム229およびROM230が相互に接続されている。
【0026】
そして、フロッピィディスクドライバ224およびCD−ROMドライバ225は、図3を参照して説明したように、それぞれ、フロッピィディスク212およびCD−ROM210が装填され、装填されたフロッピィディスク212およびCD−ROM210に対するアクセスを行なうものである。
また、ハードディスクコントローラ223は、ハードディスク211を制御するとともにCPU221からの指示に従ってハードディスク211に対するアクセスを行なうものであり、マウスコントローラ226は、マウス104とコンピュータシステム100との間のインタフェースとして機能するものであり、キーボードコントローラ227は、キーボード103とコンピュータシステム100との間のインタフェースとして機能するものであり、ディスプレイコントローラ228は、CPU221からの制御信号に応じてCRTディスプレイ102の表示状態を制御するものである。
【0027】
さらに、モデム229は、図示しない通信回線に接続され、図3および図4に示したものと同様構成の、他のコンピュータシステムとの通信を行なうためのものである。
前述したように、CD−ROM210には支援プログラム30(図2参照)が記憶されており、CD−ROMドライバ225により、そのCD−ROM210からその支援プログラム30が読み込まれ、バスライン220を経由し、ハードディスクコントローラ223によりハードディスク211内に格納される。実際の実行に当たっては、ハードディスク211内のプログラム30は、RAM222上にロードされ、CPU221により実行される。
【0028】
支援プログラム30は、図1に示す組込み支援システム10を実現するためのものであり、CPU10が、バスライン220を介してRAM222におけるプログラム30を実行することにより、支援システム10を成すメカ設計部20,3次元リアルタイムシミュレーション装置30,状態遷移図・表作成編集装置41,統合開発環境装置43およびインタフェース部50〜52としての機能(その詳細については後述)が実現され、本実施形態の支援システム10が実現されるようになっている。
【0029】
この支援プログラム30は、前述のごとくCD−ROM210に記録された形態で提供されるほか、その他、フレキシブルディスク(フロッピィディスク212)等の、コンピュータ読取可能な記録媒体300(図2参照)に記録された形態で提供される。そして、コンピュータシステム100はその記録媒体からプログラム30を読み取って、前述したようにハードディスク211等の内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラム30を、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線およびモデム229を介してコンピュータシステム100に提供するようにしてもよい。
【0030】
なお、本実施形態における記録媒体としては、上述したフレキシブルディスク,CD−ROM,磁気ディスク,光ディスク,光磁気ディスクのほか、ICカード,ROMカートリッジ,磁気テープ,パンチカード,コンピュータの内部記憶装置(RAMやROMなどのメモリ),外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することができる。
【0031】
さて、図4に示すコンピュータシステム100により実現される、本実施形態の支援システム10は、アクチュエータやセンサを有し3次元的な動作を行なう機構の設計・開発に際し、機構を制御すべくその機構に組み込まれる制御プログラム(組込みソフトウェア)の開発を支援するためのものである。
そして、上述のような機能を実現すべく、本実施形態の支援システム10は、図1に示すように、メカ設計部20,3次元リアルタイムシミュレーション装置30,状態遷移図・表作成編集装置41,統合開発環境装置43およびインタフェース部50〜52としての機能を有するほか、開発された組込みソフトウェアを実際に格納されて機構制御を行なうマイクロコンピュータチップ(以下、マイコンチップという)42も有している。
【0032】
なお、図1は、本発明の一実施形態としての支援システムの機能的構成を示すブロック図である。
本実施形態のシステム10は、メカ設計と組込みソフトウェア開発とをコンカレントに遂行するためのもので、大きく分けると、メカ設計部20,3次元リアルタイムシミュレーション装置30および組込みソフトウェア開発部40から構成されている。
【0033】
ここで、メカ設計部(意匠設計・3次元CADシステム,機構設計部)20は、アクチュエータおよびセンサを含む複数の部品からなる機構を3次元的に設計するものである。このメカ設計部20と3次元リアルタイムシミュレーション装置30との連携の詳細については、図5および図6を参照しながら後述する。
3次元リアルタイムシミュレーション装置(3次元機構モデルシミュレーション部)30は、メカ設計部20により設計された機構を3次元機構モデルとして内部に構築され、その機構の動作をシミュレートするものである。この3次元リアルタイムシミュレーション装置30の詳細については、図17〜図82を参照しながら後述する。
【0034】
組込みソフトウェア開発部40は、メカ設計部20による機構の設計と並行してその機構に組み込まれその機構の動作を制御するための制御プログラムを組込みソフトウェアとして開発するものである。
また、本実施形態のシステム10においては、インタフェース部50〜52がそなえられるほか、組込みソフトウェア開発部40は、状態遷移図・表作成編集装置41,マイコンチップ42および統合開発環境装置43をそなえて構成されている。
【0035】
インタフェース部(第1インタフェース部)50は、メカ設計部20による設計データを、3次元リアルタイムシミュレーション装置30にて構築される3次元機構モデルに動的に反映させるべく、メカ設計部20から3次元リアルタイムシミュレーション装置30へ入力する機能を果たすとともに、3次元リアルタイムシミュレーション装置30によるシミュレーション結果を、機構の設計に動的に反映させるべく3次元リアルタイムシミュレーション装置30からメカ設計部20へ入力する機能も果たすように構成されている。
【0036】
このインタフェース部50の機能は、メカ設計部20と3次元リアルタイムシミュレーション装置30とのいずれか一方に含まれてもよいし、これらのメカ設計部20と3次元リアルタイムシミュレーション装置30とに分割されて含まれていてもよい。
インタフェース部(第2インタフェース部)51,52は、いずれも、3次元リアルタイムシミュレーション装置30の動作と組込みソフトウェア開発部40の動作との同期をとりながら、3次元リアルタイムシミュレーション装置30と組込みソフトウェア開発部40との間でデータ送受を行なうものである。
【0037】
また、本実施形態のシステム10における組込みソフトウェア開発部40は、状態遷移図・表作成編集装置(状態遷移図・表作成部)41,マイコンチップ42および統合開発環境装置43を含んで構成されている。
ここで、状態遷移図・表作成編集装置41は、組込みソフトウェアの詳細設計を行なうべく組込みソフトウェアの仕様を記述し、組込みソフトウェアについてのタスク制御フローを作成するものである。この状態遷移図・表作成編集装置41の詳細、および、状態遷移図・表作成編集装置41と3次元リアルタイムシミュレーション装置30との連携の詳細については、図7〜図14を参照しながら後述する。
【0038】
マイコンチップ42は、開発中の組込みソフトウェアを組み込まれ、実際に機構に搭載されてその機構の動作を制御するものであり、統合開発環境装置43は、状態遷移図・表作成編集装置41からのタスク制御フローを、C,C++,アセンブラコードに変換し(コーディング,コードジェネレーション)、ターゲットマイコン用の実行モジュール(即ち、マイコンチップ42に書き込まれるべき組込みソフトウェア)を作成するためのものである。
【0039】
そして、インタフェース部51は、3次元リアルタイムシミュレーション装置30の動作と状態遷移図・表作成編集装置41の動作との同期をとりながら、3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41との間でデータ送受を行なうものである。
本実施形態では、図10〜図14を参照しながら後述するごとく、状態遷移図・表作成編集装置41が、複数のタスクを並行して実行するマルチタスクを採用し、3次元リアルタイムシミュレーション装置30のシミュレーション動作期間中、複数のタスクを停止させるように機能する同期タスクを複数のタスクとは別に実行し、インタフェース部51が、同期タスクを用いて3次元リアルタイムシミュレーション装置30の動作と状態遷移図・表作成編集装置41の動作とを同期させている。
【0040】
このとき、インタフェース部51は、同期タスクの優先度を最も高く設定し、この同期タスクにより複数のタスクの開始・停止を制御して、3次元リアルタイムシミュレーション装置30の動作と状態遷移図・表作成編集装置41の動作とを同期させている。
このインタフェース部51の機能は、3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41とのいずれか一方に含まれてもよいし、これらの3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41とに分割されて含まれていてもよい。
【0041】
また、インタフェース部52は、3次元リアルタイムシミュレーション装置30の動作とマイコンチップ42の動作との同期をとりながら、3次元リアルタイムシミュレーション装置30とマイコンチップ42との間でデータ送受を行なうものである。
本実施形態では、マイコンチップ42も、状態遷移図・表作成編集装置41と同様、複数のタスクを並行して実行するマルチタスクを採用し、3次元リアルタイムシミュレーション装置30のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを複数のタスクとは別に実行し、インタフェース部52が、同期タスクを用いて3次元リアルタイムシミュレーション装置30の動作とマイコンチップ42の動作とを同期させている。
【0042】
このとき、インタフェース部52も、インタフェース部51と同様、同期タスクの優先度を最も高く設定し、この同期タスクにより複数のタスクの開始・停止を制御して、3次元リアルタイムシミュレーション装置30の動作とマイコンチップ42の動作とを同期させている。
このインタフェース部52の機能は、3次元リアルタイムシミュレーション装置30とマイコンチップ42とのいずれか一方に含まれてもよいし、これらの3次元リアルタイムシミュレーション装置30とマイコンチップ42とに分割されて含まれていてもよい。
【0043】
なお、本実施形態のシステム10では、インタフェース部51,52が、それぞれ、状態遷移図・表作成編集装置41およびマイコンチップ42から3次元リアルタイムシミュレーション装置30へ、3次元機構モデルにおけるアクチュエータに対するアクチュエータ指令信号を受け渡すとともに、3次元リアルタイムシミュレーション装置30から状態遷移図・表作成編集装置41およびマイコンチップ42へ、そのアクチュエータ指令信号に応じたシミュレーション結果として得られる、3次元機構モデルにおけるセンサからのセンサ信号を受け渡すように構成されている。
【0044】
また、3次元リアルタイムシミュレーション装置30において、ロジックアナライザ(解析部;図15参照)をそなえてもよい。このロジックアナライザは、アクチュエータに対するアクチュエータ指令信号と3次元リアルタイムシミュレーション装置30で得られたセンサ信号との時間変化をリアルタイムで解析して表示し、組込みソフトウェア開発者がその時間変化を確認できるようにするためのものである。
【0045】
さらに、新たに、2次元操作パネルを構築する手段と3次元リアルタイムシミュレーション装置30とを結び付けるインタフェース手段を有し、3次元機構モデルの操作を上記2次元操作パネル上からインタラクティブにできるように構成してもよい。この場合、2次元操作パネル上には、実際にマイコンチップ42上にそなえられるスイッチ類のイメージが表示されている。そして、組込みソフトウェア開発者は、2次元操作パネル上のスイッチ類のイメージをマウス等により操作することで、マイコンチップ42上のスイッチ類を操作した場合のシミュレーションを、3次元リアルタイムシミュレーション装置30に実行させることができるようになっている。
【0046】
またさらに、本実施形態の3次元リアルタイムシミュレーション装置30は、ギア,カム,溝,クラッチ,ローラ,ラチェット等の各種機構についての機構モデルを作成する手段を有するとともに、DCモータ,ステッピングモータ,ACモータ,マイクロスイッチ/光学スイッチ,エンコーダ,ポテンショメータ等の各種モータ/センサについての機構モデルを作成する手段を有しており、これらの手段を用いて、各種機構や各種モータ/センサの任意の組み合わせからなる機構を3次元機構モデルとして表現することができるようになっている。
【0047】
一方、図2は、本実施形態のコンピュータ読み取り可能な記録媒体300に記録された、支援プログラム310の構成を示す図である。
この図2に示す記録媒体300は、支援プログラム310を記録されたCD−ROM210や、そのプログラム310をインストールされた状態のハードディスク211や、そのプログラム310をダウンロードされたフロッピィディスク212,RAM222あるいはROM230等を代表的に示したものである。また、記録媒体300は、通信回線等で接続された複数の記録媒体であって、これらの記録媒体に、プログラム310を成す複数のプログラム311〜316を分割して記録したものも含んでいる。
【0048】
このような記録媒体300に記録された、本実施形態の支援プログラム310は、アクチュエータおよびセンサを含む複数の部品からなる機構を制御すべくその機構に制御プログラムとして組み込まれる組込みソフトウェアの開発を支援する機能(つまり図1に示すシステム10)を、図3や図4に示すようなコンピュータシステム100により実現するためのもので、機構設計プログラム311,3次元機構モデルシミュレーションプログラム312,組込みソフトウェア開発プログラム313,第1インタフェースプログラム314,第2インタフェースプログラム315および統合開発環境プログラム316を含んで構成されている。
【0049】
ここで、機構設計プログラム311は、前述したメカ設計部20としてコンピュータシステム100を機能させるものであり、3次元機構モデルシミュレーションプログラム312は、前述した3次元リアルタイムシミュレーション装置30としてコンピュータシステム100を機能させるものである。
組込みソフトウェア開発プログラム313は、前述した組込みソフトウェア開発部40としてコンピュータシステム100を機能させるもので、前述した状態遷移図・表編集装置41としてコンピュータシステム100を機能させる状態遷移図・表作成プログラム320を含んで構成されている。
【0050】
第1インタフェースプログラム314は、前述したインタフェース部50としてコンピュータシステム100を機能させるものである。この第1インタフェースプログラム314は、機構設計プログラム311と3次元機構モデルシミュレーションプログラム312とのいずれか一方に含まれてもよいし、これらのプログラム311および312に分割されて含まれていてもよい。
【0051】
なお、機構設計プログラム311(メカ設計部20)は、コンピュータシステム100内にローディングされた第1インタフェースプログラム314(インタフェース部50)と結合され、このコンピュータシステム100内において、3次元機構モデルシミュレーションプログラム312の動作つまり3次元機構モデルの動作に連携して実行される。
【0052】
第2インタフェースプログラム315は、前述したインタフェース部51および52としてコンピュータシステム100を機能させるものである。
この第2インタフェースプログラム315のうちインタフェース部51にかかる部分については、3次元機構モデルシミュレーションプログラム312と状態遷移図・表作成プログラム320とのいずれか一方に含まれてもよいし、これらのプログラム312および320に分割されて含まれていてもよい。
【0053】
また、第2インタフェースプログラム315のうちインタフェース部52にかかる部分については、3次元機構モデルシミュレーションプログラム312とマイコンチップ42に格納される制御プログラム(組込みソフトウェア)とのいずれか一方に含まれてもよいし、これらのプログラム312および制御プログラムに分割されて含まれていてもよい。
【0054】
統合開発環境プログラム316は、前述した統合開発環境装置43としてコンピュータシステム100を機能させるものである。
なお、本実施形態では、前述した通り、状態遷移図・表作成プログラム320(状態遷移図・表作成編集装置41)やマイコンチップ42がマルチタスクを採用している。
【0055】
そのため、第2インタフェースプログラム315は、状態遷移図・表作成プログラム320またはマイコンチップ42で実行される複数のタスクを、優先度を最も高く設定した、一つの同期タスクによって代表させ、その同期タスクを用いて、3次元機構モデルシミュレーションプログラム312(3次元リアルタイムシミュレーション装置30)がシミュレーション動作を行なっている間は、状態遷移図・表作成プログラム320またはマイコンチップ42での複数のタスクを停止させ、これにより、3次元機構モデルシミュレーションプログラム312による動作と、状態遷移図・表作成プログラム320やマイコンチップ42による動作とを同期させている。
【0056】
このとき、第2インタフェースプログラム315(インタフェース部51,52)は、コンピュータシステム100で実行される際、3次元機構モデルシミュレーションプログラム312と状態遷移図・表作成プログラム320またはマイコンチップ42(制御プログラム)との間において、以下のような通信を行なうことにより、同期タスクを用いた同期化を行なっている。
【0057】
即ち、3次元機構モデルシミュレーションプログラム312が、状態遷移図・表作成プログラム320または制御プログラムの実行時間(TS)を第2インタフェースプログラム315に通知する。
第2インタフェースプログラム315(インタフェース部51,52)は、その通知を受けて、通知された実行時間分だけ状態遷移図・表作成プログラム320または制御プログラムの実行を許容し、状態遷移図・表作成プログラム320または制御プログラムがその実行時間分だけ実行されると、状態遷移図・表作成プログラム320または制御プログラムの実行をその段階で中断させ、その実行時間分だけのプログラム実行が終了したことと、そのプログラム実行により得られたアクチュエータ指令信号とを3次元機構モデルシミュレーションプログラム312に通知する。
【0058】
この終了通知を受けた3次元機構モデルシミュレーションプログラム312は、3次元機構モデルを、状態遷移図・表作成プログラム320または制御プログラムの、その実行時間分の制御に応じた動作量だけ動作させ、その動作量に応じたセンサ信号を得てから、状態遷移図・表作成プログラム320または制御プログラムの次の実行時間を決定し、その決定した実行時間と前記センサ信号とを第2インタフェースプログラム315に通知する。
【0059】
このような通信処理を繰り返すことにより、相互に同期がとられた状態で、3次元機構モデルシミュレーションプログラム312と状態遷移図・表作成プログラム320または制御プログラムとが実行され、3次元リアルタイムシミュレーション装置30においては、その状態遷移図・表作成プログラム320または制御プログラムの実行による制御に従って3次元機構モデルが動作する。
【0060】
また、コンピュータシステム100(リアルタイムシミュレーション装置30)内に構築された3次元機構モデルは、CD−ROM210からこのコンピュータシステム100内にローディングされた支援プログラム310を構成する3次元機構モデルシミュレーションプログラム312によりそのコンピュータシステム100内で動作する。
【0061】
そして、コンピュータシステム100内に組み込まれた状態遷移図・表作成プログラム320や、マイコンチップ42に組み込まれた制御プログラム(組込みソフトウェア)は、コンピュータシステム100内にローディングされた第2インタフェースプログラム315(インタフェース部51,52)と結合され、このコンピュータシステム100内において、3次元機構モデルシミュレーションプログラム312の動作つまり3次元機構モデルの動作と同期して実行される。
【0062】
上述のごとく、本実施形態の支援システム10は、1つの装置(ここではコンピュータシステム100)内に、メカ設計部20,3次元リアルタイムシミュレーション装置30,状態遷移図・表作成編集装置41,統合開発環境装置43およびインタフェース部50〜52の全てを組み込んだ形態となっている。
本発明の支援システムは、上述のような形態以外に、複数のコンピュータシステム100をモデム229および通信回線(図示省略)により相互に通信可能に接続し、これらのコンピュータシステム100に、メカ設計部20,3次元リアルタイムシミュレーション装置30,状態遷移図・表作成編集装置41,統合開発環境装置43およびインタフェース部50〜52としての機能を分担させた形態として構成することもできる。
【0063】
この場合、機構設計プログラム311,3次元機構モデルシミュレーションプログラム312,状態遷移図・表作成プログラム320,第1インタフェースプログラム314,第2インタフェースプログラム315および統合開発環境プログラム316は、それぞれ、メカ設計部20,3次元リアルタイムシミュレーション装置30,状態遷移図・表作成装置41,インタフェース部50〜52および統合開発環境装置43としての機能を果たすコンピュータシステム100にインストールされることになる。
【0064】
なお、本実施形態のシステム10において、開発中の制御プログラム(組込みソフトウェア)をローディングしたマイコンチップ42は、コンピュータシステム100にI/Oボード(図示省略)を介して接続されており、制御プログラムに基づいてマイコンチップ42から出力されたアクチュエータ指令信号(本来はモータドライバ等に伝達される電気信号)は、前記I/Oボードを介してコンピュータシステム100に入力され、インタフェース部52を介して3次元リアルタイムシミュレーション装置30に入力される。そして、3次元リアルタイムシミュレーション装置30は、そのアクチュエータ指令信号に応じて3次元機構モデルを動作させ、本来センサから出力される信号と同様のセンサ信号を生成し、そのセンサ信号を、インタフェース部52および前記I/Oボードを介してマイコンチップ42に入力している。
【0065】
このようにして、本実施形態の支援システム10では、3次元リアルタイムシミュレーション装置30を中核に据えて、メカ試作品を作らなくても組込みソフトウェア(制御プログラム)の開発をメカ設計とは別個(コンカレント)に進めることができるようになっているほか、状態遷移図・表によるタスク制御記述法と3次元のリアルタイムシミュレーション装置30とを組み合わせ、組込みソフトウェアをメカ試作品なしに効率よく開発することができるようになっている。
【0066】
上述のごとく、本実施形態の支援システム10は、リアルタイムに機構シミュレーションを行ないながらメカ設計を行なうメカ設計部20と、機構をリアルタイムにシミュレーションする3次元リアルタイム・シミュレーション装置30と、3次元リアルタイムシミュレーション装置30上の仮想的な3次元機構モデルを実際のメカに見立てて組込みソフトウェアを開発する組込みソフトウェア開発部40とをそなえ、これらをインタフェース部50〜52を介して連携させるように構成されている。
【0067】
このような本実施形態のシステム10においては、メカ設計とそのメカを制御するための組込みソフトウェアの開発とがコンカレントに実行される。次に、その基本的な実行手順について簡単に説明する。
メカ設計者は、メカ設計部(意匠設計・CGシステム,3次元CADシステム)20と3次元リアルタイムシミュレーション装置30とを、インタフェース部50を介して連動させ、関節,ギア,カム等の各種機構の動きを詳細に検証しながら、単体部品の設計、および、それらを組み立てるためのアセンブリ設計を進めていく。この設計過程で、メカ設計者は、設計変更が生じる度に、その変更部分についての設計データを、インタフェース部50を介して3次元リアルタイムシミュレーション装置30に動的に反映し、その時の全体アセンブリの動きを確かめる。3次元リアルタイムシミュレーション装置30で扱う3次元機構モデルはソフトウェアシステムであるため、実際に試作品を作製する場合と違って任意の設計変更を速やかに反映することが可能である。
【0068】
一方、組込みソフトウェア開発者は、3次元リアルタイムシミュレーション装置30を実機と見立て、この3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41およびマイコンチップ42とを、インタフェース部51および52を介して連動させながら組込みソフトウェア開発を進める。このとき、メカ設計側で発生した任意の設計変更は、3次元リアルタイムシミュレーション装置30に速やかに反映されるため、組込みソフトウェアの開発がメカ側の設計変更によって滞ることはない。
【0069】
組込みソフトウェア開発者は、まず、状態遷移図・表編集装置41と3次元リアルタイムシミュレーション装置30とを連動させながら組込みソフトウェアのタスク制御の詳細仕様(タスク制御フロー)を決定し、その結果を統合開発環境装置(マイコンシステム開発環境)43に渡す。
統合開発環境装置43では、状態遷移図・表作成編集装置41から受け取ったタスク制御フローがC,C++,アセンブラコードに変換され、ターゲットマイコン用の実行モジュール(組込みソフトウェア)が作成されてマイコンチップ42に組み込まれる。
【0070】
マイコンチップ42と3次元リアルタイムシミュレーション装置30とは、インタフェース部52を介して連動することができるため、組込みソフトウェア開発部40では、マイコンチップ42に組み込んだ実行モジュールが仕様通りのタスク制御を行なうか否かを、3次元リアルタイムシミュレーション装置30上の仮想メカモデル(3次元機構モデル)を動かすことにより確かめることができる。
【0071】
このように、本実施形態のシステム10では、3次元リアルタイムシミュレーション装置30を仲介としてメカ設計および組込みソフトウェア開発をコンカレントに進め、最終的には、マイコンチップ42と実機とを接続して、実機を用いた最終結合テストを行なうことで、極めて効率よく、メカ設計および組込みソフトウェア開発が可能になる。
【0072】
次に、図5〜図82を参照しながら、本実施形態の支援システム10の各部の詳細について説明する。
まず、メカ設計部(意匠設計・3次元CADシステム)20と3次元リアルタイムシミュレーション装置30との連携部分(インタフェース部50)について、図5および図6を参照しながら説明する。
【0073】
なお、図5はシステム10の要部(メカ設計部20および3次元リアルタイムシミュレーション装置30)を示すブロック図、図6(A)および図6(B)は、それぞれ、メカ設計部20から3次元リアルタイムシミュレーション装置30へ受け渡される図形データファイルおよびアセンブリデータファイルの具体例を示す図である。
【0074】
図5に示すように、メカ設計部(意匠設計・3次元CADシステム)20からは、設計対象の各部品要素の図形データファイル(.slpファイルフォーマット)と、各部品要素を組み立てた状態にしたアセンブリデータファイル(.asyファイルフォーマット)とが出力され、これらのデータファイルは、3次元リアルタイムシミュレーション装置30に読み込まれる。
【0075】
このとき、メカ設計部20と3次元リアルタイムシミュレーション装置30との間には、前述したインタフェース部50(図1参照)が介在しているが、図5に示す例では、インタフェース部50としての機能が、メカ設計部20と3次元リアルタイムシミュレーション装置30とのいずれか一方に含まれているか、もしくは、これらのメカ設計部20と3次元リアルタイムシミュレーション装置30とに分割されて含まれている。従って、図5では、インタフェース部50は図示されていない。
【0076】
図6(A)に示すように、図形データファイルは.slpのファイルフォーマットであり、この.slpファイルフォーマットは、三角形ポリゴンの集合体を記述したもので、各三角形ポリゴンの各頂点の法線と3次元位置座標とを順次書き出したものである。また、図6(B)に示すように、アセンブリデータファイルは.asyのファイルフォーマットであり、この.asyファイルフォーマットでは、各部品要素の相互の配置情報が定義されている。
【0077】
3次元リアルタイムシミュレーション装置30は、メカ設計部20から、.asyおよび.slpのファイルを読み込んだ後、関節,カム,ギア等の機構情報やモータ,センサの各特性情報を、3次元リアルタイムシミュレーション装置20のGUI(Graphical User Interface)を通じて入力し、仮想メカモデル(3次元機構モデル)を完成させる。
【0078】
次に、3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41との連携部分(インタフェース部51)について、図7〜図14を参照しながら説明する。
なお、図7はシステム10の要部(3次元リアルタイムシミュレーション装置30,状態遷移図・表作成編集装置41およびインタフェース部51)を示すブロック図、図8は状態遷移図の表示例を示す図、図9は状態遷移表の表示例を示す図、図10(A)〜図10(C)はマルチタスクについて説明するためのタイムチャート、図11(A)および図11(B)は優先度によるタスクのスケジューリングについて説明するための図、図12(A)〜図12(D)は同期タスクを用いた同期化処理について説明するためのタイムチャートである。
【0079】
図7に示すように、状態遷移図・表作成編集装置41には、状態遷移で記述したタスク制御を実行するタスク制御部411と、キーボードやマウス等を使ってタスク制御部411によるタスク制御を編集するユーザインタフェース部412と、タスク制御部411によるタスク制御の内容を表示する状態遷移表示部413と、3次元リアルタイムシミュレーション装置30とのインタフェースを取るインタフェース部414とがそなえられている。状態遷移表示部413では、タスク制御部411によるタスク制御の内容(タスク制御フロー)が、図8に示すようにグラフィカルに状態遷移図の形で、または、図9に示すようにテーブル形式(状態遷移表の形)で表示されるようになっている。
【0080】
また、3次元リアルタイム・シミュレーション装置30には、リアルタイムに3次元機構モデルのシミュレーションを行なうシミュレーション部31と、状態遷移図・表作成編集装置41とのインタフェースを取るインタフェース部32とがそなえられている。
インタフェース部414とインタフェース部32とが、上述したインタフェース部51を構成している。つまり、図7に示す例では、インタフェース部51としての機能が、3次元リアルタイムシミュレーション装置30と状態遷移図・表作成編集装置41とに分割されて含まれている。
【0081】
ところで、ファームウェア(状態遷移図・表作成編集部41やマイコンチップ42)と連携した3次元リアルタイムシミュレーション装置30では、ファームウェア上での実時間と同じ時間スケールで、3次元機構モデル(仮想メカモデル)の動きなどをシミュレートする必要がある。
例えば図10(A)および図10(B)に示すようにファームウェアのタスク1,2でTS時間の計算処理が実行された場合には、引き続き、図10(C)に示すように、3次元リアルタイムシミュレーション装置30で、仮想メカ(3次元機構モデル)についてTS時間分のシミュレーションを実行する。
【0082】
ただし、図10(A)および図10(B)に示すように、複数(図中、2つ)のタスクが並列に走るとき、複数のタスク間で同期をとりながら同時に処理の停止/開始を行なうことは、どのタスクが時間の管理を行なうか、どのように処理を中断/再開するかなどの問題がある。
そこで、本実施形態では、図12(C)に示すような同期用のタスク(同期タスク)を用意し、この同期タスクに時間の管理と他のタスクの開始/停止の制御を行なわせることで、タスク内に特別な処理を追加せずに、ファームウェアと3次元リアルタイムシミュレーション装置30とを同期させている。
【0083】
このとき、リアルタイムOSの基本機能である、優先度によるタスクのスケジューリング機能を用いる。複雑な組込みソフトウェア(ファームウェア)では、リアルタイムOSを用いて、複数のタスクにより様々な処理を行なっている。リアルタイムOSでは、複数のタスクを並列に走らせることができるが、リソース(CPU)は1つしかないので、OSが、どのタスクにCPUを割り当てるかスケジューリングを行なっている。
【0084】
このスケジューリングを行なうべく、タスクに優先度を設定し、複数のタスクからCPU使用の要求が同時にきたとき、優先度の高いタスクからCPUを割り当てていく手法が一般的に採用されている。例えば図11(A)および図11(B)に示すように、優先度の低いタスクLの処理中に優先度の高いタスクHが処理を開始する時には、OSは、タスクLの処理を途中で停止させ、処理の実行権をタスクHに移す。そして、OSは、タスクHの処理が終了すると、タスクLの中断していた処理を再開させる。
【0085】
このような優先度によるタスク切り替え機能を用い、同期タスクの優先度を他のタスクよりも高く設定すれば、同期タスクが他のタスクを開始/停止する制御を行なうことができる。このとき、通常のタスクには同期処理用の特別な処理は何も必要ない。
例えば図12(A)〜図12(D)に示すように、2つのタスク1,2を並列に実行する場合、新たに追加した同期タスクの優先度を最も高く設定し、タスク1,2でのTS時間の計算処理に対応して3次元リアルタイムシミュレーション装置30でTS時間分のシミュレーションを実行している期間中は、CPUによる処理の実行権を同期タスクに移す。これにより、その期間中、タスク1,2の処理が停止され、TS時間分のシミュレーション終了後にタスク1,2の処理が再開される。
【0086】
図13は、本実施形態における同期タスクを用いた同期化処理について、より詳細に説明するためのブロック図であり、この図13に示す例では、状態遷移図・表作成編集装置41(マイコンチップ42)と3次元リアルタイムシミュレーション装置30とのインタフェース部51(52)を共有メモリ53により実現している。
【0087】
図13に示す状態遷移図・表作成編集装置41では、n個のタスク1〜nが、それぞれ内部メモリ415のデータを参照しながら並列的に実行される。同期タスクの処理中は、内部メモリ415のデータ(アクチュエータ指令信号)を読み出して3次元リアルタイムシミュレーション装置30に送信し、この3次元リアルタイムシミュレーション装置30からのデータ(センサ信号)を受信して内部メモリ415に書き込む。
【0088】
このとき、各タスクの処理に合わせて個々のデータを3次元リアルタイムシミュレーション装置30(仮想メカ)と送受信してもよいが、本実施形態では、通信を効率的に行なうために、内部メモリ415にバッファリングしておき、同期タスクが、必要なときにまとめてデータの送受信を行なう。通信手法としては、上述のような共有メモリ53を用いる手法のほかに、Socket通信やメッセージ通信などによる方法を用いることもできる。
【0089】
次に、同期タスクを用いた同期化処理について、図14に示すフローチャート(ステップS11〜S19)従って説明する。
この図14に示すように、3次元リアルタイムシミュレーション装置30からは前回のシミュレーション結果(センサ信号)とともに次回の計算時間(処理時間)TSが送信され、その時間TSが状態遷移図・表作成編集装置41(マイコンチップ42)に設定される(ステップS11)。
【0090】
そして、その時間TSだけ同期タスクの処理が停止される(ステップS12)。つまり、その時間TSの間、複数のタスクの処理が実行され、各タスクの処理によって得られたアクチュエータ指令信号(モータ指令信号)が内部メモリ415に書き込まれる。本実施形態では、同期タスクは、通常は停止していて、ある時間TSが経過すると起動されるようにする。これは、OSが持っているタイマ機能やスリープ機能により実現することができる。
【0091】
時間TSだけ同期タスクの処理を停止して待機した後(ステップS12)、同期タスクを起動して他の全てのタスクを停止し、同期タスクで、各タスクからの出力データ(指令信号)を内部メモリ415から読み込み(ステップS13)、その出力データを共有メモリ53に書き込んでから(ステップS14)、共有メモリ53に同期フラグ1(Loop Flag)として“0”を書き込み(ステップS15)、3次元リアルタイムシミュレーション装置30に処理の実行を許可する。これに伴い、共有メモリ53において同期フラグ2(Ready Flag)が“0”から“1”に設定される。
【0092】
この後、状態遷移図・表作成編集装置41(マイコンチップ42)では、3次元リアルタイムシミュレーション装置30からのシミュレーション終了通知を待つとともに、他のタスクを停止したままにしておく。
3次元リアルタイムシミュレーション装置30は、状態遷移図・表作成編集装置41(マイコンチップ42)からシミュレーション実行開始の指令を受け取ったら、TS時間分のシミュレーションを行ない、TS時間分のシミュレーションを完了すると、シミュレーション結果(センサ信号)と次回の計算時間(処理時間)TSとを共有メモリ53に書き込むとともに、共有メモリ53上の同期フラグ2(Ready Flag)を“0”に書き換え、状態遷移図・表作成編集装置41(マイコンチップ42)から次のシミュレーション実行開始の指令を受けるまで待機する。
【0093】
そして、状態遷移図・表作成編集装置41(マイコンチップ42)では、共有メモリ53上の同期フラグ2(Ready Flag)が“0”になったこと、つまり、シミュレーションが完了したことを認識すると(ステップS16のYESルート)、共有メモリ53上の同期フラグ1(Loop Flag)を“”に書き換えるとともに(ステップS17)、シミュレーション結果(センサ信号)である入力データを共有メモリ53から読み込んでから(ステップS18)、その入力データを内部メモリ415に書き込む(ステップS19)。このとき、次回の計算時間(処理時間)TSも書き込まれ、再びステップS11に戻って、上述と同様の処理を繰り返し実行する。
【0094】
以上のような処理を繰り返すことにより、状態遷移図・表作成編集装置41(マイコンチップ42)においてマルチタスクを採用している場合であっても、状態遷移図・表作成編集装置41(マイコンチップ42)と3次元リアルタイムシミュレーション装置30とを確実に同期させることができる。
なお、このとき、時間TSは固定でなく、シミュレーションの状況によって可変にしてもよい。このためには、前述したように、同期とともにシミュレーション時間TSを通信する。
【0095】
また、状態遷移図・表作成編集装置41(マイコンチップ42)において、3次元リアルタイムシミュレーション装置30へのデータ(指令信号等)は、3次元リアルタイムシミュレーション装置30にシミュレーションを開始させる前に送信され、シミュレーション終了後、3次元リアルタイムシミュレーション装置30からのデータ(センサ信号等)は、状態遷移図・表作成編集装置41(マイコンチップ42)側の計算を開始する前に受信され、内部メモリ415に書き出される。
【0096】
さらに、3次元リアルタイムシミュレーション装置30とマイコンチップ42との間におけるインタフェース部52も、図5〜図14により上述したインタフェース部51と同様に構成されて、このインタフェース部51と同様に機能し、マイコンチップ42においてマルチタスクを採用している場合であっても、マイコンチップ42と3次元リアルタイムシミュレーション装置30とを確実に同期させることができる。
【0097】
また、状態遷移図・表作成編集装置41の具体例としては、例えば、State Flow(MathWorks社製品)マニュアル,StateMate(iLogix社製品)マニュアル,ZIPC(CATS社製品)マニュアルなどに開示された技術が挙げられるほか、統合開発環境装置43の具体例としては、Softune(富士通社製品)マニュアルなどに開示された技術が挙げられる。これらの状態遷移図・表作成編集装置41と統合開発環境装置43とは互いに連携しており、状態遷移図・表作成編集装置41で作成したタスク制御フローは統合開発環境装置43にロードされ、この統合開発環境装置43により、最終的にターゲットマイコン用の実行モジュールがシームレスに作成されるようになっている。
【0098】
そして、上述のように、メカ設計と組込みソフトウェアの開発とを、3次元リアルタイムシミュレーション装置30を利用しながらコンカレントに進めた後は、実際のインタフェースの試作品を使って(実機とマイコンチップ42とを接続して)、メカおよび組込みソフトウェアの結合試験(実機最終確認)を行なう。またさらに、前述した通り、本実施形態の3次元リアルタイムシミュレーション装置30にはロジックアナライザ(解析部)がそなえられている。このロジックアナライザにおいては、図15に示すように、アクチュエータ(モータ)に対するアクチュエータ指令信号と3次元リアルタイムシミュレーション装置30で得られたセンサ信号との時間変化が、同期アルゴリズム下で、リアルタイムで解析され、シミュレーション結果として表示される。これにより、組込みソフトウェア開発者がその時間変化を確認することができる。また、ロジックアナライザは、データを保存する機能や印刷する機能も有している。
【0099】
図16は、上述したロジックアナライザによる処理を含む、本実施形態でのシミュレーション処理全体の流れを説明するためのフローチャートであり、この図16に示すように、3次元リアルタイムシミュレーション装置30によるシミュレーション処理中は、インタフェース部51や52による同期処理を行ないながら(ステップS21)、状態遷移図・表作成編集装置41やマイコンチップ42からのアクチュエータ指令信号に基づくモータ処理を行なった後(ステップS22)、そのアクチュエータ指令信号に応じたセンサ処理を行なう(ステップS23)。これらのステップS21〜S23の処理中は、I/Oボードやソケット通信による入出力が行なわれ、これらの処理に伴う出力値は、後から読み出すことができるようにバッファリングされる一方、入力値は、同期処理(ステップS21)以外の部分で変化しないことが保証されているため、バッファリングは行なわれていない。
【0100】
そして、ロジックアナライザによる処理が不必要である場合(ステップS24のNOルート)、ステップS21に戻る一方、必要である場合(ステップS24のYESルート)、アクチュエータ指令信号やセンサ信号の記憶・表示が行われる(ステップS25)。
このとき、本実施形態では、ループ毎に、シミュレーションすべき時間TSが変化することがあるため、ロジックアナライザの情報は、「時間」,「PIO値」,「DA値」の3つの配列を用いて記憶される。
【0101】
なお、メモリ容量の節約の関係から、「時間」の配列としては、同期処理に際して3次元リアルタイムシミュレーション装置30側から指定される制御ループ回数(図33にて後述するn参照;時間TSに対応した回数)を記憶し、「PIO値」の配列としては、各ビット毎に32チャンネル分のデータを記憶し、「DA値」の配列としては、2チャンネル分のデータを16ビットに量子化し32ビットの整数として記憶している。
【0102】
ついで、本実施形態の支援システム10における3次元リアルタイムシミュレーション装置30について、図17〜図82を参照しながら、より詳細に説明する。
図17は、本実施形態の支援システム10における3次元リアルタイムシミュレーション装置30の動作概念を説明するためのの概念図であり、この図17に示すように、3次元リアルタイムシミュレーション装置(「3Dモデルシミュレータ」と略記する)30内には3次元機構モデル(「3Dモデル」と略記する)が構築されている。
【0103】
3Dモデルは、複数のリンク(製品を構成する個々の部品)の3次元形状とそれらのリンクの姿勢との関係を定義した3次元機構データによって定義される、製品の3次元モデルであり、リンクの姿勢を変更することによってその3Dモデルが動作することになる。
組込みソフトウェア開発部40(状態遷移図・表作成編集装置41やマイコンチップ42)から3Dモデルシミュレータ30には、モータ等のアクチュエータを動作させるためのアクチュエータ指令信号が送られ、3Dモデルシミュレータ30から組込みソフトウェア開発部40には、センサのオン,オフ等をあらわすセンサ信号が送られる。また、組込みソフトウェア開発部40と3Dモデルシミュレータ30との間では同期信号が送受信される。なお、図17において、同期信号の送受信機能を果たすインタフェース部51,52(図1参照)の図示は省略されている。
【0104】
図18は、センサやモータの定義時の処理を説明するための、3Dモデルシミュレータ30の模式図、図19は、本実施形態の3Dモデルシミュレータ30によるシミュレーション処理を説明するための模式図である。
3Dモデルは、3次元CAD等のメカ設計部20により構築され、その構築された3Dモデルに対し、ここでは、図18に示すように、ユーザによりキーボード等の入力装置が操作されてモータやセンサが定義される。
【0105】
そのような定義が行なわれた後の実際のシミュレーションに当たっては、図19に示すように、組込みソフトウェア開発部40から送られてきたアクチュエータ指令信号(ここではモータ回転指令信号)に対応し、モータとして定義されたリンク(以下、「モータリンク」と称する)の姿勢を変化させ、さらに機構データに基づき、モータリンクに連結された他のリンクについて、モータリンクの姿勢変化に応じた量だけ動作させ、その結果として、センサとして定義されたリンク(以下、「センサリンク」と称する)の姿勢にも影響が出る。そこで、センサリンクの姿勢に応じセンサ信号を発生させ、そのセンサ信号を組込みソフトウェア開発部40に送信する。
【0106】
図20は、本実施形態の3Dモデルシミュレータ30と組込みソフトウェア開発部40(同期タスク)との動作タイミングを説明するための図であり、この図20における図中のハッチング部分は、シミュレータ30や組込みソフトウェア開発部40がそれぞれ動作している期間を示している。
この図20に示すように、シミュレータ30と組込みソフトウェア開発部40(同期タスクのオフ動作)とは、動作,停止のサイクルを交互に繰り返している。各サイクルにおいて、シミュレータ30および組込みソフトウェア開発部40は、次のような手順で動作する。ただし、シミュレータ30と組込みソフトウェア開発部40(同期タスク)との間の同期の詳細については後述する。
【0107】
(1)シミュレータ30は、アクチュエータ指令信号を基に、シミュレーション時間TS分のシミュレーションを行ない、センサ信号を出力する。
(2)シミュレータ30は、現在の3Dモデルの干渉可能性から、次のループでのシミュレーション時間TSを決定し、その時間TSを組込みソフトウェア開発部40に受け渡すとともに、動作開始指令(Ready Flag)を組込みソフトウェア開発部40に受け渡す。
【0108】
(3)組込みソフトウェア開発部40は、時間TSを受け取るとともに動作開始指令(Ready Flag)を受け取り、通り図12〜図14を参照しながら前述した通り、同期タスクをオフとして、その時間TS分の計算(制御)をマルチタスクで行なった後、シミュレータ30側に動作終了信号(Loop Flag)を送り、次の動作開始指令(Ready Flag)を受け取るまでの間、同期タスクをオンとして動作を停止する。
【0109】
(4)シミュレータ30は、組込みソフトウェア開発部40の動作終了信号(Loop Flag)を受け取って時間TS分のシミュレーションを開始する。
シミュレータ30と組込みソフトウェア開発部40とは、以上の手順を繰り返すことにより、交互に同期しながら動作する。
図21は、本実施形態の3Dモデルシミュレータ30によるシミュレーション手順を説明するためのフローチャートである。
【0110】
この図21に示すように、シミュレーションが開始されると、まず初期設定が行なわれて(ステップS101)、3Dモデルの各リンクの姿勢が初期化される。そして、シミュレーションを行なう時間間隔(シミュレーション間隔)TSが組込みソフトウェア開発部40側に送信され(ステップS102)、組込みソフトウェア開発部40側からシミュレーション間隔TSを受信した旨をあらわす信号を受け取ると(ステップS103のYESルート)、組込みソフトウェア開発部40に計算開始命令を送信する(ステップS104)。
【0111】
組込みソフトウェア開発部40によりシミュレーション間隔TS分の計算が行なわれて、その終了が通知されると(ステップS105のYESルート)、ここでシミュレートしている3Dモデルを構成する全てのモータおよび全てのセンサを今回のTS分の処理に関し未処理である旨を初期設定すれる(ステップS106)。
【0112】
次いで、ステップS201では、未処理のモータが存在しているか否か判定され、未処理のモータ1つずつについてステップS202〜S207の処理が行なわれる。
すなわち、未処理のモータが存在している場合(ステップS201のYESルート)、組込みソフトウェア開発部40側から送られてきた、今処理しようとしているモータに関するアクチュエータ指令信号に応じてそのモータの回転速度が決定され(ステップS202)、その回転速度からTS間に変位するモータの姿勢が決定される(ステップS203)。
【0113】
そして、機構関係定義によりそのモータに関連づけられた他の部品の姿勢が変更され(ステップS204)、部品間の最短距離dが測定され(ステップS205)、ステップS206,S207では、各モータの回転により測定される各最短距離dの中の最短距離Dが求められる。
ここでは、今までの最短距離Dよりも新たに測定された最短距離dが小さいか否かを判断し(ステップS206)、小さい場合(YESルート)、新たに測定された最短距離dを最短距離Dに置き換えてから(ステップS207)、ステップS201に戻る一方、小さくない場合(NOルート)、そのままステップS201に戻る。
【0114】
上述のようなステップS202〜S207の処理は、ステップS201でNOルートをとるまで、つまり、未処理のモータが存在しないと判定されるまで、繰り返し実行される。
このようにして、全てのモータについてTS間の姿勢変更が終了すると、姿勢変更後の3Dモデルが画面に表示される(ステップS208)。
【0115】
この後、今度は未処理のセンサが存在しているか否か判定され(ステップS301)、未処理センサが存在している場合(YESルート)、未処理のセンサ1つずつについてセンサリンクの姿勢に応じたセンサ信号のオン,オフが検出される(ステップS302)。
全てのセンサについての処理が終了すると(ステップS301のNOルート)、組込みソフトウェア開発部40に向けてそれら全てのセンサに関するセンサ信号が出力され(ステップS303)、さらに、部品間最短距離Dに応じたサンプリング間隔TSが決定され(ステップS401)、ステップS102に戻ってその決定された間隔TSが組込みソフトウェア開発部40に送信される。
【0116】
シミュレータ30では、以上の処理が繰り返し実行され、組込みソフトウェア開発部40との同期をとりつつ、3Dモデルの動作シミュレーションが行なわれる。
図22は、図21に示すシミュレータの処理フローの一部分(図21に一点鎖線で囲った部分)に代えて採用することのできる部分フローを示すフローチャートである。
【0117】
この図22には、ステップS202とステップS203との間にステップS210が挿入されている。このステップS210では、今処理を行なっているモータの回転速度がゼロ(ω=0)か否かが判定され、今回の間隔TSの間にそのモータは回転しない(ω=0)のときは(YESルート)、そのモータの動作に関しては部品間の距離dの測定は行なわずにステップS211に進んでd=∞としてからステップS206へ移行し、このステップS206の判定でその距離d=∞が距離Dを求める演算から除外されるようにしている。ステップS210で今処理を行なっているモータの回転速度がゼロではないと判定された場合(NOルート)、ステップS203へ移行し、前述した通りの処理を行なう。
【0118】
部品間の距離dを求めるにはかなりの計算量を要するので、上述のごとく、モータが回転しないときはそのモータに関する距離dの測定を行なわないようにすることにより、シミュレータ30での計算量を減らし、シミュレーションのスピードアップをはかることができる。
図23は、モータとして定義されるリンク(モータリンク)の選び方を説明すべくモータリンクの一例を模式的に示す斜視図である。
【0119】
この図23において、本来のモータは図中のリンクAであるが、リンクA自体は土台に固定されているため、シミュレーション上は、その本来のモータによって一番最初に駆動されて3Dモデルで姿勢が変更されるリンクBを、モータリンクとして定義する。モータリンクをこのように定義することにより、シミュレーションを容易化している。
【0120】
図24(A),(B)および図25(A),(B)は、センサとして定義されるリンク(センサリンク)の選び方を説明すべく、それぞれ、センサリンクの一例および他例を模式的に示す斜視図である。
これらの図24(A),(B)および図25(A),(B)において、本来のセンサはリンクAであるが、ここでは、その本来のセンサによって検出されるリンクBをセンサリンクとして定義する。そして、リンクBの姿勢(位置)に応じて、図24(A)および図25(A)に示す状態を、センサがオフの状態として定義し、図24(B)および図25(B)に示す状態を、センサがオンの状態として定義する。このように、センサの場合も、モータの場合と同様、本来のセンサではなくそのセンサにより検出されるリンクをセンサとして定義し、そのセンサリンクの姿勢に応じてオン,オフを定義することにより、シミュレーションを容易化している。
【0121】
図26は、モータの種類を説明するための図である。
この図26に示すように、本実施形態では、モータを定義するにあたり「無段変速」と「有段変速」との二種類の定義方法が用意されている。
「無段変速」は、速度指令値と目標速度との間の比例定数を定義する定義方法である。この「無段変速」は、さらに、「正負に関係なく比例」させる方法と、二進数の「最上位ビットを符号」とみなす方法との2種類が用意されている。前者の方法では、例えば比例定数が100のとき、二進数101(10進数で−3)が−300rpm(マイナス符号は逆転方向への回転をあらわす)に変換される。また、後者の方法では、例えば二進数101について、最上位ビット‘1’とその他のビット‘01’とに分け、最上位ビット‘1’はマイナス符号(‘0’はプラス符号)、残りの‘01’を数値(10進数で1)とし、それらを合わせた−1に比例定数100を掛けて−100rpmに変換する。
【0122】
「有段変速」は、速度指令値と目標速度との対応表が定義される。例えば図26中の対応表では、二進数101に対し−200rpmが定義されており、速度指令値として二進数101が入力されると、対応表を参照し目標速度として−200rpmが出力される。なお、対応表としては、図75を参照しながら後述するようなものもある。
【0123】
本実施形態では、上述のような複数種類の定義方法を用意しておくことにより、モータの定義の自由度を向上させている。
図27は、モータを一次遅れ系とみなしたときの、モータの回転速度ωの初期変化を示す図である。
ここでは、モータの回転速度変化を図27に示すような一次遅れ系としてとらえて、モータの負荷による遅れやその影響を取り入れたシミュレーションを行なう。モータを一次遅れ系とみなすと、ユーザは、整定時間4Tを入力するだけでそのモータの特性を指定することができ、入力作業の繁雑さが低減される。
【0124】
以下に、モータを一次遅れ系とみなしたときの、シミュレーション間隔TSの間のモータの回転量Δθの算出式を導出する。なお、以下、シミュレーション間隔TSをΔtとして表記する。
時刻tにおけるモータ速度ωは、下式(1)により表される。
【0125】
【数1】
Figure 0003897948
【0126】
ここで、ωiは目標速度、ωoは目標速度指令前のモータ速度、Tはモータの性質を表す整定時間4Tに比例した定数である。
上式(1)で表される時刻tにおけるモータ速度ωをωk-1とすると、時刻tよりもΔt後の時刻t+Δtのモータ速度ωkは、下式(2)となる。
【0127】
【数2】
Figure 0003897948
【0128】
これらの(1),(2)式から下式(3)が得られる。
【0129】
【数3】
Figure 0003897948
【0130】
Δtの間にモータが回転する量Δθは、上式(3)をΔtについて積分することにより、下式(4)として与えられる。
【0131】
【数4】
Figure 0003897948
【0132】
モータを一次遅れ系とみなしたとき、上式(4)に基づいて、目標速度ωi,シミュレーション時間Δt,そのシミュレーション時間Δtだけ前の時刻におけるモータ速度ωk-1および整定時間4Tによって、そのシミュレーション時間Δtの間のモータの回転量Δθが求められる。
ただし、モータは、常に上記(4)式のように動作する必要はなく、例えばモータに指令される目標速度ωiが変化してから整定時間4Tが経過した時点で速度をωiに固定してもよい。
【0133】
図28は、本実施形態のシミュレータ30における、一次遅れを考慮したモータ駆動の処理を説明するためのフローチャートである。
この図28に示すように、部品間距離に基づいてシミュレーション間隔Δt(=TS)が決定され(ステップS501)、組込みソフトウェア開発部40からアクチュエータ指令信号が入力されると(ステップS502)、図26に示すモータの定義に従って比例定数あるいは対応表が参照されて目標速度ωiが決定される(ステップS503)。
【0134】
ステップS504では、目標速度ωiが変更されたか否か(ωi=ωioldであるか否か)が判定され、今回の目標速度ωiが変更されていた場合(NOルート;ωi≠ωiold)は、ステップS505に進み、目標速度ωiが変更された時点からの経過時間を示すttotalが0に初期化され、次回のステップS504での判定のためにωioldにωiが格納されてから(ステップS506)、ステップS507へ移行する。
【0135】
ステップS504でωi=ωioldであると判定された場合(YESルート)は、ステップS505,S506を経由することなく、ステップS507に進み、目標速度ωiが変更された時点からの経過時間ttotalが整定時間4Tに達したか否かが判定される。ttotalが未だ4Tに達していない場合(NOルート)は、ステップS508に進み、上式(3)に従ってモータの回転速度ωが求められ、さらにステップS509において、上式(4)に従ってモータの回転量Δθが求められる。
【0136】
一方、ステップS507においてttotal≧4Tであると判定された場合(YESルート)は、ステップS510に進み、モータの回転速度ωが目標速度ωiと等しい速度に設定され、さらに、ステップS511において、モータの回転量Δθが、目標速度ωiで時間Δtだけ回転したときの回転量に設定される。
ステップS508,S509を経由した場合であっても、あるいはステップS510,S511を経由した場合であっても、ステップS512においてttotalがΔtだけ増分され、ステップS513においてモータのトータルの回転量θがΔθだけ増分される。
【0137】
この図28に示す処理が組込みソフトウェア開発部40と同期をとりながら繰り返し実行されることにより、図27に示す一次遅れ系とみなしたときの速度変化に従ってモータが回転する。
図29,図30および図31(A)〜図31(C)は、干渉チェックを用いたセンサの定義方法を説明するための図である。
【0138】
図29では、接触センサS1の姿勢が複数のモータMの姿勢の組合せにより決定される例が示されている。この場合、図24(A),(B)および図25(A),(B)を参照して説明した方法を採用すると、複数のモータMそれぞれの姿勢の組合せでセンサS1のオン,オフを定義することになり極めて複雑な定義が必要となる。そこで、ここでは、センサS1と土台との干渉をチェックし、それらの間の干渉の有無によってセンサS1をオンあるいはオフとする。こうすることにより、ユーザに複雑な定義を要求することなく、センサS1のオン,オフを決定することができる。
【0139】
図30では、スリットSLの移動により光量センサ(光電センサ)S2のオン,オフが多数回繰り返される例が示されており、この場合、図31(A)〜図31(C)に示すように光束を1つの仮想リンクと見なし、その仮想リンクとスリットSLとの干渉の有無によってセンサS2のオン,オフを判定する。
この場合、仮想リンクとの干渉をチェックする相手のリンクは、図30に示すように相手のリンクが予め分かっている場合、そのリンクに限定してもよい。また、相手のリンクが不明である場合であっても、本来のセンサ自体をあらわすリンクは、その仮想リンクと常に干渉(接触)しているため、干渉をチェックすべき相手のリンクからは除外される。
【0140】
この仮想リンクによるセンサ出力決定方法は、ここに示した光電センサなどに限らず、例えばマイクロスイッチの接触部分を仮想リンクとして定義するなど、接触式の位置検出センサにも適用することができる。
図24(A),(B)および図25(A),(B)を参照して説明したセンサの定義方法は、ポテンショメータ,エンコーダ等の角度を検出するセンサなど、一自由度の変位を検出するセンサを表現するのに有効な方法である。しかし、ここに示したような、複数のモータの姿勢の組合せにより出力が決定されるように配置されたセンサ(図29)など多自由度の組合せの結果として姿勢が決定されるセンサや、スリットカウンタ(図30)などオン,オフの変化が多いセンサには、その定義方法を採用するとユーザに複雑な定義を要求することになる。そのため、ここに説明した、リンクどうしの干渉の有無によりセンサのオン,オフを判定する方法を採用することが好ましい。
【0141】
図32は、シミュレータ30と組込みソフトウェア開発部40との間で同期をとるために送受信される信号を説明するためのタイミングチャート、図33は、シミュレータ30における3Dモデルの動作とソフトウェア開発部40の動作との同期をとるための同期化手法を説明するためのフローチャート、図34は、その同期を実現するための、シミュレータ30側の処理を説明するためのフローチャートである。ここで、図33で説明する同期化手法を実現するためのプログラムは、インタフェース部51,52を実現するための第2インタフェースプログラム315に組み込まれる。
【0142】
図32に示す、ループフラグ(Loop Flag),レディフラグ(Ready Flag)およびタイムスケールは、それぞれ以下の意味をもつ信号である。
(1)Loop Flag
組込みソフトウェア開発部40からシミュレータ30へ受け渡す信号であって、組込みソフトウェア開発部40が現在動作中であるか否かを表わしている。
【0143】
(2)Ready Flag
シミュレータ30から組込みソフトウェア開発部40へ受け渡す信号であって、シミュレータ30による1つのシミュレーション間隔Δt(=TS)分のシミュレーションが終了したことを表している。
(3)タイムスケール
シミュレータ30から組込みソフトウェア開発部40へ受け渡す信号であって、シミュレータ30が部品間最短距離に基づいて決定したシミュレーション間隔Δt(=TS)を表している。
【0144】
本実施形態では、シミュレーション間隔Δt(=TS)を指定するタイムスケールとしては、5msec,2secなどの具体的な時間を用いず、そのシミュレーション間隔Δt(=TS)の間に、図33に示す処理ルーチンを通過する回数nを用いている。
図32に示すように、ステップS601でn=0か否かを判定し、n=0でない場合(NOルート)には、ステップS602に進んでnを1だけデクリメントし、本来の処理(遷移図・表作成作成プログラム320や制御プログラム)の実行に移っている。そして、ステップS601においてn=0と判定された場合(YESルート)のみ、Loop Flagを‘Low’に設定し同期タスクを起動させてから(ステップS603)、ステップS604〜S607の処理が実行される。
【0145】
ここでは、図32〜図34を説明するに当たり、シミュレータ30では、現在、シミュレーションが行なわれており、従って、Ready Flagは‘Low’レベルであり、組込みソフトウェア開発部40側では図33のステップS604にとどまってReady Flagが‘High’に変化するを待っている段階にあるとする。このとき、シミュレータ30における同期処理をあらわす図34のルーチンでは、ステップS703のシミュレーションを行なっている途中にある。
【0146】
なお、シミュレータ30側では、初期設定を行なってから(ステップS701)、ステップS702に進んで、Loop Flagが‘Low’に変化するのを待ち、前述した図32のステップS603の処理によりLoop Flagが‘Low’に変化すると、ステップS703に進み、シミュレーション間隔Δt分のシミュレーションが行なわれる。
【0147】
ここで、シミュレーションが終了すると、シミュレータは図34のステップS704に移り、次のシミュレーション間隔(タイムスケール)Δtが、上述した回数nにより決定され、ステップS705においてそのタイムスケールΔt(n)が組込みソフトウェア開発部40に送信され、さらにステップS706に進んでReady Flagが‘High’レベルに変更される。
【0148】
これに応じて、組込みソフトウェア開発部40側では、図33に示すステップS604を抜け出し(YESルート)、ステップS605に進みタイムスケールnが読み込まれ、さらにステップS606に進んでLoop Flagが‘High’に変更され同期タスクが停止される。その後、ステップS607において、シミュレータ30側から送信されてきているReady Flagが‘Low’に変化するのを待って本来の処理に進む。
【0149】
組込みソフトウェア開発部40において遷移図・表作成作成プログラム320や制御プログラムは一定周期で繰り返し実行されており、前述したように、ステップS601ではn=0か否かが判定され、n≠0の場合(NOルート)、ステップS602に進んでnが1だけデクリメントされる。これを繰り返し、ステップS601でn=0と判定されると(YESルート)、ステップS603に進みLoop Flagが‘Low’に変更されて同期タスクが起動され、その後、ステップS604において、シミュレータ30側から送られてくるReady Flagが‘High’に変化するのを待つ状態となる。
【0150】
一方、シミュレータ30側では、図34のステップS706においてReady Flagが‘High’に変更された後、ステップS707において、組込みソフトウェア開発部40側から送られてくるLoop Flagが‘High’に変化するのを待ち、前述した図32のステップS606の処理によりLoop Flagが ‘High’に変化したことを受けて、ステップS708に進み、Ready Flagを‘Low’に変化させ、ステップS702に進んで、Loop Flagが‘Low’に変化するのを待つ。前述したように、Loop Flagが‘Low’に変化すると、ステップS703に進み、シミュレーション間隔Δt分のシミュレーションが行なわれる。
【0151】
以上の処理が繰り返されることにより、シミュレータ30と組込みソフトウェア開発部40(遷移図・表作成作成プログラム320や制御プログラム)は相互に同期をとられながら、それぞれの処理がマルチタスクにより実行される。
次に、リンク(部品)どうしの干渉可能性の評価方法について説明する。
図35(A)および図35(B)は、干渉可能性の評価方法の説明図である。ここでは、リンクAが速度υでリンクBに向かって動いている例が示されている。
【0152】
図35(A)は、干渉する可能性のある2つのリンク(リンクAとリンクB)が大きく離れている状態を示している。この場合、干渉可能性が小さいものと判定されて、シミュレーション間隔Δtとして比較的大きな値を設定し、リンクAが一回のシミュレーションで進む距離υΔtを大きくすることにより、シミュレーションを高速に行なうことができる。
【0153】
また、図35(B)は、リンクAとリンクBとが近づき、それらの間の距離が小さい状態を示している。この場合、干渉可能性が大きいものと判定されて、シミュレーション間隔Δtとして比較的小さな値を設定し、リンクAが一回のシミュレーションで進む距離υΔtを小さくすることにより、高精度なシミュレーションを行なうことができる。
【0154】
このように、本実施形態では、部品間の距離に応じてシミュレーション間隔Δtが変更され、高精度なシミュレーションと高速なシミュレーションとの両立、調和が図られている。
図36(A)〜図36(C)は、部品間の距離dとシミュレーション間隔Δtとの関係の各種の例を示す図である。
【0155】
これらの図36(A)〜図36(C)に示すいずれの例によっても、距離dが小さくてもシミュレーションがあまりにも低速化されないように、且つ、距離dが大きくてもシミュレーションがあまりにも高速化されないように、部品間の距離dに対するシミュレーション間隔Δtが決定される。
次に、干渉可能性の評価のために部品をグループ分けする方法について説明する。
【0156】
図37(A)および図37(B)は、部品のグループ分けを説明するための図である。
これらの図37(A)および図37(B)においては、リンクl0〜リンクl5の6つのリンクが示されており、モータリンクとして定義されたリンクl3が動く場合を考える。
【0157】
この場合、モータリンクl3の動きによって姿勢に影響を受けるリンクはリンクl3〜l5であり、これらのリンクl3〜l5は、モータリンクl3の動きに対して1つの剛体と考えることができる。
また、モータリンクl3の動きによっては姿勢に影響を受けないリンクl0〜l2も同様に、これらを合わせたものを1つの剛体と考えることができる。
【0158】
そこで、モータリンクl3を動作させる場合には、図37(B)に示すように、そのモータリンクl3を動かしたことにより姿勢に影響を受けるリンクのグループと影響を受けないリンクのグループとの2つのグループに分け、それら2つのグループそれぞれを剛体とみなし、それら2つの剛体の間の最短距離を求めることにより、その求めた距離を次のシミュレーション間隔Δtを決定するための最短距離の候補の1つとすることができる。
【0159】
ただし、図37(A)および図37(B)におけるリンクl3とリンクl2(例えばモータの軸と歯車等)は、常に接触しているにも拘らず異なるグループに分けられてしまい、このままでは上記2つの剛体は常に干渉していることになってしまう。
そこで、本実施形態では、上記のようにして2つのグループに分けた後、一度、部品間距離を求め、既に接触・干渉しているリンクのうち、今注目しているモータリンクを動かしたときに動かない方のグループに属するリンク〔図37(A)および図37(B)に示す例の場合リンクl2〕をそのグループから除外した上で2つのグループそれぞれを剛体とみなし、それら2つの剛体の間の距離が求められる。
【0160】
図38(A)〜図38(D)は、1つの3Dモデル内に複数のモータリンクが定義されている場合のグループ分けを説明するための図である。
図38(A)は、3Dモデルをあらわしており、ここには、モータM1〜モータM3の3つのモータリンクが定義されている。
このとき、図37(A)および図37(B)を参照して説明したグループ分けを、モータM1のみを動かした時〔図38(B)参照〕と、モータM2のみを動かした時〔図38(C)参照〕と、モータM3のみを動かしたとき〔図38(D)参照〕とのそれぞれについて行なう。
【0161】
そして、シミュレーション実行時には、対象としているモータリンクを動かしたときは、そのモータリンクに関しグループ分けしたグループ間の最短距離が求められ、それら複数のモータリンクの動きにより求められた複数の‘最短距離’の中からさらに一番最短の距離が求められる(図21のステップS201〜S207参照)。
【0162】
図39は、グループ分けした部品の再グループ化を説明するための図である。図38(A)〜図38(D)を参照して説明した手法によると、各モータリンクに関し、その3Dモデルを構成するほぼ全ての部品がどちらかのグループ(剛体)に属する結果となり、この場合、各剛体を定義するためのデータ量が厖大なものとなってしまい、極めて大きなメモリ容量を必要とする可能性がある。
【0163】
そこで、図39に示すように、各モータリンクの動きによって動かない方のグループ〔図39に示す例ではグループ(D),(E),(F)〕に属する部品群のうち、共通部分を抜き出して1つの剛体とするとともに、各グループ(D),(E),(F)からその共通部分を除いた部分をそれぞれ1つの剛体とする。そして、距離の測定の際には、共通部分からなる剛体とその共通部分を除いた部分の剛体とを合体させて、相手のグループ〔グループ(D),(E),(F)に対応してそれぞれグループ(A),(B),(C)〕との間の距離を求めるようにしてもよい。これにより、共通部分を各グループに配置しておく場合〔図38(A)〜図38(D)の場合〕と比べ、これらのグループを定義するデータを格納しておくためのメモリの容量を減らすことができる。
【0164】
図40は、複数のリンクを、モータリンクの動きによって姿勢に影響を受けるリンクのグループとそのモータリンクの動きによっては姿勢に影響を受けないグループとに分けるルーチンを説明するためのフローチャート(ステップS801〜S811)、図41は、図40に示すのサブルーチンである検索ルーチンを説明するためのフローチャート(ステップS901〜S911)である。
【0165】
ここでは、モータリンクの動きによって姿勢に影響を受けるリンクがリストAにリストアップされ、それ以外のリンクがリストBにリストアップされる。なお、リストAおよびリストBは、ここで説明するフローの実行に先立って白紙状態にクリアされているものとする。
図40に示すように、まず、リンクを指し示すポインタPによりモータリンク(現リンク)が指し示され(ステップS801)、そのポインタPで指し示されるリンクがリストAに追加される(ステップS802)。
【0166】
そして、ポインタPで指し示されているリンクにチャイルド(child)のリンクが存在しているか否かが判定される(ステップS803)。
ここで、チャイルドとは、例えば図37(A)および図37(B)に示すリンク機構においてポインタがモータリンクl3を指し示していたとき、そのモータリンクl3が動くことによって一緒に動くリンクの1つ(ここではリンクl4)をいう。この場合、リンクl4が仮にモータリンクであったとしても今着目しているモータリンクはリンクl3であり、リンクl4はリンクl3のチャイルドとなる。なお、ポインタPが指し示すリンクと同格の複数のチャイルドが考えられるときであっても、チャイルドはそのうちの1つに限定され、チャイルドと考えられる他のリンクは、その1つの限定されたチャイルドのブラザ(brother)として定義される。
【0167】
ポインタPが指し示すリンクにチャイルドがあったときは(ステップS803のYESルート)、ステップS804に進み、そのチャイルドのリンクを指し示すようにポインタPを移し、図41に示す検索ルーチンが呼び出される(ステップS805)。その検索ルーチンについては後述する。ステップS805での検索ルーチンの実行を終了すると、ステップS806に進む。なお、ステップS803において、ポインタPが指し示すリンクにチャイルドが存在しないと判定された場合(NOルート)は、直接、ステップS806に進む。
【0168】
ステップS806では、ポインタPで指し示されたリンクが、ギアやカム等の受動部品を駆動する駆動リンクであるか否かが判定される。
ポインタPが受動部品を駆動する駆動リンクであったときは(YESルート)、ステップS807に進み、ポインタPが指し示すリンクによって駆動される受動部品であるリンクを指し示すようにポインタPが変更され、ステップS808において図41の検索ルーチンが呼び出される。ステップS808での検索ルーチンの実行を終了すると、ステップS809に進む。なお、ステップS806において、ポインタPが指し示すリンクが受動部品を駆動するリンクではないと判定された場合(NOルート)、直接、ステップS809に進む。
【0169】
このステップS809まで進んだ段階では、リストAが完成しており、このステップS809では、全リンクからリストAにリストアップされたリンクを除いたリンクがリストBに格納される。
次いで、リストAにリストアップされた全てのリンクとリストBにリストアップされた全てのリンクとの間で干渉チェックが行なわれ(ステップS810)、相互に干渉し合っていたリンクの組のうち、リストBにリストアップされた方のリンクがリストBから削除される(ステップS811)。
【0170】
図41に示す検索ルーチンでは、まず、ステップS901において、ポインタPが指し示すリンクがリストAに既にリストアップされているか否かが判定され、既にリストアップされていた場合(YESルート)は、そのままこの検索ルーチンを抜けてこの検索ルーチンが呼ばれた元のルーチンに戻る。一方、ステップS901において、ポインタPが指し示すリンクがリストAにリストアップされていないと判定された場合(NOルート)、ステップS902に進み、ポインタPが指し示すリンクがリストAに追加される。
【0171】
そして、ステップS903でポインタPが指し示すリンクにチャイルドが存在するか否かが判定され、チャイルドが存在していた場合(YESルート)、ステップS904に進んでポインタPがそのchildのリンクを指し示すように変更され、ステップS905において再度この図41に示す検索ルーチンが呼び出される。このように、この検索ルーチンは何重にも重なって呼び出されることがあり、この検索ルーチンの実行を終了すると、その検索ルーチンを呼び出したステップ(例えばステップS905で呼ばれたときはそのステップS905)に戻る。ステップS905での検索ルーチンの実行を終了すると、ステップS906に進む。なお、ステップS903において、ポインタPが指し示すリンクにチャイルドが存在しないと判定された場合(NOルート)、直接、ステップS906に進む。
【0172】
ステップS906では、ポインタPが指し示すリンクにブラザが存在するか否かが判定され、ブラザが存在していた場合(YESルート)、ステップS907に進んでポインタPがそのブラザのリンクを指し示すように変更され、ステップS908において再度この検索ルーチンが呼び出される。ステップS908での検索ルーチンの実行を終了すると、ステップS909に進む。なお、ステップS906において、ポインタPが指し示すリンクにブラザが存在しないと判定された場合(NOルート)、直接、ステップS909に進む。
【0173】
ステップS909では、ポインタPで指し示されるリンクが、ギアやカム等の受動部品を駆動する駆動リンクであるか否かが判定され、駆動リンクであった場合(YESルート)、ステップS910に進んでポインタPがその駆動リンクを指し示すように変更され、ステップS911においてこの検索ルーチンが再度呼び出される。ステップS911での検索ルーチンの実行を終了すると、検索ルーチンを呼び出したステップに戻る。なお、ステップS909において、ポインタPが指し示すリンクが受動部品を駆動するリンクではないと判定された場合(NOルート)、直接、検索ルーチンを呼び出したステップに戻る。
【0174】
図42は、図40および図41に示すルーチンの動作説明用のリンク機構モデルを模式的に示す斜視図、図43は、図42に示すリンク機構モデルのデータ構造を説明するための図である。
図42に示すように、リンクAはモータ、リンクBおよびリンクCは、それぞれ、リンクA(モータ)の回転に伴って一緒に回転するシャフトおよびギア、リンクDはリンクCと噛合しているギアである。また、リンクEはリンクD(ギア)の回転に伴って一緒に回転するシャフト、リンクFはリンクD(ギア)と噛合しているギアである。
【0175】
データ構造上は、図43に示すように、リンクAとリンクDとリンクFとが同格に並び、リンクBはリンクAのチャイルド、リンクCはリンクBのブラザ、リンクEはリンクDのチャイルドの関係にある。
図42および図43に示すリンク機構モデルについて、図40および図41に示すルーチンの実行によりリストAを作成することを考える。ここでは、リンクA(モータ)から検索を始める。すなわち、まず、図40のステップS801においてリンクAが指し示されるようにポインタPが指定される。以下の〔〕内の大文字アルファベットは、リストAにリストアップされるリンク
をあらわしている。
【0176】
(1)ポインタPがリンクAを指し示す状態でスタートする。〔A〕
(2)ポインタPがリンクAからそのチャイルドであるリンクBに変更され、検索ルーチンが実行される。〔A,B〕
(3)ポインタPがリンクBからブラザであるリンクCに変更され、検索ルーチンが実行される。〔A,B,C〕
(4)ポインタPがリンクCの受動部品であるリンクDに変更され、検索ルーチンが実行される。〔A,B,C,D〕
(5)ポインタPがリンクDからそのチャイルドであるリンクEに変更され、検索ルーチンが実行される。〔A,B,C,D,E〕
(6)リタンでポインタPがリンクDに戻る。
【0177】
(7)ポインタPがリンクDからその受動部品であるリンクFに変更され、検索ルーチンが実行される〔A,B,C,D,E,F〕
(8)リタンでポインタPがリンクDに戻る。
(9)リタンでポインタPがリンクCに戻る。
(10)リタンでポインタPがリンクBに戻る。
【0178】
(11)リタンでPがリンクAに戻る。
(12)終了
以上の手順を踏んで、図42に示す全てのリンク(リンクA〜リンクF)がリストAにリストアップされる。
次に、1つのモータリンクの動きによって姿勢の変化を受けるグループ内での干渉可能性の評価方法について説明する。
【0179】
モータリンクの動きによって干渉する可能性があるのは、図37(A)および図37(B)を参照して説明したような、そのモータリンクの動きによって姿勢に影響を受けるリンクのグループと姿勢に影響を受けないリンクのグループとの間だけでなく、図42に示すように姿勢に影響を受けるグループの内部でも干渉が生じる可能性がある。
【0180】
そこで、そのグループの内部で干渉する可能性のあるリンクの組を発見するために、ここでは、シミュレーションに先立って、モータリンクを少しずつ動かしながら、そのモータリンクを動かすことによって姿勢に影響を受けるグループ内の全てのリンクどうしの間の干渉チェックを行なう。このような総当たり的な干渉チェックによって干渉したリンクの組は実際のシミュレーションにあたっても相互間の距離を求める対象に加え、シミュレーション間隔Δt(=TS)を決定するための最短距離の候補の1つとする。これにより、正確なシミュレーションを行なうことができる。
【0181】
ただし、モータリンクを動かしたときに姿勢に影響を受けるグループ内において、例えば図42に示すモータや歯車のように、常に接触しているリンクの組も存在する。そこで、モータリンクを少しずつ動かして干渉チェックを行なった際に、そのモータリンクの全ての姿勢で常に干渉・接触していたリンクの組、例えば歯車等で関係づけられたリンクの組はリンク間の距離を求める対象から排除される。
【0182】
図44(A)〜図44(D)は、モータリンクの動きによって姿勢に影響を受けるリンクグループ内で、シミュレーション時に距離を求めるリンクの組を抽出する手法を具体的に説明するための図である。
図44(A)は、ある1つのモータの動きによって姿勢に変化を受けるグループを構成する全部品を示しており、ここでは一例として、図44(B)に示すように、そのモータを−180°から180°まで36°おきに回転させ、各回転ごとに干渉チェックを行なうこととする。この場合、モータの回転およびリンク内の干渉チェックは11回行なわれる。
【0183】
その結果、例えば図44(C)に示すような、干渉したリンクの組とその干渉回数とが得られたものとする。11回の干渉チェックを行なったところ、リンクBとリンクEとの干渉、および、リンクDとリンクEとの干渉は11回発生(常に干渉・接触)しているため、図44(D)に示すように、これら2つの組はシミュレーション時における距離測定の対象からは除外される。
【0184】
次に、本発明の支援システム10を構成する3Dモデルシミュレータ30の別の実施態様について、図45〜図64を参照しながら説明する。
図45は、本実施形態における別の実施態様の3Dモデルシミュレータ30によるシミュレーション処理全体の処理の流れを説明するためのフローチャートであり、この図45に示すように、ここでは、シミュレータ30と組込みソフトウェア開発部40との同期処理(ステップS1001),モータ処理(ステップS1002),関節不良動作処理(ステップS1003),センサ処理(ステップS1004)および組込みソフトウェア開発部40の実行時間ΔT(=TS)の決定処理(ステップS1005)が繰り返し実行される。
【0185】
シミュレータ30と組込みソフトウェア開発部40との同期処理(ステップS1001)については、既に図12〜図14,図20や図32〜図34により前述した通りであるため、その説明は省略する。それ以外の処理について、以下順次説明する。
図46は、モータ処理ルーチンを説明するためのフローチャートである。この図46に示すフローチャートは、基本的には、前述した実施形態における、図21の一点鎖線で囲った部分からなるモータ処理にモータの故障の概念を取り入れたものである。
【0186】
図46に示すように、ステップS1101では、最短距離Dを求めるために先ずその最短距離Dに∞が初期入力され、ステップS1102では、未処理のモータが存在しているか否かが判定され、未処理のモータが存在する場合(YESルート)、未処理のモータ1つずつについてステップS1103〜S1110の処理が行なわれる。
【0187】
即ち、まず、未処理のモータそれぞれについて、そのモータが故障しているか否かが判定される(ステップS1103)。モータの故障の有無は、ユーザによりあらかじめ設定され、フラグとして保存されている。
故障したモータについては処理を行なわず(ステップS1103のYESルートからステップS1102)、故障していないモータについては(ステップS1103のNOルート)、組込みソフトウェア開発部40側から送られてきた、今処理しようとしているモータに関するアクチュエータ指令信号に応じて、そのモータの姿勢変位量Δθが決定される(ステップS1104)。
【0188】
そして、Δθ=0であるか否かを判定し、Δθ=0である場合(YESルート)には、ステップS1102に戻る一方、Δθ=0でなければ(NOルート)、そのモータのそれまでの姿勢θに今回の変位量Δθが加算され(ステップS1106)、そのモータリンクの移動に伴って移動するリンクの姿勢変位量を計算するリンク姿勢移動サブルーチン(図47を参照しながら後述)が実行される(ステップS1107)。
【0189】
その後、部品間最短距離dが求められ(ステップS1108)、d<Dか否かが判定され(ステップS1109)、d<Dでないとき(NOルート)はステップS1102に戻る一方、d<Dのとき(YESルート)、すなわち、今回求めた最短距離dがこれまでに求めた最短距離Dよりも短かいときは、最短距離Dを今回の求めた最短距離dに置き換えて、最短距離Dを更新する(ステップS1110)。
【0190】
そして、全てのモータに関し、今回の演算時間ΔTの間の姿勢変更が終了すると、このモータ処理を終了する。
図47は、図46に示すモータ処理ルーチン(ステップS1107)で実行されるリンク姿勢移動サブルーチンを説明するためのフローチャートである。
この図47に示すように、リンク姿勢移動サブルーチンでは、まず、リンク姿勢移動(図46のステップS1107でコールされたときは、モータリンクの姿勢移動)を受けて(ステップS1201)、その姿勢移動のあったリンクに対する受動リンクに未計算の受動リンクが存在するか否か判定する(ステップS1202)。
【0191】
未計算の受動リンクが存在する場合(YESルート)、今回姿勢移動のあったリンクとそのリンクに対する受動リンクとの間にクラッチが存在するか否かを判定し(ステップS1203)、クラッチが存在する場合(YESルート)、そのクラッチ部品の姿勢がオンの位置にあるか否かを判定する(ステップS1204)。クラッチ部品の存在や、クラッチ部品の姿勢とクラッチのオン,オフとの関係は、ユーザにより予め定義される。
【0192】
クラッチ部品が存在しない場合(ステップS1203のNOルート)、あるいは、クラッチ部品が存在していてもオン状態にある場合(ステップS1204のYESルート)、ステップS1205に進み、ギア,カム関係に基づいて受動部品の移動量を計算し、さらにステップS1206において、今回移動量を計算した受動部品を能動部品としたときのその能動部品に対する受動部品の移動量を求めるために、再度、このリンク姿勢移動サブルーチンがコールされ、そのサブルーチンを実行してからステップS1202へ戻る。なお、ステップS1204でクラッチ部品がオン状態ではないと判定された場合(NOルート)、直接、ステップS1202に戻る。
【0193】
このようにして、リンク姿勢移動サブルーチンは、図41に示す検索ルーチンと同様、再帰的に実行され、この再帰的な実行により、1つのモータを動かしたときに他の部品の移動量が高速に求められる。
図48は、図45のステップS1003で実行される関節不良動作処理ルーチンを説明するためのフローチャートである。
【0194】
この図48に示すように、関節不良動作処理ルーチンでは、まず、3次元機構モデルを画面表示した後(ステップS1301)、ユーザが新たに不良リンクを指定したか否か(ステップS1302)、未処理のユーザ指定不良リンクが存在するか否か(ステップS1305)、未処理の、干渉が起きたリンクが存在するか否か(ステップS1310)、および不良リンクが存在するか否か(ステップS1314)が、順次、判定される。
【0195】
ステップS1302において、ユーザが新たに不良リンクを指定したと判定されると(YESルート)、ステップS1303に進み、その新たに指定された不良リンクを駆動しているモータを検索し、そのモータとそのモータの移動方向とをリストに追加してから(ステップS1304)、ステップS1305へ進む。ステップS1305において未処理のユーザ指定不良リンクが存在すると判定されると(YESルート)、ステップS1306に進み、その不良リンクを駆動しているモータの移動方向が逆転したか否かが判定され、逆転していない場合(NOルート)はステップS1307に進んでそのモータの姿勢を旧姿勢に戻し、そのモータの姿勢が旧姿勢に戻されたことに対応してリンクの姿勢を旧姿勢に戻すために、図47に示すリンク姿勢移動サブルーチンがコールされて実行された後(ステップS1308)、ステップS1305に戻る。一方、ステップS1306においてそのモータの移動方向が逆転したと判定されると(YESルート)、ステップS1309に進み、そのモータを不良リンクのリストから削除してから、ステップS1305に戻る。
【0196】
これにより、不良リンクが、ある一方向に移動しようとしたときに何らかの原因で引っ掛かって動かなくなり、その不良リンクが一旦逆方向に移動することによりその引っ掛かりが解除されて正常に戻るという動作がシミュレートされる。ステップS1310において、未処理の、干渉が起きたリンクが存在する旨判定されると(YESルート)、ステップS1311に進み、その不良リンクを駆動しているモータの検索が行なわれ、そのモータの姿勢が旧姿勢に戻され(ステップS1312)、そのモータによって駆動される他のリンクの姿勢を旧姿勢に戻すべく、図47に示すリンク機構サブルーチンがコールされて実行された後(ステップS1313)、ステップS1310に戻る。
【0197】
これにより、あるリンクが、他のリンクと干渉してそれ以上動かすことのできない状態をシミュレートすることができる。
ステップS1314において不良リンクが存在すると判定されると(YESルート)、その3次元機構モデルを画像上に再描画する(ステップS1315)。これにより、ステップS1301における描画と合わせて、3次元機構モデルの再描画結果をシミュレーション画面上で見ると、不良リンクを受動部品に持ったモータおよびそのモータにより駆動される全リンクの動きが、不自然な状態(例えば、カクカクして、いかにもひっかかった様子)で表示される。
【0198】
なお、ここに示した例では、モータの姿勢を元に戻すことによって関節不良の状態を実現したが、関節値の上限あるいは下限を一時的に現在値に設定することで関節不良の状態を実現することも可能である。
図49は、図45のステップS1004で実行されるセンサ処理ルーチンを説明するためのフローチャートである。
【0199】
前述の実施形態では、センサはオン,オフの信号を出力するオン/オフセンサとしていたが、ここでは、センサとして、オン/オフセンサのほか、ポテンショメータやエンコーダも存在し、さらにセンサの不良も考慮されている。
図49に示すように、まず、ステップS1401で、未処理のセンサの有無が判定され、未処理のセンサが存在すると(YESルート)、ステップS1402に進み、その未処理のセンサがオン/オフセンサであるか否かが判定される。オン/オフセンサであった場合(YESルート)、ステップS1403において、オン/オフセンサ処理が行なわれ、そのオン/オフセンサを処理した結果のセンサ値(オンあるいはオフ)が出力され、その後、ステップS1401に戻る。
【0200】
ステップS1402において、その未処理のセンサがオン/オフセンサではないと判定されると(NOルート)、ステップS1404に進み、そのセンサがポテンショメータであるか否かが判定され、ポテンショメータであると判定されると(YESルート)、ステップS1405に進んでポテンショメータ前処理が行なわれた後、ステップS1406でエンコーダ処理が行なわれその結果としてのセンサ値を出力してから、ステップS1401に戻る。
【0201】
一方、ポテンショメータではないと判定された場合(NOルート)、つまり、未処理のセンサがエンコーダであると判定された場合、直接、ステップS1406のエンコーダ処理に進み、その結果としてのセンサ値を出力してから、ステップS1401に戻る。
図50は、図49のステップS1403で実行されるオン/オフセンサ処理ルーチンを説明するためのフローチャートである。
【0202】
このオン/オフセンサ処理ルーチンでは、そのオン/オフセンサの故障もシミュレートされており、図50に示すように、まず、ステップS1501でそのオン/オフセンサがオンの状態のまま故障しているか否かが判定され、ステップS1503でそのオン/オフセンサがオフの状態のまま故障しているかが判定される。
【0203】
オン状態のまま故障している場合(ステップS1501のYESルート)、出力予定値としてオンが設定され(ステップS1502)、オフ状態のまま故障している場合(ステップS1503のYESルート)、出力予定値としてオフが設定され(ステップS1504)、ステップS1508に進んでその出力予定値がセンサ値として出力される。そのオン/オフセンサがオン状態あるいはオフ状態で故障しているか否かはユーザにより予め設定される。
【0204】
そのオン/オフセンサが故障していない場合(ステップS1501,S1503のNOルート)、ステップS1505に進み、そのセンサリンクの姿勢から出力予定値(オンあるいはオフ)が決定され(ステップS1505)、次いで、性能劣化による出力予定値変更処理(ステップS1506)、および、チャッタリングによる出力予定値変更処理(ステップS1507)を実行してから、ステップS1508へ進む。
【0205】
図51は、図50のオン/オフセンサ処理ルーチンのステップS1506で実行されるセンサ性能劣化処理ルーチンを説明するためのフローチャートである。このルーチンでは、オン/オフセンサが故障(出力がオンまたはオフに固定)までいかなくても、応答性能が劣化し、そのオン/オフセンサの出力をオンまたはオフに変化させる状態が生じた後、暫らくは前の状態を保ち、遅れてオンまたはオフに変化する状態がシミュレートされる。
【0206】
図51に示すように、まず、ステップS1601で、旧出力予定値dと出力予定値とが等しいか否かが判定され、変化していた場合(NOルート)、ステップS1602に進み出力予定値がオンかオフかが判定される。出力予定値がオンの場合(YESルート)、ステップS1603に進み、センサ出力がオフからオンに変化するときの遅れ時間をTdに設定してから、ステップS1605へ進む。一方、出力予定値がオフの場合(ステップS1602のNOルート)、ステップS1604に進み、センサ出力がオンからオフに変化するときの遅れ時間をTdに設定してから、ステップS1605に進む。
【0207】
ステップS1601で旧出力予定値dと出力予定値とが等しいと判定された場合(YESルート)、あるいは、ステップS1603,S1604の処理の完了後、ステップS1605でTd>0か否か判定され、Td>0の場合(YESルート)、ステップS1606に進んでTdから組込みソフトウェア開発部40の実行時間ΔTが減算され、ステップS1607において出力予定値を反転してから(出力予定値がオンのときはオフ、出力予定値がオフのときはオン)、ステップS1608に進む。
【0208】
ステップS1605でTd>0でないと判定された場合(NOルート)、あるいは、ステップS1607の処理の完了後、ステップS1608では、旧出力予定値dに今回の出力予定値が格納される。
図45に示すように、センサ処理S1004には繰り返し実行され、図51に示すセンサ性能劣化処理も繰り返し実行され、Td>0のときは、この処理が繰り返される度に、TdからΔTが減算されTd≦0に達するとセンサが変化することになる。
【0209】
図52は、図50のオン/オフセンサ処理ルーチンのステップS1507で実行される、チャタリングによる出力予定値変更処理ルーチンを説明するためのフローチャートである。このルーチンではオン/オフセンサがオンからオフ、あるいはオフからオンに変化するときのチャタリングがシミュレートされる。
この図52に示すように、まず、ステップS1701で、旧出力予定値cと出力予定値とが等しいか否かが判定され、変化していた場合(NOルート)、ステップS1702に進み、出力予定値がオンかオフかが判定される。出力予定値がオンの場合(YESルート)、ステップS1703に進み、センサ出力がオフからオンに変化するときのチャタリング時間をTcに設定してから、ステップS1705に進む。一方、出力設定値がオフの場合(ステップS1702のNOルート)、ステップS1704に進み、センサ出力がオンからオフに変化するときのチャタリング時間をTcに設定してから、ステップS1705に進む。
【0210】
そして、ステップS1705では、旧出力予定値cに出力予定値が設定され、この処理を終了した後、もしくは、ステップS1701で旧出力予定値cと出力予定値とが等しいと判定された場合(YESルート)、ステップS1706でTc>0か否かが判定される。
そして、Tc>0の場合(YESルート)、ステップS1707に進んでTcから組込みソフトウェア開発部40の実行時間ΔTが減算され、ステップS1708において、0〜99の値をとる乱数が発生されてその発生した乱数が予め設定された発生確率(0〜99のうちのいずれかの値)と比較される。その結果、乱数>発生確率の場合(YESルート)、出力予定値のオン,オフを反転してから(ステップS1709)、処理を終了する。一方、ステップS1708で乱数>発生確率でないと判定された場合(NOルート)や、ステップS1706でTc>0ではないと判定された場合(NOルート)は、そのまま、処理を終了する。
【0211】
このようにして、Tc>0の間、確率的にオン,オフが変化するチャッタリングがシミュレートされる。
次に、図49のステップS1406で実行されるエンコーダ処理について説明する。
図53は、エンコーダの変位(角度等)に対する出力波形の一例を示す図、図54(A)〜(E)は、エンコーダの、各種の出力波形を示す図である。
【0212】
ここでは、図53に示すように、エンコーダの出力波形が、波長Lの周期的な関数f(θ)である場合について考える。ただし、関数f(θ)は、図54(A)〜図54(E)に示すような各種の波形をとることができる。ここで、波長Lは関数f(θ)の一周期に対応するもので、例えば、このエンコーダがロータリ式のエンコーダであって回転角度1.0度ごとに一周期の信号を出力するエンコーダであるときは、L=1.0(度)となる。
【0213】
ここで、変位θを電気角φ=2πθ/Lに変換した場合、関数f(θ)が関数g(φ)として表記されるものとして、以下、エンコーダ機能の原理を説明する。
前回行なったシミュレーション時のエンコーダの電気角をφo、今回、すなわち前回行なったシミュレーションから組込みソフトウェア開発部40の演算時間ΔTだけ進んだ時刻の電気角をφ、エンコーダの電気角速度をωとすると、前回から今回までの間のシミュレーションサイクルにおけるエンコーダの移動量はωΔTとなり、
φ=φo+ωΔT
が成立する。
【0214】
しかし、エンコーダはパルス数を測定するため、今回のシミュレーションサイクルにおけるωΔTが2πよりも大きい場合、単純にg(φ)を出力するわけにはいかず、所定のパルス数のパルスを出力した後にg(φ)を出力する必要がある。
図55は、エンコーダの出力処理ルーチンを説明するためのフローチャートである。
【0215】
ここでは、図55に示すように、まず、前回のシミュレーション終了時のエンコーダ出力g(φo)を出力し(ステップS1801)、今回のシミュレーション終了時の電気角φと前回の電気角φoとの差分φ−φoが、φ−φo>π/2であるか否か(ステップS1802)、あるいは、φo−φ>π/2であるか否か(ステップS1804)が判定される。
【0216】
φ−φo>π/2の場合(ステップS1802のYESルート)、ステップS1803に進んで、φoにπ/2が加算され、ステップS1806において50μsec待機した後、ステップS1801に戻って新たなφoに対するg(φo)が出力される。φo−φ>π/2の場合(ステップS1804のYESルート)、ステップS1805に進みφoからπ/2が減算され、その後は同様にステップS1806において50μsec待機した後、ステップS1801に戻って新たなφoに対するg(φo)が出力される。
【0217】
つまり、ここでは|φ−φo|>π/2のときは、|φ−φo|≦π/2になるまで、5kHzの周波数を上限として(ステップS1806)、φがπ/2ずつ変化したときの離散的な周期信号が出力される。
|φ−φo|≦π/2に達すると(ステップS1802,S1804のNOルート)、ステップS1807に進み、今回のシミュレーションにおけるエンコーダの最終値であるg(φ)が出力され、次回のシミュレーションのために今回のシミュレーションにおけるφが新たなφoに置き換えられる(ステップS1808)。
【0218】
このエンコーダ信号は、組込みソフトウェア開発部40とは独立して動作するカウンタ回路によって受信されることを想定しており、したがってエンコーダ信号発信時に組込みソフトウェア開発部40が停止していても問題はない。
なお、図55に示すフローチャートは、パルス信号をg(φ)の1つのみ出力するタイプのエンコーダを対象として表現したものであるが、g(φ)の他にg(φ+π/2)を出力することにより、A相,B相の二相信号を出力するタイプのエンコーダも表現することができる。
【0219】
また、g(φ)のほかにφ−φoの正負の符号をオン/オフで出力することにより、アップ/ダウン信号を出力するタイプのエンコーダも表現することができる。
ここで、上記のシミュレーションに先立って、パルスの波形〔図54(A)〜図54(E)参照〕や、分解能や、電気角φがゼロになる位置をあらわすオフセットを入力することにより、エンコーダの特性がユーザにより定義される。
【0220】
図56は、図49に示す処理ルーチンのステップS1406で実行されるエンコーダ処理ルーチンを説明するためのフローチャートである。
ここでは、エンコーダの故障についても考慮されており、エンコーダに故障があったときの3次元機構モデルのシミュレーションのために、予めユーザにより以下の故障フラグ0〜6が設定される。
【0221】
故障フラグ0:正常
故障フラグ1:A相がVmaxで故障
故障フラグ2:A相がVminで故障
故障フラグ3:B相がVmaxで故障
故障フラグ4:B相がVminで故障
故障フラグ5:アップ/ダウン信号故障(Highに固定)
故障フラグ6:アップ/ダウン信号故障(Lowに固定)
図56に示すように、まず、ステップS1901で、変位θが電気角φに変換され、次いで、故障フラグが1であるか否か(ステップS1902)、2であるか否か(ステップS1903)が判定され、それらの何れでもないときは、ステップS1904に進んで、図55に示すg(φ)出力処理ルーチンが実行される。
【0222】
一方、ステップS1902において故障フラグが1であると判定されるとステップS1905に進み、Vmaxで故障していることに対応してg(π/4)が出力される一方、ステップS1903において故障フラグが2であると判定されるとステップS1906に進み、Vminで故障していることに対応してg(3π/4)が出力される。
【0223】
つづいて、ステップS1907では、このエンコーダが2相出力タイプのエンコーダであるか否か、ステップS1908では、このエンコーダがアップ/ダウン信号を出力するタイプのエンコーダであるか否かが判定され、いずれでもない場合、つまり単純にg(φ)のみを出力するタイプのエンコーダのときはそのままこのルーチンを抜ける。
【0224】
ステップS1907においてこのエンコーダが2相出力タイプのエンコーダであると判定されると、ステップS1909において故障フラグが3であるか否か、ステップS1910において故障フラグが4であるか否かが判定される。それらのいずれでもなかったときは、ステップS1911に進み、図55におけるφをφ+π/2に置き換えた出力処理ルーチンが実行される。
【0225】
ステップS1909において故障フラグが3であると判定されるとステップS1912に進み、B相がVmaxで故障していることに対応してg(π/4)が出力され、これと同様に、ステップS1910において故障フラグが4であると判定されるとステップS1913に進み、B相がVminで故障していることに対応してg(3π/4)が出力される。
【0226】
また、ステップS1908においてこのエンコーダがアップ/ダウン(U/D)信号出力タイプのエンコーダであると判定されると、ステップS1914に進み故障フラグが5であるか否かが判定され、ステップS1915では故障フラグが6であるか否かが判定される。
それらのいずれでもないときはステップS1916に進みそのエンコーダの移動方向が判定され、アップ方向(Uルート)のときはステップS1917に進んで‘High’が出力され、ダウン方向(Dルート)のときはステップS1918に進んで‘Low’が出力される。
【0227】
一方、ステップS1914において故障フラグが5であると判定されるとステップS1917に進み、エンコーダの移動方向のいかんによらず‘High’が出力され、これと同様に、ステップS1915において故障フラグが6であると判定されるとステップS1918に進み、エンコーダの移動方向のいかんによらず‘Low’が出力される。
【0228】
このようにしてエンコーダを表現することができるとともに、エンコーダの故障を表現することができる。ただし、エンコーダの場合、オン/オフセンサの場合と異なり、処理に入った直後に故障中を示すのではなく、センサ信号を出力する際に故障フラグの判定や処理が行なわれる。
図57は、ポテンショメータの関数値の一例を説明するための図である。ここでは、ポテンショメータが、図54(D)に示す三角波を出力する、分解能の極端に低いエンコーダであるとして実現している。例えば図53に示す波長Lとして360度を設定すれば、図57に示すように、θmax−θmin=180度の変位で出力電圧Vを最小値Vminから最大値Vmaxまで変換するポテンショメータを表現することができる。
【0229】
図58は、図49に示すセンサ処理ルーチンのステップS1405で実行されるポテンショメータ前処理ルーチンを説明するためのフローチャートである。
ポテンショメータの場合、図57に実線で示すように、θmin以下でのθでは出力電圧Vは最低値に固定され、θmax以上のθでは出力電圧Vは最大値に固定されることがあり、この図58ではそのようなポテンショメータを実現している。
【0230】
即ち、図58に示すように、ステップS2001においてθ>θmaxを満足するか否かが判定され、それを満足するときはステップS2002に進んでθがθmaxに固定される。
また、これと同様に、ステップS2003においてθ<θminを満足するか否かが判定されθ<θminを満足するときはステップS2004に進んでθがθminに固定される。
【0231】
ポテンショメータの場合、このような前処理が行なわれた後、図56に示すエンコーダ処理が実行される(図49参照)。
このタイプのポテンショメータの場合、ユーザは、θmin,θmaxおよび,Vmin,Vmaxを入力すると、システムは、その入力値を自動的に三角波f(θ)の波長,振幅,オフセットに変換する。
【0232】
なお、ストッパがないポテンショメータなど、出力が周期的に変化するポテンショメータの場合は、分解能が低い三角波や鋸波を出力するエンコーダとして取り扱われる。
図59は、図45のステップS1005において実行されるΔT決定処理ルーチン(シミュレーション間隔決定処理ルーチン)を説明するためのフローチャートである。
【0233】
この図59に示すように、ここでは、まず、ステップS2101において、性能劣化(応答遅れあるいはチャタリング)を起こしたセンサが存在するか否かが判定され、そのようなセンサが存在しないときは、図46に示す処理で求めた部品間の最短距離Dに応じたΔTが決定される(ステップS2102)。一方、性能劣化を起こしたセンサが存在するときは、ΔTとしてとり得る値の最小値が設定される(ステップS2103)。
【0234】
ここで、性能劣化を起こしたセンサが存在するときにΔTを最小値に設定するのは、性能劣化の表現精度を高め、正確なシミュレーションを行なうためである。なお、正常なセンサの場合、遅れ時間はゼロに設定されているため、問題なく動作する。
図60(A)および図60(B)は、干渉チェックによる関節可動範囲の検索法を説明するための図である。
【0235】
まず、ユーザによって、どの方向の制限値を設定したいのかということと、どの部品とどの部品とが接触することにより制限が起きるのかということが選択され、その後、関節可動範囲の検索が行なわれる。
この関節可動範囲の検索においては、関節の姿勢xを初期値x0からΔxずつ増加させ、その度に干渉チェックを行なう。すると、図60(A)に示すように、xがx0+nΔxでは干渉が発生せず、次のx0+(n+1)Δxで干渉が起こる位置が判明する。
【0236】
続いて、例えばΔx’=Δx/10などのようにΔxよりも小さい移動量Δx’を用いて、図60(B)に示すように、xをx0+ΔxからΔx’ずつ増加させることにより、xがx0+nΔx+n’Δx’では干渉が発生せず、x0+nΔx+(n’+1)Δx’で干渉が発生する位置が判明する。
このような処理を数回繰り返すことにより、高速に且つ所望の精度でxの制限値x0+nΔx+n’Δx’+n”Δx”……を求めることができる。ただし、ユーザが指定した二つの部品が、関節をどのように動かしていても干渉しない位置関係であることも考えられるので、一回目の干渉位置検索の際には検索数nに上限を設け、無限ループを防ぐことが好ましい。
【0237】
図61(A)〜図61(C)は、干渉チェックによるカム関係の検索方法を説明するための図、図62は、干渉チェックによるカム関係検索ルーチンを説明するためのフローチャートである。
ここでは、例えば図61(A)に示すごとく、予め、ユーザにより、駆動部品P1,受動部品P2,駆動部品P1の初期姿勢,受動部品P2の初期姿勢および駆動部品P1の最終姿勢が指定される。
【0238】
図62に示すルーチンでは、まず、φ,ψに、それぞれ、駆動部品P1の初期姿勢および受動部品P2の初期姿勢が設定され(ステップS2201)、次いで、受動部品P2の非接触姿勢が検索されてψに格納される(ステップS2202)。
この後、ステップS2203では、今回求めた、駆動部品P1の姿勢φと、受動部品P2の非接触姿勢ψとのペアが登録され、例えば図61(B)に示すごとく駆動部品P1の姿勢φがΔφだけ移動される(ステップS2204)。
【0239】
そして、駆動部品P1の姿勢φが最終姿勢になるまで(ステップS2205でYES判定となるまで)、Δφずつ移動された駆動部品P1に対する受動部品P2の非接触姿勢ψ〔図61(C)参照〕を検索・演算する処理(ステップS2202)と、姿勢φ,ψの登録処理(ステップS2203)と、駆動部品P1の移動処理(ステップS2204)とが繰り返される。
【0240】
図63は、図62に示すカム関係検索ルーチンのステップS2202で実行される受動部品P2の非接触姿勢検索ルーチンを説明するためのフローチャートである。
この図63に示すように、まず、ステップS2301において、受動部品P2の現在の姿勢ψがψ0に設定され、カウンタによるカウント値nに初期値ゼロが設定される。
【0241】
ステップS2302では駆動部品P1と受動部品P2とが干渉しているか否かが判定され、干渉していないときは、現在の姿勢ψが非接触姿勢となる(ステップS2315)。
ステップS2302で干渉していると判定されると、ステップS2303においてカウント値nが1だけインクリメントされ、受動部品P2の姿勢ψとしてψ0+nΔψが設定され(ステップS2304)、再度干渉しているか否かが判定される(ステップS2305)。まだ干渉していたときは、今度は受動部品P2の姿勢ψとしてψ0−nΔψが設定され(ステップS2306)、干渉しているか否かがもう一度判定される(ステップS2307)。まだ干渉していたときは、ステップS2308に進み、カウント値nがnの上限か否か判定され、nの上限であったときは検索失敗とされる(ステップS2309)。カウント値nがまだ上限に達していなかったときは、ステップS2303に戻りカウント値nが1だけインクリメントされ、以下同様にして干渉チェックが行なわれる。
【0242】
ステップS2305で干渉していないと判定されると、ステップS2310に進み、ψがΔψだけデクリメントされ、Δψが適当な整数Nで除算され、その除算結果がΔψとして設定され、Δψが前よりも小さい値に設定される(ステップS2311)。
次いで、ψが、上記のようにして小さな値に設定されたΔψだけインクリメントされながら(ステップS2313)、干渉しているか否かが判定され(ステップS2312)、干渉した状態から干渉していない状態に変化すると、ステップS2314に進んで所定の精度まで検索したか否かが判定され、まだ精度が不十分なときはステップS2310に戻ってψからΔψが減算され、ステップS2311においてΔψとしさらに小さい値が設定され、ψをさらに小さい値であるΔψずつインクリメントしながら干渉チェックが行なわれる(ステップS2312,S2313)。
【0243】
このようにして所定の精度まで検索が行なわれると(ステップS2314)、これにより非接触姿勢が定まる(ステップS2315)。
ステップS2307において干渉していないと判定されたときも、ステップS2310〜S2314の処理と同様の処理が実行され、受動部品P2の非接触姿勢が求められる。なお、ステップS2307において干渉していないと判定されたときは、ステップS2310に相当するステップにおいてψはΔψだけインクリメントされ、ステップS2313に相当するステップにおいてψはΔψだけデクリメントされる。
【0244】
図64は、図62に示すカム関係検索ルーチンのステップS2202で実行される受動部品の非接触姿勢検索ルーチンを説明するためのフローチャートである。この図64に示すルーチンは、受動部品に重力あるいはバネ付勢力が作用している場合に実行されるルーチンである。受動部品に作用する重力あるいはバネの付勢方向はユーザにより予め設定される。つまり、図64は、負方向に力が加わっている場合のフローチャートを示している。
【0245】
図64に示すルーチンでは、まず、ステップS2401において、受動部品の現在の姿勢ψがψ0に設定され、カウンタのカウント値nに初期値ゼロが設定される。
ステップS2402では、駆動部品と受動部品とが現在干渉しているか否かが判定される。既に干渉しているときは、ステップS2403においてカウント値nを1だけインクリメントする。そして、この場合、駆動部品の今回の姿勢変化によって受動部品が干渉したものであるため、受動部品の姿勢を重力あるいはバネ付勢力に逆らって変化させ(ステップS2404〜S2407)、干渉していない姿勢をみつけた後、ψからΔψを減算することで(ステップS2408)、一旦干渉した状態に戻す。ここで、ステップS2403〜S2408の処理は、それぞれ、図63のステップS2303〜S2305,S2308,S2309,S2310に対応している。
【0246】
一方、ステップS2402で干渉していないと判定されるときは、ステップS2409においてカウント値nを1だけインクリメントする。そして、この場合、駆動部品の今回の姿勢変化によって受動部品が干渉していない状態に変化したものであるため、重力あるいはバネ付勢力の作用をシミュレートして受動部品が能動部品に干渉した状態を見つける(ステップS2410〜S2413)。ここで、ステップS2409〜S2413の処理は、それぞれ、図63のステップS2303,S2306〜S2309に対応している。
【0247】
そして、ステップS2408やS2411からステップS2414に進んだとき、Δψのきざみでぎりぎり干渉した状態にあり、Δψを適当な整数Nで除算しその除算結果をΔψとして設定することにより、Δψが前よりも小さい値に設定される。この後、ψをΔψずつインクリメントしながら非干渉姿勢が検索される(ステップS2415,S2416)。
【0248】
ステップS2417では所定の精度まで検索が行なわれたか否かが判定され、未だ精度が不十分なときはステップS2408に進んでψからΔψが減算されて干渉した状態に戻され、ステップS2414においてΔψが整数Nで除算されてΔψとしてさらに小さい値が設定されて検索が繰り返される。
このようにして所定の精度まで検索が行なわれると(ステップS2414)、非接触位置が決定される(ステップS2418)。ここで、ステップS2408,S2414〜S2418の処理は、それぞれ、図63のステップS2310〜S2315に対応している。
【0249】
これにより、重力あるいはバネ付勢力が作用しない場合であっても作用する場合であっても、カム関係を決定することができる。
図65(A)〜図65(C)は、駆動部材P1側の溝P10とその溝P10に挿入されて駆動される受動部材P2側のピンP20との溝関係を設定する手法を説明するための図であり、図65(B)および図65(C)は、図65(A)の要部を拡大して示したものである。
【0250】
図65(A)および図65(B)に示すような溝関係を設定しようとしたとき、ピンP20は溝P10に常に接触した状態にあるため、非干渉位置を求めることはできず、このような溝関係を、前述したカム関係の検索法を用いて求めることは困難である。
そこで、ここでは、図65(C)に示すように、ピンP20の中心に半径rの微小円筒P21を一時的に取り付け、この微小円筒P21と溝P10との間の距離dを測定することで溝関係を求める。即ち、図63のステップS2302,S2305,S2307,S2312において、「干渉しているか?」の判定に代えて「d<R−rか?」の判定を行なうことにより、溝関係を検索することができる。
【0251】
さらに、以下に、本実施形態の3Dモデルシミュレータ30における、各種機構(ローラ,ラチェット,モータ,センサ等)のシミュレーション手法について、図66〜図82を参照しながら説明する。
図66は、ギアやローラをリンクとして有する場合のリンク姿勢移動ルーチンを説明するためのフローチャートであり、この図66に示すルーチンは、例えば、前述したモータ処理ルーチン(図46のステップS1107)で実行されるリンク姿勢移動サブルーチン(図47参照)に対応するものである。また、図67は関節値移動サブルーチンを説明するためのフローチャート、図68は関節値初期化サブルーチンを説明するためのフローチャートである。なお、以下では、リンクのことを関節と呼ぶ場合がある。
【0252】
ここで、ローラはギアの中の一機能であり、以下に説明するルーチンでは、図66〜図68に示すフローチャートのごとく、図67に示す関節値移動サブルーチンを再帰的に呼び出して実行することにより、現関節の動作に従って動作する従動関節(受動関節)を移動させていく。その移動途中において、従動関節の一つが制限値に到達した場合には、その関節値を予め設定した初期値に戻すために、図68に示す関節値初期化サブルーチンを再帰的に呼び出して実行している。
【0253】
図66に示すように、リンク姿勢移動(例えばモータリンクの姿勢移動)を受けて本ルーチンが呼び出されると、モータリンクの移動に伴って現関節を移動させるべく、図67に示す関節値移動サブルーチンを呼び出して実行する(ステップS2501)。そして、ステップS2501での関節値移動サブルーチンからの戻り値が“TRUE”か否かを判定し(ステップS2502)、戻り値が“TRUE”である場合(YESルート)には、現関節について、図68に示す関節値初期化サブルーチンを呼び出して実行してから(ステップS2503)、本ルーチンの処理を終了する。ステップS2502で戻り値が“TRUE”でないと判定された場合(NOルート)には、そのまま、本ルーチンの処理を終了する。
【0254】
関節値移動サブルーチンでは、図67に示すように、関節値の移動を行なってから(ステップS2511)、その関節値が制限値に到達したか否かを判定する(ステップS2512)。制限値に到達した場合(YESルート)、戻り値として“TRUE”が出力される(ステップS2513)。制限値に到達していない場合(NOルート)、未処理の従動関節があるか否かを判定する(ステップS2514)。未処理の従動関節がない場合(NOルート)、戻り値として“FALSE”が出力される(ステップS2515)。
【0255】
また、ステップS2514で未処理の従動関節があると判定された場合(YESルート)、ギア,カム関係から従動関節の移動量を計算してから(ステップS2516)、その従動関節について関節値移動サブルーチンを呼び出して実行し(ステップS2517)、このステップS2517で実行されたサブルーチンからの戻り値が“TRUE”か否かを判定し(ステップS2518)、戻り値が“TRUE”である場合(YESルート)には、戻り値として“TRUE”が出力される(ステップS2519)。戻り値が“TRUE”ではないと判定された場合(NOルート)、ステップS2514に戻る。
【0256】
関節値初期化サブルーチンでは、図68に示すように、関節値として旧関節値を設定してから(ステップS2520)、未処理の従動関節があるか否かを判定し(ステップS2521)、未処理の従動関節がない場合(NOルート)、この関節値初期化サブルーチンを呼び出したステップの処理に戻る一方、未処理の従動関節がある場合(YESルート)、その従動関節について、関節値初期化サブルーチンを呼び出して実行してから(ステップS2522)、ステップS2521に戻る。
【0257】
図69(A)〜図69(C)はギアやローラの動作について説明するための図である。
ここでは、図69(A)に示すように、駆動部品としてのドラムを回転させることにより、従動部品(受動部品)としての2つのスライダ1,2に駆動力が伝達され、これらのスライダ1,2が水平移動する機構について説明する。
【0258】
図69(A)に示す機構がギアで構成されている場合、図69(B)に示すように、ドラムの反時計回りの回転に伴いスライダ1の左端が左壁面に当たると(即ち、スライダ1が制限値に到達すると)、それ以上、ドラムやスライダ2は動かなくなる。
一方、図69(A)に示す機構において、ドラムとスライダ1との間のギアが滑りを許可するローラで構成されている場合、スライダ1が制限値に到達して動かなくなっても、図69(C)に示すように、ドラムは反時計回りに回動し続け、スライダ2は依然として左方向へ水平移動することになる。
【0259】
図70は、ローラをリンクとして有する場合の関節移動サブルーチンの変更部分を説明するためのフローチャートである。
このようなローラをシミュレータ30でシミュレートする場合、図67のステップS2518とステップS2519との間に、図70に示すように、従動関節がローラか否かを判定するステップS2530が追加され、ローラである場合(YESルート)、ステップS2514に戻る一方、ローラでない場合(NOルート)、ステップS2519へ進むようにする。つまり、処理対象の従動関節がローラかどうかを調べ、ローラである場合には、制限値処理を行なった後、その従動関節よりも上流側に制限値情報を流さないようにする。
【0260】
次に、ラチェットをシミュレータ30でシミュレートする手法について簡単に説明する。
ラチェットとは、自転車のフリーやラチェットレンチのように、ユーザが指定した方向には動力を伝達するが、その方向とは逆方向には動力伝達しないものである。
【0261】
このようなラチェットを、シミュレータ30で実現(シミュレート)する手法は、図47で説明したクラッチをシミュレートする手法とほぼ同様である。シミュレートすべき機構にラチェットが存在する場合、ラチェットを成す駆動部品の動く方向がユーザの指定した方向であれば動力を伝達させて、受動部品についての移動処理(関節値移動処理)を実行する一方、逆方向であれば動力を伝達させないようにする。
【0262】
図71(A)〜図71(F)は、機構モデルとしての昇降機とその昇降機を成すリンクのツリー構造とを説明するための図、図72は、各リンクに持たせる、親子関係の切替情報を示す図、図73は、親切替チェックサブルーチンを説明するためのフローチャートである。
機構モデルを構成する各リンク(関節)は、一般に、ツリー状になっており、任意のリンクを動かすと、そのリンクの子(チャイルド)は全て同様に動くことになる。このようなデータ構造では、図71(A)〜図71(F)に示すような昇降機を表現することが難しい。そこで、本実施形態では、クラッチと同様、何らかの条件(例えば第3の関節値)によって親を切り替える機能を追加する。
【0263】
図71(A)〜図71(C)に示す昇降機は、水平に移動可能な車Cを、上下方向に移動可能なテーブルTにより、異なる高さの土台B,Bの間で移動させるものである。図71(A)に示す状態の昇降機は、図71(D)に示すように、車CおよびテーブルTを土台Bの子とするツリー構造で表される。また、図71(B)に示す状態の昇降機は、図71(E)に示すように、車CをテーブルTの土台Bの子としテーブルTを土台Bの子とするツリー構造で表される。そして、図71(C)に示す状態の昇降機は、図71(F)に示すように、車CおよびテーブルTを土台Bの子とするツリー構造で表される。
【0264】
このように親子関係が切り替わる機構(昇降機等)についてシミュレーションを行なう場合には、各リンク(関節)に図72に示すような親子関係の切替情報を予め持たせておき、シミュレータ30によるシミュレーションに際し、関節値が変化した場合(関節値移動後)、図72に示すような情報に基づいて、その変化に応じて親子関係に影響の出る可能性のある子部品について、親を再計算し、親の切替を行なう。
【0265】
例えば、図67のステップS2511で関節値移動を行なった後、親子切替部品の有無を判定し、親子切替部品がある場合には、図73に示す親切替チェックサブルーチンを呼び出して実行する。
この図73に示すように、親切替チェックサブルーチンでは、まず、未処理の親部品候補が存在するか否かを判定し(ステップS2531)、存在しない場合(NOルート)、このサブルーチンの処理を終了する一方、存在する場合(YESルート)、未処理の、親が切り替わる条件が存在するか否かを判定する(ステップS2532)。
【0266】
未処理の条件が存在する場合(ステップS2532のYESルート)、その条件が成り立つか否か判定し(ステップS2533)、成立する場合(YESルート)、ステップS2532に戻る一方、成立しない場合(NOルート)、ステップS2531に戻る。そして、ステップS2532で未処理の条件が存在しないと判定された場合(NOルート)、親の切替を行なってから(ステップS2534)、このサブルーチンの処理を終了する。
【0267】
次に、相対クラッチをシミュレータ30でシミュレートする手法について簡単に説明する。
クラッチが、何らかの条件(例えば第3の関節の関節値)によってギア,カム関係の動力伝達のオン/オフを決めるものであるに対し、相対クラッチとは、動力伝達のオン/オフを、任意の2つの部品の相対位置によって決めるもので、親子関係切替を用いた並べ替え機構などを実現する。
【0268】
一般のクラッチのシミュレーションに際して「クラッチ部品の姿勢はonの位置か」を調べていたのに対し(図47のステップS1204参照)、上述のような相対クラッチのシミュレーションに際しては、「部品Aから見て部品Bがonの位置か」を調べる。それ以外の処理は、一般のクラッチのシミュレーションと全く同様である。
【0269】
ここで、部品Aから見た部品Bの位置は、RA -1(PA−PB)により求めることができる。ただし、RAは部品Aのローカル座標の絶対座標からの回転行列、PA,PBはそれぞれ絶対座標から見た部品A,Bの位置である。
次に、DCモータをシミュレータ30でシミュレートする手法について、図74および図75を参照しながら説明する。なお、図74は、DCモータのシミュレーション手順を説明するためのフローチャート、図75は、DCモータの入力値とモータ指令値との対応関係の一例を示す図である。
【0270】
DCモータのシミュレーションを行なう際には、DCモータの入力値とモータ指令値との対応関係を、例えば図75に示すようなテーブルとして予め登録しておく。このテーブルは、図26において前述した対応表と同様のものである。ただし、図75に示すテーブルでは、DCモータの2つのポート(ポート番号11,12)に入力される値(アクチュエータ指令信号)と、目標速度(deg/sec)および整定時間(msec)との対応関係が設定されている。
【0271】
図75のテーブルを用いた場合、ポート番号11,12にそれぞれ0,1が入力されると、目標速度+100deg/secおよび整定時間500secがモータ指令値として出力され、ポート番号11,12にそれぞれ1,0が入力されると、目標速度−100deg/secおよび整定時間500secがモータ指令値として出力される。
【0272】
このようなテーブルを設定・登録しておいてから、図74に示す手順でシミュレータ30によりDCモータのシミュレーションを行なう。即ち、組込みソフトウェア開発部40からのアクチュエータ指令信号を、ポート番号の状態入力として認識してから(ステップS2541)、その入力値を図75のテーブルによりモータ指令値(目標速度および整定時間)に変換する(ステップS2542)。
【0273】
そして、既に算出されている今回のシミュレーション時間TS(=Δt)を入力し(ステップS2543)、今回のシミュレーション時間TS(=Δt)でのDCモータの回転角を計算する(ステップS2544)。このとき、回転角は、目標速度×シミュレーション時間として算出できるが、モータ指令値が入力されてからのトータルのシミュレーション時間が整定時間以下であれば、前述したごとく、式(4)を用いて回転角が算出される。この後、そのDCモータに連結した全ての関節(リンク)の関節値を計算して処理を終了する(ステップS2545)。
【0274】
次に、ステッピングモータをシミュレータ30でシミュレートする手法について、図76〜図78を参照しながら説明する。なお、図76は、ステッピングモータのシミュレーション手順を説明するためのフローチャート、図77は、ステッピングモータの加速パターンを説明するための図、図78は、パルス数計算サブルーチンを説明するためのフローチャートである。
【0275】
ステッピングモータのシミュレーションを行なう際には、例えば図77に示すような、ステッピングモータの加速パターンTh〔N〕を事前に登録しておく。この加速パターンTh〔N〕としては、加速を開始してi番目のパルスの時間間隔がtiとして登録されている。
このような加速パターンTh〔N〕を登録しておいてから、図76に示す手順でシミュレータ30によりステッピングモータのシミュレーションを行なう。即ち、組込みソフトウェア開発部40から、アクチュエータ指令信号であるモータ指令値(目標速度)を入力するとともに(ステップS2551)、既に算出されている今回のシミュレーション時間TS(=Δt)を入力し(ステップS2552)、今回のシミュレーション時間TS(=Δt)内に、ステッピングモータに対して出力されるパルス数を、図78に示すパルス数計算サブルーチンにより求める(ステップS2553)。
【0276】
そして、ステップS2553で計算されたパルス数に基づいて、ステッピングモータの回転角を計算し(ステップS2554)、そのステッピングモータに連結した全ての関節(リンク)の関節値を計算して処理を終了する(ステップS2555)。
なお、パルス数計算サブルーチンでは、図78に示すように、まず、パルス数pとして累積パルス数を、シミュレーション時間tとして0を初期設定しておいてから(ステップS2561)、tとしてt+Th〔p〕を設定し(ステップS2562)、置き換え後の時間tがシミュレーション時間TSよりも小さいか否かを判定する(ステップS2563)。t<TSであれば(YESルート)、pとしてp+1を設定し(ステップS2564)、ステップS2562に戻る一方、シミュレーション時間tがTSに達すると、このパルス数計算サブルーチンを終了し、パルス数pを計算結果として出力する。
【0277】
次に、ACモータをシミュレータ30でシミュレートする手法について、図79を参照しながら説明する。なお、図79は、ACモータのシミュレーション手順を説明するためのフローチャートである。
この図79に示すように、シミュレータ30によりステッピングモータのシミュレーションを行なう際には、まず、組込みソフトウェア開発部40から、アクチュエータ指令信号であるモータ指令値(目標速度)を入力し(ステップS2571)、その目標速度に対応した整定時間(その対応関係は予め登録されている)を入力するとともに(ステップS2572)、既に算出されている今回のシミュレーション時間TS(=Δt)を入力し(ステップS2573)、今回のシミュレーション時間TS(=Δt)でのACモータの回転角を計算する(ステップS2574)。
【0278】
このとき、回転角は、目標速度×シミュレーション時間として算出できるが、モータ指令値が入力されてからのトータルのシミュレーション時間が整定時間以下であれば、回転角は、加減速を考慮して計算される。この後、そのACモータに連結した全ての関節(リンク)の関節値を計算して処理を終了する(ステップS2575)。
【0279】
次に、マイクロスイッチをシミュレータ30でシミュレートする手法について、図80を参照しながら説明する。なお、図80は、マイクロスイッチのシミュレーション手順を説明するためのフローチャートである。
この図80に示すように、シミュレータ30によりマイクロスイッチのシミュレーションを行なう際には、まず、マイクロスイッチをセンサとして設定した関節の関節値を入力するとともに(ステップS2581)、その関節値とセンサ値との対応関係(テーブル)を入力してから(ステップS2582)、関節値とテーブルとに基づいてセンサ値(オン/オフ)を判定し(ステップS2583)、そのセンサ値を組込みソフトウェア開発部40に出力する(ステップS2584)。
【0280】
次に、エンコーダをシミュレータ30でシミュレートする手法について、図81を参照しながら説明する。なお、図81は、エンコーダのシミュレーション手順を説明するためのフローチャートである。
この図81に示すように、シミュレータ30によりエンコーダのシミュレーションを行なう際には、まず、エンコーダをセンサとして設定した関節の関節値を入力するとともに(ステップS2591)、エンコーダの分解能やエンコーダ原点での関節値を入力してから(ステップS2592)、関節値に対応した波形を計算することにより関節値に対応したセンサ値を算出し(ステップS2593)、算出されたセンサ値を組込みソフトウェア開発部40に出力する(ステップS2594)。
【0281】
次に、ポテンショメータをシミュレータ30でシミュレートする手法について、図82を参照しながら説明する。なお、図82は、ポテンショメータのシミュレーション手順を説明するためのフローチャートである。
この図82に示すように、シミュレータ30によりポテンショメータのシミュレーションを行なう際には、まず、ポテンショメータをセンサとして設定した関節の関節値を入力するとともに(ステップS2601)、その関節値とセンサ値との対応関係(テーブル)を入力してから(ステップS2602)、関節値とテーブルとに基づいてセンサ値を計算し(ステップS2603)、そのセンサ値を組込みソフトウェア開発部40に出力する(ステップS2604)。
【0282】
このように、本発明の一実施形態としての支援システム10によれば、3次元リアルタイムシミュレーション装置30を中核に据えて、メカ試作品を作らなくても組込みソフトウェア(制御プログラム)の開発をメカ設計とは単独に進めることができる。つまり、メカ設計部20による機構の設計と、その機構を制御するための組込みソフトウェアの開発(組込みソフトウェア開発部40による開発)とをコンカレントに遂行することができ、その組込みソフトウェアの開発が効率化され、開発期間の短縮,工数の削減を実現することができる。
【0283】
このとき、状態遷移図・表によるタスク制御記述法と3次元リアルタイムシミュレーション装置30とを組み合わせることにより、組込みソフトウェアを試作品なしに効率よく開発することができる。
また、メカ設計部20と3次元リアルタイムシミュレーション装置30とを連携させることにより、製品を試作することなくシミュレーションによってその3次元機構モデルの可動部を動かし、部品どうしが不用意に接触せず所期の動作を行なうことができるかどうか等、その機構の確認を行ないながら、メカ設計を行なうことができる。その結果として、設計の不具合を早期に発見し、部品の配置変更や可動部を考慮した修正等を行なうことが可能になり、製品開発に要する時間の短縮化やコスト削減を実現することができる。
【0284】
さらに、マイコンチップ42と3次元リアルタイムシミュレーション装置30とを連携させることにより、機構を物理的に製作することなく、機構制御用のプログラムのデバックを行なうことができ、その組込みソフトウェアの開発の短縮化やコスト低減化に大きく寄与することになる。
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0285】
【発明の効果】
以上詳述したように、本発明の支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体によれば、3次元機構モデルシミュレーション部を中核に据えて、メカ試作品を作らなくても組込みソフトウェアの開発をメカ設計とは単独に進めることができる。つまり、機構の設計と、その機構を制御するための組込みソフトウェアの開発とをコンカレントに遂行することができ、その組込みソフトウェアの開発が効率化され、開発期間の短縮,工数の削減を実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態としての支援システムの機能的構成を示すブロック図である。
【図2】本実施形態のコンピュータ読み取り可能な記録媒体に記録された支援プログラムの構成を示す図である。
【図3】本発明の一実施形態としての支援システムを構築しうるコンピュータシステムを示す外観図である。
【図4】本発明の一実施形態としての支援システムを構築しうるコンピュータシステムのハードウェア構成を示すブロック図である。
【図5】本実施形態の支援システムの要部を示すブロック図である。
【図6】(A)および(B)は、それぞれ、メカ設計部から3次元リアルタイムシミュレーション装置へ受け渡される図形データファイルおよびアセンブリデータファイルの具体例を示す図である。
【図7】本実施形態の支援システムの要部(3次元リアルタイムシミュレーション装置,状態遷移図・表作成編集装置および第2インタフェース部)を示すブロック図である。
【図8】状態遷移図の表示例を示す図である。
【図9】状態遷移表の表示例を示す図である。
【図10】(A)〜(C)はマルチタスクについて説明するためのタイムチャートである。
【図11】(A)および(B)は優先度によるタスクのスケジューリングについて説明するための図である。
【図12】(A)〜(D)は同期タスクを用いた同期化処理について説明するためのタイムチャートである。
【図13】本実施形態における同期タスクを用いた同期化処理について説明するためのブロック図である。
【図14】本実施形態における同期化処理について説明するためのフローチャートである。
【図15】本実施形態のロジックアナライザにおける表示例を示す図である。
【図16】ロジックアナライザによる処理を含む、本実施形態でのシミュレーション処理全体の流れを説明するためのフローチャートである。
【図17】 本実施形態の支援システムにおける3次元リアルタイムシミュレーション装置の動作概念を説明するための概念図である。
【図18】センサやモータの定義時の処理を説明するための、3次元リアルタイムシミュレーション装置の模式図である。
【図19】本実施形態の3次元リアルタイムシミュレーション装置によるシミュレーション処理を説明するための模式図である。
【図20】本実施形態の3次元リアルタイムシミュレーション装置と組込みソフトウェア開発部(同期タスク)との動作タイミングを説明するための図である。
【図21】本実施形態の3次元リアルタイムシミュレーション装置によるシミュレーション手順を説明するためのフローチャートである。
【図22】図21に示すシミュレータの処理フローの一部分(図21に一点鎖線で囲った部分)に代えて採用することのできる部分フローを示すフローチャートである。
【図23】モータとして定義されるリンク(モータリンク)の選び方を説明すべくモータリンクの一例を模式的に示す斜視図である。
【図24】(A),(B)はセンサとして定義されるリンク(センサリンク)の選び方を説明すべくセンサリンクの一例を模式的に示す斜視図である。
【図25】(A),(B)はセンサとして定義されるリンク(センサリンク)の選び方を説明すべくセンサリンクの他例を模式的に示す斜視図である。
【図26】モータの種類を説明するための図である。
【図27】モータを一次遅れ系とみなしたときの、モータの回転速度の初期変化を示す図である。
【図28】本実施形態の3次元リアルタイムシミュレーション装置における、一次遅れを考慮したモータ駆動の処理を説明するためのフローチャートである。
【図29】干渉チェックを用いたセンサの定義方法を説明するための図である。
【図30】干渉チェックを用いたセンサの定義方法を説明するための図である。
【図31】(A)〜(C)は干渉チェックを用いたセンサの定義方法を説明するための図である。
【図32】本実施形態において3次元リアルタイムシミュレーション装置と組込みソフトウェア開発部との間で同期をとるために送受信される信号を説明するためのタイミングチャートである。
【図33】本実施形態において、3次元機構モデルの動作とソフトウェア開発部の動作との同期をとるための同期化手法を説明するためのフローチャートである。
【図34】本実施形態において、3次元機構モデルの動作とソフトウェア開発部の動作との同期を実現するための、3次元リアルタイムシミュレーション装置側の処理を説明するためのフローチャートである。
【図35】(A),(B)は本実施形態での干渉可能性の評価方法の説明図である。
【図36】(A)〜(C)は部品間距離とシミュレーション間隔との関係の各種の例を示す図である。
【図37】(A),(B)は部品のグループ分けを説明するための図である。
【図38】(A)〜(D)は1つの3次元機構モデル内に複数のモータリンクが定義されている場合のグループ分けを説明するための図である。
【図39】グループ分けした部品の再グループ化を説明するための図である。
【図40】複数のリンクを、モータリンクの動きによって姿勢に影響を受けるリンクのグループとそのモータリンクの動きによっては姿勢に影響を受けないグループとに分けるルーチンを説明するためのフローチャートである。
【図41】図40における検索ルーチンを説明するためのフローチャートである。
【図42】図40および図41に示すルーチンの動作説明用のリンク機構モデルを模式的に示す斜視図である。
【図43】図42に示すリンク機構モデルのデータ構造を説明するための図である。
【図44】(A)〜(D)は、モータリンクの動きによって姿勢に影響を受けるリンクグループ内で、シミュレーション時に距離を求めるリンクの組を抽出する手法を具体的に説明するための図である。
【図45】本実施形態における別の実施態様の3次元リアルタイムシミュレーション装置によるシミュレーション処理全体の処理の流れを説明するためのフローチャートである。
【図46】モータ処理ルーチンを説明するためのフローチャートである。
【図47】リンク姿勢移動サブルーチンを説明するためのフローチャートである。
【図48】関節不良動作処理ルーチンを説明するためのフローチャートである。
【図49】センサ処理ルーチンを説明するためのフローチャートである。
【図50】オン/オフセンサ処理ルーチンを説明するためのフローチャートである。
【図51】センサ性能劣化処理ルーチンを説明するためのフローチャートである。
【図52】チャタリングによる出力予定値変更処理ルーチンを説明するためのフローチャートである。
【図53】エンコーダの変位(角度等)に対する出力波形の一例を示す図である。
【図54】(A)〜(E)は、エンコーダの、各種の出力波形を示す図である。
【図55】エンコーダの出力処理ルーチンを説明するためのフローチャートである。
【図56】エンコーダ処理ルーチンを説明するためのフローチャートである。
【図57】ポテンショメータの関数値の一例を説明するための図である。
【図58】ポテンショメータ前処理ルーチンを説明するためのフローチャートである。
【図59】シミュレーション間隔決定処理ルーチンを説明するためのフローチャートである。
【図60】(A),(B)は干渉チェックによる関節可動範囲の検索法を説明するための図である。
【図61】(A)〜(C)は干渉チェックによるカム関係の検索方法を説明するための図である。
【図62】干渉チェックによるカム関係検索ルーチンを説明するためのフローチャートである。
【図63】受動部品の非接触姿勢検索ルーチンを説明するためのフローチャートである。
【図64】受動部品の非接触姿勢検索ルーチンを説明するためのフローチャートである。
【図65】(A)〜(C)は駆動部材側の溝とその溝に挿入されて駆動される受動部材側のピンとの溝関係を設定する手法を説明するための図である。
【図66】ギアやローラをリンクとして有する場合のリンク姿勢移動ルーチンを説明するためのフローチャートである。
【図67】関節値移動サブルーチンを説明するためのフローチャートである。
【図68】関節値初期化サブルーチンを説明するためのフローチャートである。
【図69】(A)〜(C)はギアやローラの動作について説明するための図である。
【図70】 ローラをリンクとして有する場合の関節移動サブルーチンの変更部分を説明するためのフローチャートである。
【図71】(A)〜(F)は、機構モデルとしての昇降機とその昇降機を成すリンクのツリー構造とを説明するための図である。
【図72】各リンクに持たせる、親子関係の切替情報を示す図である。
【図73】親切替チェックサブルーチンを説明するためのフローチャートである。
【図74】DCモータのシミュレーション手順を説明するためのフローチャートである。
【図75】DCモータの入力値とモータ指令値との対応関係の一例を示す図である。
【図76】ステッピングモータのシミュレーション手順を説明するためのフローチャートである。
【図77】ステッピングモータの加速パターンを説明するための図である。
【図78】パルス数計算サブルーチンを説明するためのフローチャートである。
【図79】ACモータのシミュレーション手順を説明するためのフローチャートである。
【図80】マイクロスイッチのシミュレーション手順を説明するためのフローチャートである。
【図81】エンコーダのシミュレーション手順を説明するためのフローチャートである。
【図82】ポテンショメータのシミュレーション手順を説明するためのフローチャートである。
【符号の説明】
10 支援システム
20 メカ設計部(機構設計部,意匠設計・3次元CADシステム)
30 3次元リアルタイムシミュレーション装置(3次元機構モデルシミュレーション部,3Dモデルシミュレータ)
31 シミュレーション部
32 インタフェース部
40 組込みソフトウェア開発部
41 状態遷移図・表作成編集装置(状態遷移図・表作成部)
411 タスク制御部
412 ユーザインタフェース部
413 状態遷移表示部
414 インタフェース部
415 内部メモリ
42 マイコンチップ
43 統合開発環境装置
50 第1インタフェース部
51,52 第2インタフェース部
53 共有メモリ
100 コンピュータシステム
101 本体部
101a フロッピィディスク装填口
101b CD−ROM装填口
102 CRTディスプレイ
102a 表示画面
103 キーボード
104 マウス
210 CD−ROM
211 ハードディスク
212 フロッピィディスク
220 バスライン
221 中央演算処理装置(CPU)
222 RAM
223 ハードディスクコントローラ
224 フロッピィディスクドライバ
225 CD−ROMドライバ
226 マウスコントローラ
227 キーボードコントローラ
228 ディスプレイコントローラ
229 モデム
230 ROM
300 記録媒体
310 支援プログラム
311 機構設計プログラム
312 3次元機構モデルシミュレーションプログラム
313 組込みソフトウェア開発プログラム
314 第1インタフェースプログラム
315 第2インタフェースプログラム
316 統合開発環境プログラム
320 状態遷移図・表作成プログラム

Claims (16)

  1. アクチュエータおよびセンサを含む複数の部品からなる機構を3次元的に設計する機構設計部と、
    該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部と、
    該機構に組み込まれ該機構の動作を制御するための制御プログラムを組込みソフトウェアとして開発する組込みソフトウェア開発部と、
    該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部と、
    該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部とをそなえて構成されるとともに、
    該組込みソフトウェア開発部が、該組込みソフトウェアの詳細設計を行なうべく該組込みソフトウェアの仕様を記述する状態遷移図・表を作成・編集する状態遷移図・表作成部を含んで構成され、
    該状態遷移図・表作成部が、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、
    該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該状態遷移図・表作成部との間でデータ送受を行なう際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させることを特徴とする、支援システム。
  2. 該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させることを特徴とする、請求項記載の支援システム。
  3. 該組込みソフトウェア開発部が、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップを含んで構成され、
    該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なうことを特徴とする、請求項1または請求項に記載の支援システム。
  4. 該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、
    該第2インタフェース部が、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴とする、請求項記載の支援システム。
  5. アクチュエータおよびセンサを含む複数の部品からなる機構を3次元的に設計する機構設計部と、
    該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部と、
    該機構に組み込まれ該機構の動作を制御するための制御プログラムを組込みソフトウェアとして開発する組込みソフトウェア開発部と、
    該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部と、
    該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部とをそなえて構成されるとともに、
    該組込みソフトウェア開発部が、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップを含んで構成され、
    該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、
    該第2インタフェース部が、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なう際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴とする、支援システム。
  6. 該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴とする、請求項または請求項に記載の支援システム。
  7. 該第1インタフェース部が、該3次元機構モデルシミュレーション部によるシミュレーション結果を、該機構の設計に反映させるべく該3次元機構モデルシミュレーション部から該機構設計部へ入力することを特徴とする、請求項1〜請求項のいずれか1項に記載の支援システム。
  8. 該第2インタフェース部が、
    該組込みソフトウェア開発部から該3次元機構モデルシミュレーション部へ、該3次元機構モデルにおける該アクチュエータに対するアクチュエータ指令信号を受け渡すとともに、
    該3次元機構モデルシミュレーション部から該組込みソフトウェア開発部へ、該アクチュエータ指令信号に応じたシミュレーション結果として得られる、該3次元機構モデルにおける該センサからのセンサ信号を受け渡すことを特徴とする、請求項1〜請求項のいずれか1項に記載の支援システム。
  9. 該アクチュエータに対する該アクチュエータ指令信号と該3次元機構モデルシミュレーション部からの該センサ信号との時間変化をリアルタイムで解析して表示しうる解析部をそなえて構成されていることを特徴とする、請求項記載の支援システム。
  10. アクチュエータおよびセンサを含む複数の部品からなる機構を制御すべくその機構に制御プログラムとして組み込まれる組込みソフトウェアの開発を支援する機能をコンピュータにより実現するための、支援プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    該支援プログラムとして、
    該機構を3次元的に設計する機構設計部として、該コンピュータを機能させる機構設計プログラムと、
    該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部として、該コンピュータを機能させる3次元機構モデルシミュレーションプログラムと、
    該組込みソフトウェアを開発する組込みソフトウェア開発部として、該コンピュータを機能させる組込みソフトウェア開発プログラムと、
    該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部として、該コンピュータを機能させる第1インタフェースプログラムと、
    該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部として、該コンピュータを機能させる第2インタフェースプログラムとが記録されており、
    該組込みソフトウェア開発プログラムが、該組込みソフトウェアの詳細設計を行なうべく該組込みソフトウェアの仕様を記述する状態遷移図・表を作成・編集する状態遷移図・表作成部として、該コンピュータを機能させる状態遷移図・表作成プログラムを含むものであり、
    該状態遷移図・表作成プログラムが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行させるように構成され、
    該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該状態遷移図・表作成部との間でデータ送受を行なわせる際に、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させるように構成されていることを特徴とする、支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  11. 該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該状態遷移図・表作成部の動作とを同期させることを特徴とする、請求項1記載の支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  12. 該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なわせるように構成されていることを特徴とする、請求項10または請求項1に記載の支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  13. 該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、
    該第2インタフェースプログラムが、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴とする、請求項1記載の支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  14. アクチュエータおよびセンサを含む複数の部品からなる機構を制御すべくその機構に制御プログラムとして組み込まれる組込みソフトウェアの開発を支援する機能をコンピュータにより実現するための、支援プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    該支援プログラムとして、
    該機構を3次元的に設計する機構設計部として、該コンピュータを機能させる機構設計プログラムと、
    該機構を3次元機構モデルとして内部に構築され該機構の動作をシミュレートする3次元機構モデルシミュレーション部として、該コンピュータを機能させる3次元機構モデルシミュレーションプログラムと、
    該組込みソフトウェアを開発する組込みソフトウェア開発部として、該コンピュータを機能させる組込みソフトウェア開発プログラムと、
    該機構設計部による設計データを、該3次元機構モデルに反映させるべく該機構設計部から該3次元機構モデルシミュレーション部へ入力する第1インタフェース部として、該コンピュータを機能させる第1インタフェースプログラムと、
    該3次元機構モデルシミュレーション部の動作と該組込みソフトウェア開発部の動作との同期をとりながら該3次元機構モデルシミュレーション部と該組込みソフトウェア開発部との間でデータ送受を行なう第2インタフェース部として、該コンピュータを機能させる第2インタフェースプログラムとが記録されており、
    該第2インタフェースプログラムが、該3次元機構モデルシミュレーション部の動作と、開発中の該組込みソフトウェアを組み込まれたマイクロコンピュータチップの動作との同期をとりながら該3次元機構モデルシミュレーション部と該マイクロコンピュータチップとの間でデータ送受を行なわせるように構成され、
    該マイクロコンピュータチップが、複数のタスクを並行して実行するマルチタスクを採用し、該3次元機構モデルシミュレーション部のシミュレーション動作期間中、該複数のタスクを停止させるように機能する同期タスクを該複数のタスクとは別に実行し、
    該第2インタフェースプログラムが、該同期タスクを用いて該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させるように構成されていることを特徴とする、支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  15. 該同期タスクの優先度を最も高く設定し、該同期タスクにより該複数のタスクの開始・停止を制御して、該3次元機構モデルシミュレーション部の動作と該マイクロコンピュータチップの動作とを同期させることを特徴とする、請求項1または請求項1に記載の支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
  16. 該第1インタフェースプログラムが、該3次元機構モデルシミュレーション部によるシミュレーション結果を、該機構の設計に反映させるべく該3次元機構モデルシミュレーション部から該機構設計部へ入力させるように構成されていることを特徴とする、請求項1〜請求項1のいずれか1項に記載の支援プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2000034642A 2000-02-14 2000-02-14 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体 Expired - Fee Related JP3897948B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000034642A JP3897948B2 (ja) 2000-02-14 2000-02-14 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体
US09/754,301 US7257521B2 (en) 2000-02-14 2001-01-05 Support system, and computer-readable recording medium in which support program is recorded

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000034642A JP3897948B2 (ja) 2000-02-14 2000-02-14 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2001222572A JP2001222572A (ja) 2001-08-17
JP3897948B2 true JP3897948B2 (ja) 2007-03-28

Family

ID=18558945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000034642A Expired - Fee Related JP3897948B2 (ja) 2000-02-14 2000-02-14 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (2)

Country Link
US (1) US7257521B2 (ja)
JP (1) JP3897948B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008350A (ja) * 2009-06-23 2011-01-13 Canon Inc 画像処理方法及び画像処理装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934932B2 (en) * 2001-10-16 2005-08-23 Sharp Laboratories Of America, Inc. System and method for managing workflow using a plurality of scripts
JP2004220566A (ja) 2002-12-26 2004-08-05 Toshiba Corp 機構シミュレーション方法および機構シミュレーションプログラム
US7598948B1 (en) * 2003-02-06 2009-10-06 Nvidia Corporation System and method of detecting rotated displays
JP4549077B2 (ja) * 2004-03-03 2010-09-22 富士通テン株式会社 シミュレーション装置及び該装置のプログラム
JP2005339029A (ja) * 2004-05-25 2005-12-08 Canon Inc プログラム連携システム
JPWO2006003702A1 (ja) * 2004-07-01 2008-04-17 富士通株式会社 検証支援装置、検証支援方法、および検証支援プログラム
JP4578183B2 (ja) * 2004-08-31 2010-11-10 株式会社リコー 画像表示方法、画像表示プログラムおよび画像表示装置
JP4536466B2 (ja) * 2004-09-16 2010-09-01 株式会社平和 パチンコシミュレーション装置およびパチンコシミュレーションプログラム
JP2006106154A (ja) * 2004-10-01 2006-04-20 Shinko Gijutsu Kenkyusho:Kk 被験者の技能評価システム
JP2006195971A (ja) * 2004-12-16 2006-07-27 Canon Inc 三次元cadシステム
US7457717B2 (en) * 2006-02-03 2008-11-25 The Boeing Company System for trouble shooting and verifying operation of spare assets
US8504337B2 (en) * 2007-01-17 2013-08-06 Caterpillar Inc. Method and system for analyzing three-dimensional linkages
AU2009256381B2 (en) * 2008-06-03 2014-09-18 Hexagon Technology Center Gmbh Method and apparatus for copying objects in an object-oriented environment using a multiple-transaction technique
US8990783B1 (en) 2009-08-13 2015-03-24 The Mathworks, Inc. Scheduling generated code based on target characteristics
US8566804B1 (en) * 2009-08-13 2013-10-22 The Mathworks, Inc. Scheduling generated code based on target characteristics
DE102009058802B4 (de) * 2009-12-18 2018-03-29 Airbus Operations Gmbh Anordnung zur kombinierten Darstellung eines realen und eines virtuellen Modells
JP5581749B2 (ja) * 2010-03-15 2014-09-03 オムロン株式会社 表示装置、表示方法、プログラム、およびコンピュータ読み取り可能な記録媒体
JP2013084163A (ja) * 2011-10-12 2013-05-09 Hitachi Ltd 協調シミュレーション装置及び協調シミュレーション方法
US10719537B2 (en) 2012-02-09 2020-07-21 Hexagon Technology Center Gmbh Method and apparatus for performing a geometric transformation on objects in an object-oriented environment using a multiple-transaction technique
US20130212505A1 (en) * 2012-02-09 2013-08-15 Intergraph Corporation Method and Apparatus for Performing a Geometric Transformation on Objects in an Object-Oriented Environment using a Multiple-Transaction Technique
EP2672462A1 (en) * 2012-06-07 2013-12-11 Dassault Systèmes Computer-implemented method for defining initial conditions for dynamic simulation of an assembly of objects in a three-dimensional scene of a system of computer-aided design
JP2014203314A (ja) * 2013-04-08 2014-10-27 日立オートモティブシステムズ株式会社 Ecuシミュレーション装置
GB201520361D0 (en) * 2015-11-18 2015-12-30 Romax Technology Ltd Driveline modeller
JP6919338B2 (ja) * 2017-05-30 2021-08-18 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
US20220164235A1 (en) * 2020-11-20 2022-05-26 Okta, Inc. Server-Based Workflow Management Using Priorities
EP4195044A1 (fr) * 2021-12-09 2023-06-14 Bull SAS Méthode d'optimisation de la consommation énergétique d'une infrastructure informatique par suspension de travaux

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442104B1 (en) * 1982-08-13 2002-08-27 James Jefferson Ridgell, Jr. Underwater background-acoustics synthesizer system and method
JPS6349851A (ja) 1986-08-19 1988-03-02 Hitachi Electronics Eng Co Ltd シミユレ−シヨンシステム
JPH02253303A (ja) 1989-03-28 1990-10-12 Toshiba Corp ロボット制御系の調律装置
JPH05242203A (ja) 1992-02-27 1993-09-21 Hitachi Ltd 機構設計方法及び機構設計cadシステム
US5357628A (en) 1992-03-25 1994-10-18 Intel Corporation Computer system having integrated source level debugging functions that provide hardware information using transparent system interrupt
US5331571A (en) 1992-07-22 1994-07-19 Nec Electronics, Inc. Testing and emulation of integrated circuits
US5691898A (en) * 1995-09-27 1997-11-25 Immersion Human Interface Corp. Safe and low cost computer peripherals with force feedback for consumer applications
JPH0950371A (ja) 1995-08-07 1997-02-18 Omron Corp プログラム作成支援装置およびプログラム作成支援方法
JP3361007B2 (ja) 1995-11-07 2003-01-07 富士通株式会社 リンク機構解析装置
JPH09305389A (ja) 1996-05-15 1997-11-28 Ricoh Co Ltd ソフトウエア開発支援のシミュレーション装置
JP3442938B2 (ja) 1996-09-18 2003-09-02 株式会社東芝 機構設計支援装置
JP4020472B2 (ja) 1997-11-10 2007-12-12 花王株式会社 伸縮性布帛の製造方法
JP2926561B1 (ja) 1998-01-09 1999-07-28 日本電気移動通信株式会社 ソフトウェアの試験方法
US6615091B1 (en) * 1998-06-26 2003-09-02 Eveready Battery Company, Inc. Control system and method therefor
JP2000020291A (ja) 1998-07-06 2000-01-21 Toyota Motor Corp 車両用プログラム開発支援方法および装置
US6546297B1 (en) * 1998-11-03 2003-04-08 Robertshaw Controls Company Distributed life cycle development tool for controls
JP3708751B2 (ja) * 1998-12-16 2005-10-19 富士通株式会社 機構制御プログラム開発支援システム、機構制御プログラム開発支援装置、および機構制御プログラム開発支援プログラム記憶媒体
WO2000036477A1 (fr) * 1998-12-16 2000-06-22 Fujitsu Limited Systeme, dispositif et support de memorisation servant au developpement d'un programme de commande d'un mecanisme

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008350A (ja) * 2009-06-23 2011-01-13 Canon Inc 画像処理方法及び画像処理装置
US8994729B2 (en) 2009-06-23 2015-03-31 Canon Kabushiki Kaisha Method for simulating operation of object and apparatus for the same

Also Published As

Publication number Publication date
JP2001222572A (ja) 2001-08-17
US20010016807A1 (en) 2001-08-23
US7257521B2 (en) 2007-08-14

Similar Documents

Publication Publication Date Title
JP3897948B2 (ja) 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2011126777A2 (en) Integrated development environment for rapid device development
CN102906652B (zh) 生成用于闭环控制器的代码的方法和装置
Gupta et al. Intelligent assembly modeling and simulation
Liang et al. Real-time state synchronization between physical construction robots and process-level digital twins
JP2009104388A (ja) シミュレーション再生表示装置及びシミュレーション再生表示方法並びにシミュレーションプログラム
Huang et al. Automated sequence and motion planning for robotic spatial extrusion of 3D trusses
Poudel et al. Decentralized and centralized planning for multi-robot additive manufacturing
US20040186698A1 (en) Mechanism simulation method and mechanism simulation program
US20040088144A1 (en) Interference verifying device and method for verifying interference between parts within a device
JP3708751B2 (ja) 機構制御プログラム開発支援システム、機構制御プログラム開発支援装置、および機構制御プログラム開発支援プログラム記憶媒体
Hui et al. Research on visual 3D assembly process design and simulation for marine diesel engine
US20220152816A1 (en) Decentralized robotic operating environment optimization
JP7390405B2 (ja) 統合された物理的環境および模擬された環境でロボットシステムを試験するための方法およびシステム
Kocik et al. A methodology to design and prototype optimized embedded robotic systems
Ritchie et al. The use of non-intrusive user logging to capture engineering rationale, knowledge and intent during the product life cycle
JPH08190415A (ja) ロボット制御装置及び方法
Kopacek et al. Robot retrofitting by using LinuxCNC complemented with arduino/RaspberryPI
Mariyam et al. Industry 4.0: augmented reality in smart manufacturing industry environment to facilitate faster and easier work procedures
Behrens Integrated Task and Motion Scheduling for Flexible Manufacturing
Naskali Software framework for high precision motion control applications
Jo et al. A new role of graphical simulation: Software testing
Cameron A geometric database for the Oxford autonomous guided vehicle
EP1222500A2 (en) Extensible metrology system
Maragno Digital Twin for Firmware and Artificial Intelligence prototyping

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060606

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060804

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061016

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061220

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110105

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110105

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120105

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130105

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130105

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140105

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees