目次 #Contents *課題1の内容 [#u39f4112] A4の紙に今年の大学生活を表す漢字一文字を書くロボットを作製せよ。というものである。僕は今年たくさん失敗をしてしまい苦い思いをしたので「苦」という字をロボットで書こうと思った。 * ロボットの説明 [#lfb8fa77] **全体 [#a00d56a2] 今回のロボットは一番最初に作成した基本のものにペンを上げ下げする部品を取り付けたシンプルな構造になっている。それにより分解するのも簡単になっている。 #ref(2016b/Member/god22ila/Mission1/IMG_0448.JPG,50%,基本の構造) 基本の構造 **車輪 [#rfcac9af] 直角に曲がったりするには車輪は二つのほうがプログラミングしやすいと思ったので、基本のものを崩さずに使用した。曲がるときには二つの車輪を逆方向に回転させる方法をとろうとしたが、やってみて難しく感じたので、片方の車輪を軸にしてコンパスが円を描くようにもう片方の車輪を動かす方法をとった。 **アームについて [#s2b33552] -今回は構造を簡単にするために一つのモータとギアでペンを上げ下げするものにした。 -ペンがロボットの前方の中心にくるようにするとペンの位置のずれをわざわざ計算しなくて済むと思ったのでペンが本体の中心に来るようにブロックをつなげて調節をした。 -ブロック一つにペンを輪ゴムで止めるような構造にするのではなく二つのブロックで挟むような構造にしたのは、ブロックでペンを挟むことによってペンが完全に固定されないから。 -ペンが完全に固定されていないとペン先が下を向いたときに若干下に落ちてしまうが、それによって確実に紙にインクが付くようになる。だが、そこまでゆるくなっているわけではないのでペンを上げてもペン先が紙につきっぱなしという事態にはならない。 #ref(2016b/Member/god22ila/Mission1/IMG_0452.JPG,50%,アーム) #ref(2016b/Member/god22ila/Mission1/IMG_0457.JPG,50%,アーム2) アームの取り付け *プログラム [#r2fc00fa] float GetAngle(float d) { const float diameter = 5.45; const float pi = 3.1415; float ang = d/(diameter*pi)*360.0; return ang; } この関数は資料のp31に載っているもので、距離dから車輪の回転数を計算してくれるものである。これはかなり正確らしいが、実際に動かすと多少のずれが生じるので、実際に動かして検討してみる必要がある。 *まとめ [#i37e3d8c] 今回のロボットはfloat GetAngle(float d)という関数を用いたが、タイヤと紙の間の摩擦や電池の状態によってかなりの誤差が出てしまい、頭の中で思い描いていたイメージとだいぶ違う動きをしてしまったので、数値を変えて動かすことを何回もくりかえした。 -aiueo +yfyuf +ygy