#author("2019-11-15T17:34:44+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]
本体自体を車輪で動かして表現するとどうしても大きな絵を描かざるをえないし、前述の通り少しの誤差が積もって大きなズレとなってしまう。これから、次に作成するロボットは動かす部品を最小限にする機構を用いて作りたい。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS