Балансирующий на двух колесах робот - довольно сложная в реализации конструкция - таково распространенное мнение. Отчасти это так. Для изготовления такого робота требуются акселерометры, гироскопы и сложное программное обеспечение. Но простого балансирующего робота можно построить даже из деталей ЛЕГО с применением достаточно простых датчиков и набора Lego Mindstorms. Именно такого лего-робота построил в 2003 году Стив Хассенплуг (Steve Hassenplug).
Стив назвал своего лего-робота LegWay и использовал два оптических датчика расстояния EOPD (ElectroOptical Proximity Detector) от HiTechnic.
Устройство лего-робота достаточно легко понять, взглянув на приведенную фотографию. Два датчика установлены таким образом, чтобы контролировать расстояние до поверхности, по которой движется робот. Если расстояние до поверхности под датчиками уменьшается или, наоборот, увеличивается, робот производит соответствующее выравнивающее движение при помощи своих двигателей. Лего-робот Стива Нассенплуга умел балансировать, бегать по линии или кружиться на месте.
Расположение датчиков на роботе Джеймса Мафиуса
Более стабильную конструкцию предложил Джеймс Мафиус (James Matthews) в ноябре 2004 года. Он использовал стандартные ЛЕГО-датчики, реагирующие на отраженный свет, расположив их спереди и сзади робота. Такая конструкция лего-робота позволяет сделать балансирование более устойчивым, но для того, чтобы бегать по линии, лучше использовать дополнительные сенсоры.
Код, управляющий роботом, очень простой. Джеймс Мафиус написал его на NQC, используя программную среду BricxCC. Возможно, при использовании этого кода вам понадобится индивидуальная калибровка датчиков.
task main ()
{
// Setup everything
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetPower(OUT_A+OUT_C, OUT_FULL);
// Now balance!
until(false) {
if (SENSOR_1 >= SENSOR_1_THRESHOLD) {
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(1);
}
if (SENSOR_3 >= SENSOR_3_THRESHOLD) {
OnRev(OUT_A);
OnFwd(OUT_C);
}
}
}
Балансирующего лего-робота можно построить и из набора Mindstorms NXT. Филипп Харбейн (Philippe Hurbain) предложил конструкцию робота с использованием всего одного датчика. Своего робота Филипп назвал NXTway.
Для написания программы использовались NBC и среда программирования BricxCC.
Код программы можно скачать здесь, а готовую откомпилированную программу здесь. Для загрузки откомпилированной программы в NXT используйте кнопку загрузки на панели в стандартной среде программирования LEGO MINDSTORMS NXT.
В феврале 2007 года Рё Ватанаби (Ryo Watanabe) из Waseda University, вдохновленный конструкциями лего-роботов Хассенплуга и Харбейна, создал свою продвинутую версию балансирующего робота с использованием гиро-сенсора. Робот был назван NXTway-G.