†チームメイトの似顔絵を描くロボットを製作しなさい。†xyプロッタ型のロボットを作りました。ロボットの前面と後面です。2つのモータを使いx方向、y方向にペンを動かします。NXT本体とモータをコードでゆとりをもってつなげられるようNXT本体は中央に取り付け、また重さに耐えられるように下に車輪を付けました。台車部分はy方向に動きます。台車部分には上側部分を乗せるためのレールが付けられていて、レールに沿って上側部分が移動します。右下写真の右モータはy方向に動かすためのタイヤを回転させるためのもの、左モータはペンを上下させるためのものです。前輪と後輪を歯車を使い同期させ空回りしないようしたのですが、それでも滑ってしまうこともあります。タイヤの下には、レールの間にはまるように出っ張った部分があります。ペンを持つところはペンをはさめるように薄いプレートで厚みを調整し、ペンの上側はブロックで固定しています。3.14/180;PenUpはペンを上げる、PenDownはペンを下げるためのものです。RADIANは角度の単位を(°)から(rad)に変えるためのものです。}}図のようにx半径rx、y半径ryの楕円を書く時、微小部分AからBまで動かすことを考えます。x方向にrxcos(θ+dθ)-rxcosθ、y方向にrysin(θ+dθ)-rysinθ動かせばよいことがわかります。2つのモータを一度に動かすのは難しいので、x方向に動かしてからy方向に動かしています。これをθ=0°からθ=360°まで繰り返せば楕円になり、一部分のみにすると弧がかけます。モータの回転角度は整数のため途中で移動距離をintに代入し整数に直します。この方法で書くため、なめらかな曲線はかけず、ぎざぎざになってしまいます。Y);}x方向にXだけ動かしたのち、y方向にYだけ動かします。PenUp;}かき始めるところにペン持っていき、ペンを下ろし、線をかき、ペンを上げるプログラムです。PenUp)は四角をかくものです。//L}サブルーチンを利用してメインプログラムを書いています。左は書き順(プログラムのコメント部分に対応)、右は完成した似顔絵です。†うまくかけたほうだと思いますが、ペンが高すぎると線をかけず、低すぎるとタイヤが空回りしてx方向にうまく動かないという問題がありました。そのためx方向に動かすときは速度を落としたり、初期状態を調節していましたが、この問題を解決するためにはペンを上下させる機構にペンを下げようとしても一定以上は下がらないようにする仕組みが必要だと感じました。