7月15日 こうしろうがMinervaロボットのプログラムを入力する。
#define TURNAROUND_TIME 395
int i;
task main() {
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetPower(OUT_A+OUT_C,OUT_FULL);
calibrate();
i = 0;
while (i < 5){
retrieve();
i += 1;
}
Off(OUT_A+OUT_C);
}
#define NUMBER_OF_SAMPLES 10
int runningTotal;
int threshold;
sub calibrate() {
//Take an average light reading.
i = 0;
runningTotal = 0;
while (i < NUMBER_OF_SAMPLES) {
runningTotal += SENSOR_3;
Wait(10);
i += 1;
}
threshold = runningTotal / NUMBER_OF_SAMPLES;
}
void grab() {
// Run the moter until we hit the limit switch.
OnFwd(OUT_A);
until(SENSOR_3 == 100);
// Back off from the switch.
OnRev(OUT_A);
until(SENSOR_3 != 100);
Off(OUT_A);
}
void release() {
// Run the moter until we hit the limit switch.
OnRev(OUT_A);
until (SENSOR_3 == 100);
// Back off from the switch.
OnFwd(OUT_A);
until (SENSOR_3 != 100);
Off(OUT_A);
}
int returnTime;
sub retrieve() {
// Drive forward until we see something.
OnFwd(OUT_C);
ClearTimer(0);
until(SENSOR_3 < threshold - 3);
Wait(20); // Move up on it a little.
returnTime = Timer(0);
Off(OUT_C);
grab();
// Trun around(roughly).
OnRev(OUT_C);
Wait(TURNAROUND_TIME);
// Drive back.
OnFwd(OUT_C);
ClearTimer(0);
until(Timer(0) >= returnTime);
Off(OUT_C);
release();
//Turn around.
OnRev(OUT_C);
Wait(TURNAROUND_TIME);
}
中学生になって,英単語を入力するスピードが,かなり速くなったこうしろうである。
さて,今回のプログラムは説明のしがいがある。まず,mainタスクでは,SetSensor命令で入力ポート3につないであるセンサーがライトセンサーであるとRCXに教えている(実は,タッチセンサーも入力ポート3につながっているのであるが,それは後述する)。次にSetPower命令でA,C双方のモーターをフルパワーに設定している。とは言っても,タイヤとモーターの連動にはウォームギヤを介しているのでロボットはゆっくりと前進する。もう一方のアームを動かすモーターはプーリーで回転を伝えている。
calibrateというサブルーチンでは,ライトセンサーが返す値を10回取得し,その平均値を求めている。このロボットは床に落ちているものを見つけ拾うのであるが,あらかじめ何もない状態で床が返す光の反射量の平均値を計算しているのである。(かしこい!)
whileで5回繰り返されるretrieveサブルーチンがこのプログラムのメインとなる処理である。まず,Minervaはゆっくりと前進する。ClearTimer命令でタイマー0を初期化しているのは,何かを見つけるまでにかかった移動時間を求めるためだ。
平均値(threshold)を下回る値をライトセンサーが返したら,(until(SENSOR_3 < threshold - 3);の部分)grab関数を呼び出す。grab関数はアームを動かし,物をつかむ。同時にアーム下部に配置したカムがアーム自体を押し上げる。この動作はSENSOR_3が100を返すまで続けられる(until (SENSOR_3 == 100);)。この関数内のSENSOR_3はライトセンサーではなく,アームと本体の衝突を感知するタッチセンサーである。タッチセンサーは押された状態では100を返す。「どうして,1つのポートにライトセンサーとタッチセンサー付けられるのかな,こうしろう」,「うーん。」答えは,タッチセンサーは押されない限り,ライトセンサーが返す値に何も影響を与えないから,らしい。
grab関数で何かをつかみ持ち上げた後,定数TURNAROUND_TIMEで定義された時間,Minervaは旋回する。床の材質を考慮し180度回転するようにTURNAROUND_TIMEを調整すれば,Minervaは出発地点に帰ってくる。タイマー0で計った時間分,戻ってくるからだ。帰ってきたら,release関数を実行し,拾ってきたものを床に置くのだ。
長文にお付き合いいただきありがとうございました。画像を見れば,即納得(^^)
今から,出発します。
ケチャップを見つけ,拾い上げました。
旋回しています。
戻ってきて,ケチャップを降ろしました。
第59話 Minerva(知恵の女神)はプログラムも知恵にあふれていた
あなたにお薦め
今日のピックアップ
-
富士通クラウドで利用者データや認証情報の流出か、悪用されたアノ機器の脆弱性
-
AIの良しあしは精度だけでは測れない、「MLOps」の基本は何か
-
グーグルのHTAP対応PostgreSQL互換DB「AlloyDB」、データ分析性能は最大100倍
-
機密情報は国産で管理を、自民党がデジタル庁に迫る「セキュリティクラウド」の正体
-
世界IT大手の22年1~3月期決算、2桁成長だが伸び率は鈍化
-
政府や業界団体がNFTビジネスを後押し、暗号資産の教訓を生かせるか
-
紙のメモとはサヨナラしよう、イマドキのノートアプリが便利な理由
-
サポート完全終了のIE、Microsoft 365を使って社内の利用者を探し出す
-
Linuxデスクトップを快適に、各種設定ツールを使いこなす
-
iPhoneの通信・通話トラブル、SIMやVoLTEの設定を正しく理解して回避
-
iPadでLINEを楽しむ、スマホ連携すると使えなくなる機能に注意
-
バランスが良く魅力十分なモバイルノート「dynabook R8」
おすすめのセミナー
-
CIO養成講座 【第31期】
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
-
2日間集中講座 実践型データサイエンティスト育成塾
受講で使用するBIツールインストール済みのパソコンとテキストは、受講日前に受講者の方宛にお届け。...
-
無線への新たなニーズに対応するアンテナの設計
アンテナの基本技術の解説に加え、無線への新たなニーズについての対策を、セミナー会場だから聞ける内...
-
オンライン版「なぜなぜ分析」演習付きセミナー実践編
このセミナーでは「抜け・漏れ」と「論理的飛躍」の無い再発防止策を推進できる現場に必須の人材を育成...
-
ITリーダー養成180日実践塾 【第12期】
8回のセミナーでリーダーに求められる“コアスキル”を身につけ、180日間に渡り、講師のサポートの...
-
目的思考のデータ活用術
「ワンテーマだけでなくデータ活用のスタートから課題解決のゴールまで体系立てて学びたい」というニー...
-
業務改革プロジェクトリーダー養成講座【第12期】
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
-
ITベンダーのためのCIO養成講座【第1期】
ITとデジタル技術の活用に関するグローバルスタンダードと先進事例の研究成果、講師の実務知見を体系...
注目のイベント
-
関西デジタルイノベーション 2022
2022年5月26日(木)~27日(金)
-
WOMAN EXPO 2022
2022年5月28日(土)
-
コンテナSummit 2022
2022年5月31日 午後1時~午後3時50分
-
DX時代に企業を守る。あなたの会社も狙われている
2022年5月31日 午後2時~午後3時50分
-
DX Insight 2022「2025年の崖」の克服とDX加速
2022年6月2日(木)、6月3日(金)
-
名古屋デジタルイノベーション 2022
2022年6月8日(水)~9日(木)
-
付加価値ある意匠デザインを実現するものづくり技術2022
2022年6月9日(木) 午前10時30分~午後5時
-
人工知能サミット2022 製造業編
2022年6月10日(金) 午後1時30分~午後3時55分
-
ローコード・ノーコード/超高速開発セミナー2022
2022年6月13日(月) 午前10時~午後5時5分
-
ITイノベーターズ会議 PoCで終わらせない!CX向上に効くデジタル戦略 東京海上日動火災、変革リーダー40人に学ぶDXの本質
2022年6月14日(火)13:00-17:40
おすすめの書籍
-
さわって学べるPower Platform ローコードアプリ開発ガイド
体験こそ習得の近道!マイクロソフトのローコード開発ツール「Power Platform」に含まれ...
-
これ1冊で丸わかり 完全図解 ネットワーク管理入門
日経NETWORKに掲載したネットワーク管理に関連する主要な記事をまとめた1冊です。文章を読むだ...
-
Web世代が知らないエンタープライズシステム設計
本書は長年の経験を持つプロたちが、データモデリングの知見を中心に16の視点から、実践的なシステム...
-
Google Cloud エンタープライズIT基盤設計ガイド
企業システムに関わる人が知っておくべきGoogle Cloudのサービスを網羅的に分かりやすく解...
-
中国EV市場調査 技術動向・サプライヤー分析
中国EVへの参入に必須の知識とデータを一冊に凝縮。主要電動部品の「電池」「モーター」「インバータ...
-
攻めのデータ活用の「つまずきポイント」に備える49のチェックリスト
AI(人工知能)の利用や斬新なインターネットサービスなど、「攻めのデータ活用」に取り組む際に、コ...