- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-11-22T13:45:32+09:00","Hattri","Hattri")
#author("2019-11-22T16:37:56+09:00","Hattri","Hattri")
[[2019b/Member]]
#contents
* 課題 [#c5dce602]
ペアの似顔絵を描く。
*書き方と目標値[#r965c600]
ロボットに直接鉛筆を縛り付け、ロボットに車輪をつけて走らせ、ロボットの重心の動きで表現する。
#ref(本体写真 (1).png)
目標は下図の通り。基本的にロボットの前進と回転のみで絵を描くために、このロボットが何%のモータの働きで何秒進めばどれくらい進むか。さらにプログラムでの回転角と実際の回転角の誤差を測定・修正し、その情報から素となる絵を描いた。
#ref(似sinn顔絵理想.jpg)
*ロボットの機構と工夫 [#k53a1f45]
ロボットに直接鉛筆を縛りつけている構造上、鉛筆が回転の中心についていなければ反転する際に弧を描いてしまうため本体の回転の中心となるところに棒を通し、複数の輪ゴムの張力の拮抗を利用して鉛筆を垂直に立てた。
#ref(鉛筆&輪ゴムsinn.png)
*プログラム [#l2941317]
プログラムは以下の通り。
#!/usr/bin/envpython3
fromev3dev2.motorimportMoveTank,OUTPUT_B,OUTPUT_C
tank_drive=MoveTank(OUTPUT_B,OUTPUT_C)
tank_drive.on_for_seconds(25,25,0.75)
tank_drive.on_for_degrees(25,-25,330)
tank_drive.on_for_seconds(25,25,0.7)
tank_drive.on_for_degrees(25,-25,-100)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,-100)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,-350)
tank_drive.on_for_seconds(25,25,0.4)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(70,70,0.1)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(25,25,0.4)
tank_drive.on_for_degrees(25,-25,-200)
tank_drive.on_for_seconds(25,25,0.4)
tank_drive.on_for_degrees(25,-25,-120)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,-150)
tank_drive.on_for_seconds(70,70,0.1)
tank_drive.on_for_degrees(25,-25,-245)
tank_drive.on_for_seconds(70,70,0.1)
tank_drive.on_for_degrees(25,-25,245)
foriinrange(4):
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(70,70,0.1)
tank_drive.on_for_degrees(25,-25,-245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,-245)
tank_drive.on_for_seconds(70,70,0.1)
foriinrange(4):
tank_drive.on_for_seconds(25,25,0.25)
foriinrange(4):
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,330)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,100)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,100)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,150)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,-230)
tank_drive.on_for_degrees(25,-25,245)
foriinrange(4):
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(70,70,0.1)
tank_drive.on_for_degrees(25,-25,-245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,-245)
tank_drive.on_for_seconds(70,70,0.1)
foriinrange(4):
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,245)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,330)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,100)
tank_drive.on_for_seconds(25,25,0.25)
tank_drive.on_for_degrees(25,-25,100)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,150)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,-230)
tank_drive.on_for_seconds(25,25,0.5)
tank_drive.on_for_degrees(25,-25,-200)
tank_drive.on_for_seconds(25,25,1)
*結果と反省 [#f478ec6f]
うまく書くことができなかった。
#ref(似sinn顔絵結果.jpg)
原因はモータの充電が不十分な時に基本値を測定したため、充電の具合によって基本値が変わってしまったこと。さらに回転角や秒数が一つ一つは誤差でも、全体で大きなズレを生んでしまった。
*反省から [#b7803f8f]
本体自体を車輪で動かして表現するとどうしても大きな絵を描かざるをえないし、前述の通り少しの誤差が積もって大きなズレとなってしまう。これから、次に作成するロボットは動かす部品を最小限にする機構を用いて作りたい。