thumb_IMG_3776_1024
ブログにあるコメントを頂いたので,それについてのディスカッションです.
本当に多くの方から,沢山の意見を頂きました. コメントして頂いた方に限らず,多くのロボット競技参加者に見て欲しい内容でしたので,記事にまとめます.

記事通りに回路をくみプログラムを入れたところ問題なく動作しましたが、 ソースコードの意味が全然理解できていません。 理解しないまま使うのはやはりよくないのでしょうか?
質問者:中学生
記事:Arduino+MPU6050でYaw軸IMU

Twitterで集まった意見

以下,Twitter上で集まった意見をご紹介します.

完全に理解していない技術は使ってはいけないか?

まず「最初のうちは分からないで使うのは当たり前」だという事,これはまず間違いないと思います.
完全に理解していなければ使えないのだとしたら,WindowsなどのOSや.Arduinoなどのマイコンも使うのが大変です.それでは開発が進まず,つまらないですね.

最初のうちは,まずは使ってみて楽しむことが重要だと思います.
現状その機能で満足できてしまっているのであれば,そのまま使い続けていいと思います.

ただし,理解しないまま使い続けられる期間がどれくらいあるか,一般的にはそう長くないのが普通だと思います.

世の中のデバイスは,常に目まぐるしく新しいモノへと変化し,それを扱う技術も変化し続けています.必ず現状の技術に不満が出ます.
新しい未知の技術に対する適応力は,いつでも求められ続けます.


例えば,画像処理を使って何かを検出して,それに操作を加える(ロボットだと事例が多い)事を目的に,何かを開発する場合.
画像処理をするとなった時点で,OpenCVなどのオープンソースライブラリを使うことが殆どだと思います. その際に大切なことは「この機能を使ったらこうなる」を理解する事で,原理の理解ではありません.
画像処理は手段であって,目的ではないからです.

ロボットを扱う者として考えておかなければならない事


アールティの中川社長からご意見を頂きました.
プログラマとしてはコンピュータの中だけで完結するので壊れても物理的な被害は少ないのです。

でも、ロボ屋として、そのコードを書いたら出現する物理現象がわからなくて使うのはまずい(危ない)と思うから、 最低限、ソースコードの中身はわからないけど「コレを書くとこう動く」がわかればいいと思います。 自分も他人も怪我させないというのだけちゃんとわかってるほうが中学生くらいの頃は大事です。

プログラミングって、ある意味、人間の話す言葉がわからない異種のモノにやり方を教える作業と言っても過言ではないのです。 実際、プログラミングにおいては、鍛えるのは実は物理とか数学力じゃなくて、国語力なんですよね。

逆にロボットは、物理とか数学はそのうごきのモデルやダイナミクスを理解することなので大事で、これはプログラミングじゃないんだよね。

ロボットの起こす物理的な現象は怪我や破損に直結なのです。 なので、この呪文はこの現象を引き起こす、そこを理解するといいかも。
今回ブログに頂いたコメントはソフトウェアと小規模な回路についてのコメントでしたが, 上記はロボットを実際に操作する場合について書いて頂いています.

例えば,産業用ロボットの展示コーナーなどを見ると,必ず透明なカバーで人間の侵入を防ぎ,装置には非常停止ボタンが設置されています. 産業用ロボットの駆動スピードは,見た目ではそう早くは見えませんが,簡単に頭蓋骨を砕くくらいの力があります.

今回コメント頂いたArduinoを使ったIMUも,RoboCupJunior Soccerに使った場合,バグはロボットの挙動に直結します. もしかしたら,急なモーターの回転によって,怪我をする可能性があるかもしれません.
意外と身近な話題なんですね.

ロボットを扱う上では,ソフトウェアが実際のハードウェアに作用するという事を,忘れてはいけません. ソフトウェア上だけで完結するプログラムであれば,たとえ壊れても物理的な損害は発生しないが,ロボットでは発生する,という事.

自分が怪我をしない・他人に怪我をさせない事に気をつけて「理解しないまま使うのは良くないことか」→「どの程度まで理解すれば良いか」を考える必要があります.

さいご


本当は,この頻度でコメント返しをするつもりは無かったのですが,面白かったので記事にさせて頂きました.TwitterやFacebookでの沢山の御意見ありがとうございました!

ロボットに関するコメント返しは,かなり投稿頻度が下がると思いますが,RoboCupJuniorネタは今後も書いていくつもりなので,楽しみにしていて下さい.