2012/04/30

Роботоор хөл бөмбөг тоглох: байршил олох


Эхлэл нь: Роботоор хөл бөмбөг тоглох: Бөмбөг таних

Сарын өмнө Германы Магдебюрг хотод Robocup German Open гэж тэмцээн болов. Гурван удаа тоглож гурван удаа хожигдоод тойргоосоо ч гарсангүй :) Нэлээд туршлага суув. Түрүүлсэн баг гэхэд л хорь, гуч гаруй хүнтэй, харин манайх дөрвүүлээ, хамгийн бага хүнтэй баг байлаа. Дараа жил гайгүй тоглохыг хичээнэ ээ...

За энэ удаа робот өөрийгөө хөл бөмбөгийн талбай дээр хаана байгааг яаж олох тухай бичье. Хавтгай дээр 2 цэгийн координат мэдэгдэж байвал 3 дахь цэгийн координатыг олохыг triangulation гэдэг.  Робот харагдаж байгаа хаалга, торгуулийн талбай, булангийн координатыг ашиглаад tringulation хийж өөрийн байгаа байршлаа тодорхойлж болно. Энэ бол хамгийн амархан арга. Гэхдээ амьдрал дээр найдвартай ажиллахгүй. Камераас ирж байгаа зургаас computer vision хаалга, цагаан зураас гэх мэт объектуудын координат олоход робот хөдлөхгүй байлаа ч signal noise-оос болоод координат нь үргэлж ийш тийшээ тодорхой хэмжээгээр үсчинэ. Заримдаа тухайн орчны гэрлээс ч болоод юм уу хайж байгаа объект яаг урд нь байсан ч computer vision заримдаа тухайн объектыг олдоггүй. Эсвэл юу ч байхгүй газар гэнэт худлаа объект олно. German Open дээр зохион байгуулагч нар заримдаа мини банзалтай хүүхнүүдийг хөөж явуулаад байлаа. Учир нь роботууд шалдан гуяа шилбийг шар хаалгатай андуураад гоол хийх гэж оролдоод байв :) Иймэрхүү зүйлсээс болоод triangulation амьдрал дээр ашиглагддаггүй.

Нэгэнт computer vision-оос 100% найдвартай мэдээлэл ирдэггүй тул магадлалын онол ашиглах хэрэгтэй болдог. Нэг ёсондоо хаалга яаг энэ координатад байна гэх биш харин хаалга тийм координатад ийм магадлалтай байх боломжтой шүү гэсэн мэдээлэл ирнэ. Үүнээс хамаараад роботын байршил бас тодорхой магадлалтай гарна. Зүүн доод буланд байх магадлал 50%, баруун дээд буланд байх магадлал нь 50% гэх мэт. Ер нь роботын ихэнх онол магадлалын онол дээр суурилсан байдаг. Жишээ нь роботыг чанх урагшаа 1 метр урагшаа яав гэж тушаахад робот тухайн араа шүдний элэгдэл гэх мэт эсэн бус зүйлсээс хамаараад дандаа хажуу тийшээгээ далийна, бас 1 метрээс илүү дутуу явна. Энэ бүхэнд магадлалын онол ашиглана.

Магадлалын онол ашиглаж роботын байршил тогтоох хэд хэдэн арга бий. Тэр дундаас хамгийн амархан бөгөөд найдвартай ажилдаг нь particle filter. Ажиллах зарчим нь тун хялбар. Эхлээд талбай дээгүүр тодорхой тооны (1000 ширхэг ч юм уу) тоосонцор (particle гэдгийг ингэж бүдүүлэг орчуулав) санамсаргүйгээр жигд тараана. Тоосонцор болгон роботын байж болох байрлалыг заана, олон ширхэгтэй болох тусам байршлыг яваандаа нарийн тодорхойлно.

Туршилт хийх гэж өөртөө нэг жижигхэн simulation бичсэн юм. Тэрэн дээрээ particle filter-ийг тайлбарлаад явъя. Доорх зураг дээр simulation эхлэхээс өмнө 500 ширхэг тоосонцор жигд тараасан байгаа байдал:

