皆さん、こんばんは

シニアAです

今日は、私が初めて作成したロボット開発を紹介する。
思えば、いろんなことがありました・・・・・
思えば、いろんなことがありました・・・・・
お客様との設計書レビューを控えたある日、担当取締役が『プロジェクトリーダのA君はいないか

今日は休みだと知ると、『設計レビューの資料を事前に見たいんだ。 誰かA君に連絡を取ってみてくれ』
こんな感じで事件が始まったのだが、時間が経つにつれ、おおごとになっていった

・『印刷した資料はどこかに出てないか

・『Aさんに連絡が取れません』
・『サーバの中を調べましたが、それらしいファイルは見当たりませんン』
・『机の中を探しましたが、設計書らしいものは一つもありません』
・『Aさんのパソコンの中を調べましたが、ドキュメントらしい資料は週報しかありません』
など、週報には設計終了と書いてあったが、実際に設計はしていなかったようだ

だから雲隠れしたのだろう。
このAさんが行うはずだったシステムこそ、金型研磨ロボットシステムだった

ユーザとの打ち合わせの日は、取締役と私が行き、お客様に謝り、もう一度開発を進めることになった。
会社としても、赤字プロジェクトには要員は割けられないため、私1人でカバーすることになり、私としては『いざ出陣

ロボットの概要としては、磨き職人がアームに取り付けた砥石で金型を研磨し、そのときのアームの3軸座標(X軸、Y軸、Z軸)を全て記録する。
その座標を使って、ロボットを磨き職人と同じように動かし、金型を磨くことだ

CPUはインテル8080(8ビット)、割り込みコントローラ8259、カウンタ制御8253、ポート制御8255があり、アセンブラ言語で開発した。
開発の前半は、ロボットの肩・肘・手首それぞれに当たる部分の3軸座標を100ミリ秒毎に全て記憶した。
メモリが一杯になったらアラートする処理を組み込み、意外と簡単に完了した

開発の後半はロボットの真髄『磨き』の部分だ。
現在の座標から、次の座標に100ミリ秒後に到達するように、肩・肘・手首の各モータ(正転/逆転を含む)を設定して動かしたが、これは失敗だった。
目標座標に到達してから次の座標へ移動させるのでは、動きがぎこちなく、スムーズに磨けないことがわかった。
ここからは試行錯誤の連続

プログラムを直しては検証、検証してはプログラムを直すのに2週間が過ぎたころ、ようやく固まってきた。
結果的には、目標の座標への道のりの半分まで進んだら、そこから次の座標に向かい、折り返し座標の場合は、目標の座標まで到達してから折り返す方法が、職人の磨き方に最も近いことが判明

砥石で磨く動きはほとんど前後しかないことや、8ビットCPUが遅いことが原因で、先のプログラミングが最適だったようだ。
お客様の承諾を得て納品にこぎつけ、プロジェクトを完遂することができた。
1人祝杯を駅前の居酒屋であげ、セルフ反省会をおこなった

次回のSE道場は・・・『探索の極意(2)』です

お楽しみに

SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿しています
是非ご覧ください


1つ前の開発秘話は...