Sesja terenowa CS
Tło
Latem 2020 roku studiowałem CSCI370, czyli „Zaawansowaną Inżynierię Oprogramowania”, jako część mojego licencjackiego programu CS w Colorado School of Mines. CSCI370 to kurs, który wymaga od studentów zaprojektowania, zaimplementowania i udokumentowania rozwiązań związanych z oprogramowaniem dla firmy. Pozwala studentom zastosować wiedzę zdobytą na zajęciach do rzeczywistych problemów informatyki. Więcej o kursie możesz dowiedzieć się tutaj.
Na kursie można samodzielnie zdecydować, nad jakim projektem/firmą się pracuje. Kurs udostępniał pliki PDF opisujące każdy projekt i każdą firmę. Ostatecznie zdecydowałem się pracować nad projektem opublikowanym przez firmę Lunar Outpost o nazwie Wykrywanie poślizgu kół w czasie rzeczywistym i korekcje błędów dla ulepszonej nawigacji księżycowej. Ponieważ nazwa jest długa, nazwijmy projekt aliasem „Wykrywanie poślizgu kół”.
Problem
Lunar Outpost to startup próbujący stworzyć autonomiczne łaziki księżycowe. Na Księżycu jest dużo pyłu księżycowego, który jest znany z powodowania dużego poślizgu kół. Nie jest to idealne rozwiązanie, ponieważ poślizg kół może sprawić, że autonomiczne systemy stracą orientację w rzeczywistej lokalizacji. Na Ziemi rozwiązuje się to za pomocą danych GPS, aby skorygować wszelkie odchylenia spowodowane poślizgiem kół. Problem z GPS polega jednak na tym, że działa on tylko dzięki temu, że 30+ satelitów nawigacyjnych stale krąży wokół Ziemi na orbicie i nadaje unikalne sygnały, które pozwalają komputerom obliczyć ich położenie. Ale na Księżycu obecnie nie ma czegoś takiego jak GPS. Wiedząc o tym, trzeba użyć innej metody niż GPS, aby wykryć poślizg kół. Bardziej szczegółowy raport dotyczący problemu projektu można zobaczyć tutaj.
Członkowie zespołu
Ten projekt nie był prostym zadaniem, więc musiał być wykonany zespołowo. Zespół składał się z pięciu innych studentów Colorado School of Mines:
- Mehmet Yilmaz
- Kane Bruce
- Braedon O’Callaghan
- Liam Dempsey
- Kevin Grant
Projekt wymagał od nas znajomości ROS, C++, Pythona, Linuksa, Raspberry Pi i Arduino. Większość z nas miała doświadczenie z jedną lub kilkoma z tych technologii, ale ja byłem jedyną osobą z doświadczeniem w ROS, ponieważ używałem ROS na zajęciach z Human Centered Robotics (CSC470) w semestrze wiosennym 2020. Z tego powodu już na początku pomagałem wszystkim nadrobić zaległości w zakresie ROS i tego, jak dla niego programować.
Wyzwania
W tym projekcie było wiele wyzwań. Ale największym wyzwaniem, z jakim się zmierzyliśmy, był brak dostępu do prawdziwego robota do testów. Wynikało to z COVID, który sprawił, że wszystko odbywało się zdalnie i uniemożliwił nam pracę w laboratorium/budynkach Lunar Outpost. Z tego powodu musieliśmy korzystać z symulacji.
Ponadto zapoznawaliśmy się z badaniami akademickimi z WVU Navigation Lab, aby zorientować się, jak problem poślizgu kół mógłby zostać rozwiązany dla przypadku użycia Lunar Outpost. Co dla nas, jako studentów drugiego i trzeciego roku, było trudniejsze, niż się spodziewaliśmy.
Kolejnym wyzwaniem, z którym się zmierzyliśmy, był czas, jaki mieliśmy na pracę nad tym projektem. CSCI370 to miesięczny kurs. Ale sam problem jest ogromnym zagadnieniem, nad którego rozwiązaniem/dopracowaniem wiele firm i badaczy pracuje od dziesięcioleci. Zatem jeden miesiąc to zdecydowanie za mało, aby rozwiązać ten problem. Mimo wszystkich tych wyzwań szliśmy dalej i dopilnowaliśmy, aby dostarczyć rezultat.
Zakończenie
W tym wpisie bardzo chciałbym przedstawić bardziej szczegółowe wyjaśnienie naszych rozwiązań. A także przygotować odpowiednie zakończenie wyjaśniające, co odkryliśmy i jakie były końcowe wyniki. Ale niestety ja i moi koledzy z zespołu podpisaliśmy umowę o zachowaniu poufności (NDA), która uniemożliwia nam ujawnianie jakichkolwiek poufnych informacji o tym projekcie. Wszystkie informacje, które podałem powyżej, są publiczne i można je znaleźć w internecie.
Podczas tego projektu naprawdę nauczyliśmy się korzystać z ROS i tworzyć symulacje za pomocą ROS i Gazebo. Zyskaliśmy też lepsze zrozumienie w dziedzinie badań nad wykrywaniem poślizgu kół. Mieliśmy również zaszczyt spotkać się z kilkoma naukowcami/badaczami z WVU Navigation Lab.
Wiedząc to wszystko, muszę powiedzieć, że ten projekt pozwolił mi objąć w zespole rolę lidera, pełnić funkcję edukatora pomagającego moim kolegom lepiej zrozumieć ROS i dał mi więcej doświadczenia w ROS, Gazebo i Pythonie. Wystawił mnie też na problem poślizgu kół, z którym nie miałem wcześniej do czynienia, zanim pracowałem nad tym projektem. Ogólnie jestem wdzięczny, że Lunar Outpost poświęcił czas ze swojego napiętego harmonogramu, zwłaszcza podczas COVID, aby pozwolić nam pracować nad tym projektem. Jestem również wdzięczny za to, że miałem niesamowitych kolegów z zespołu, którzy naprawdę ciężko pracowali nad tym projektem.