Дээрх зураг дээрх тас хар цагираг simulation болох гэж байгаа роботыг дүрсэлнэ. Энэ роботоос гарсан хоёр улаан зураас камерын харах өнцгийг үзүүлнэ. Энэ өнцөг дотор харагдсан хаалганы шонгуудын координатыг normal distribution-ы тусламжтайгаар signal noise-той болгоно. Үүгээрээ нөгөө computer vision-оос ирж байгаа мэдээлэл ийш тийшээ үсчдэгийг загварчилна. Роботын хөдөлгөөнийг бас normal distribution-аар загварчилсан. 90 градус эргэ гэхэд яаг 90 эргэхгүй оронд нь 95 ч юм уу 87 градус эргэх гэх мэт.

Computer vision-оос мэдээлэл ирэхэд тэрийгээ тоосонцор болгонтой тулгаж тэр тоосонцор роботын жинхэнэ байршил мөн эсэх магадлалыг бодож олно. Хэрвээ computer vision-оос хоёр шонгийн координат ирсэн бол хоёр шон харж байгаа тоосонцор өндөр магадлал, нэг шон харж байгаа тоосонцор дунд зэргийн, ямар ч шон олж харахгүй байгаа тоосонцор (эгц дээш доошоо харсан) маш бага магадлал авах жишээтэй.

Магадлал бодсоныхоо дараа тоосонцруудаасаа яаг ижилхэн тооны тоосонцрууд сонгож авна. Энэ үйлдлийг resampling гэдэг. Ингэж сонгохдоо магадлал ихтэй тоосонцрыг сонгож авах боломж өндөр, мөн олон удаа сонгож авч болно. Магадлал багатай тоосонцруудыг цөөхөн сонгоно. Нэг ёсондоо аяндаа л роботын жинхэнэ байршилтай төстэй тоосонцрууд амьд хоцроод бусад тоосонцрууд сонгогдохгүй устаад алга болно гэсэн үг. Гэхдээ нийт тоосонцрын тоо үргэлж тогтмол байна.

Доорх зураг  зөвхөн нэг шон харж байгаа тохиолдолд тоосонцрууд хэрхэн хуваагдсаныг харуулав. Өөрийн болон өрсөлдөгчдийн хаалга гэж ялгахгүй байгаа тул тоосонцрууд талбай дээр хоёр хуваагдсан байна. Тоосонцруудаас роботын байршлыг олохдоо тоосонцруудын дундаж координатыг бодно. Доорх тохиолдолд бүх тоосонцроо хоёр хэсэгт хуваагаад тус бүрд нь дунджийг нь бодно. Тэгээд тэр хоёр координатаа роботын байршил болгож ашиглана.
Робот хөдлөх болгонд бүх тоосонцруудыг бас адилхан хөдөлгөнө. Гэхдээ нөгөө магадлалынхаа онолыг ашиглана. Робот урагшаа 1 метр явахад тоосонцруудын заримыг нь 1.1 метр, заримыг нь 0.9 метр хөдөлгөнө. Заримыг нь баруун тийшээ эсвэл зүүн тийшээ хазайлгана. Тэгэхээр аяндаа тоосонцрууд салж сарниад эхэлнэ. Ер нь бол сенсороос мэдээлэл ирэхэд тоосонцрууд хоорондоо бөөгнөрөөд, хөдлөх болгонд салж сарнидаг. Доорх зураг өмнөх зураг дээр байгаа робот дээшээгээ хэсэг хугацаанд ямар ч шон харахгүй явахад тоосонцрууд хэрхэн салж сарниж байгааг үзүүлж байна:
Хялбарчлаад тайлбарлавал particle filter гэж нэг иймэрхүү. Үүнийг өнөөдөр robocup-ын багууд, жолоочгүй автомашин гэх мэт роботын бүх салбарт роботын байршил тогтооход ашиглаж байна.

Танд хэрвээ сонирхолтой санагдсан бол дээрх дэлгэцийн агшнууд хийхэд ашигласан simulation программыг маань эндээс татаж аваад туршиж үзээрэй.

No comments:

Post a Comment