今回のロボットは、モーターを球をつかむ用のアームで2つ、ロボットの車部分で2つ用いた。することによって、スムーズにロボットが動くと思ったからだ。NXTを通信することによって4台のモーターを動かすことができる。今回のロボットはセンサーの位置を工夫した。課題2での失敗を反省して、センサーをタイヤの軸となるべく重なるように取り付けた。することによってロボットが回転するとき、センサーが大きく黒線からずれるのを防ごうと思った。紙とセンサーをほぼ水平にしてより正確に色を判断できるようにした。上記の通り、アームの方には2つのモーターを使用しそれぞれアームの上下運動と開閉運動に使った。開閉運動をするアームの方はギアをたくさんつけて、1つのモーターで左右の開閉ができるようにした。上下運動の方はひし形の形をした部分の角の点を回転させることでそれを可能にした。モーターをロボットに直接つけて上下させようとすると先端についているモーターやアームが重すぎて上下する用のモーターに負荷がかかる。僕たちは、アームのモーターに小さいギア、ひし形の角の側に大きなギアを付けることでモーターにかかる負担を少なくして、安定した動作の実現と部品破損のリスクの軽減に成功した。今回はNXT2台(マスター側とスレーブ側)を通信させて、マスター側はロボットの移動を、スレーブ側はアームの開閉と上下をそれぞれ担当している。ライントレースの際、センサーの判定をより繊細なものにするためにセンサーの値を5段階で判定した。NXTのモニター機能でセンサーが完全に線の上に乗っかっている時と白いところにいるときの数値を計り、それぞれをblackとwhiteと定義する。よって、black以下の数値の時は線上、white以上の数値の時は線外、これらの数値の間の場合は白いところと黒線の境目の灰色のところにセンサーがあるということになる。今回のプログラムでは定義を次のようにした。