autopilot
Auto czy nie auto?
sceny z Total Recall z 199o zna chyba każdy (… kto nie jest millenialsem)
ostatnio miałem okazję przetestować osobiście 'gdzie jesteśmy’ w kwestii autopilotów… no może nie tak globalnie, ale mimo wszystko to było pierwsze moje spotkanie z SAMO-chodem nie tylko z nazwy.
klasyfikacja
zabawne, ale język polski dawno już był w przyszłości. zarówno 'Auto’ jak 'samochód’ sugeruje pełną automatyzację, rodem z Total Recall. Angielskie 'car’ (wóz/wagon) lepiej oddaje obecną rzeczywistość. zautomatyzowany pojazd nazwany został 'autonomicznym wozem’ (autonomous cars). najpierw warto zatem spojrzeć na klasyfikację automatyzacji, bo owszem, takowa istnieje i bardzo fajnie pokazuje gdzie jesteśmy i gdzie zmierzamy (mniej-więcej, resztę można doczytać na wiki). organizacją, która to standaryzuje jest SAE (Society of Automotive Engineers).
Poziom 0: wyświetlane ostrzeżenia
Poziom 1: automatyczne ale nie autonomiczne sterowanie pojazdem – sporadyczne wsparcie sterowania w krytycznych sytuacjach. czyli automaty wspierają jazdę ale to kierowca cały czas kieruje pojazdem i kontroluje poprawność.
Poziom 2: autonomiczne sterowanie pojazdem (przyspieszenie/hamulce/sterowanie). mimo to kierowca musi trzymać ręce na kierownicy aby być w stanie korygować pomyłki i ogólnie weryfikować jazdę.
Poziom 3: autonomiczne sterownie, jednak pojazd może wymagać ręcznej interwencji w specyficznych warunkach. kierowca musi być gotowy na przejęcie kontroli.
Poziom 4: ogólnie to już autonomiczne auto ale pojazd nadal ma kierownicę… ponieważ dotyczy to określonych obszarów. np. będzie działać w mieście i na autostradzie ale nie na drogach 3-ciej klasy.
Poziom 5: pojazd w pełni autonomiczny.
jak widać przykład z filmu to 'prawie 5′ bo z jakiś względu (IMHO brak fantazji scenarzystów) założyli, że drążek sterowniczy i ręczne sterowanie być musi. a gdzie jesteśmy dziś?
dziś
bardzo wiele pojazdów [staram się unikać kontrowersyjnej nazwy 'samochód’ bo ani nie chodzi, ani nie robi tego sam ] implementuje dziś poziomy 0-2. w zasadzie każdy wyższy model ma funkcję 'pilot assist’ lub podobne, w jakiś sposób wspierający kierowcę. daleko im jednak do autonomiczności … i to bardzo daleko, ale o tym za chwilę.
zacznę od tyłu, czyli od pojazdów w pełni autonomicznych, bo jest ich bardzo niewiele. jeśli liczyć te produkcyjne… to nie ma w ogóle. najbliżej sukcesu wydaje się być Alphabet.. czy jak kto woli Google, z projektem Waymo rozwijanym od 2o12. kolejna seria testów ulicznych ma się rozpocząć w tym roq w Arizonie – bo oprócz technologii potrzebne są jeszcze odpowiednie normy prawne, na jakich zasadach takie pojazdy w ogóle mogą się poruszać. w związkq z tym testy mogą być prowadzone tylko w niewielu regionach świata. myślę, że finalnym testem powinny być ulice Delhi (;
Waymo próbuje osiągnąć najwyższy, piąty level, ale należy traktować to jako R’n’D i nie spodziewałbym się takich pojazdów prędko na drogach. najprawdopodobniej nawet jeśli pojawią się produkcyjnie/komercyjnie to będą się poruszać w bardzo ograniczonych strefach.
4ty poziom na razie na ulicę również nie dotarł, najbliżej jest Toyota Lexus „Chauffeur”, która wygląda trochę jak wóz transmisyjny… ilość czujników i kamer jest porażająca. nie wiem czy ktoś będzie chciał jeździć takim potworem.
do poziomu 3ciego dobiło póki co Audi A8, który zresztą jeszcze nie ma akceptacji w wielu krajach.
test level 2
ja miałem okazję przez kilka tygodni potestować Volvo XC90. producent zapowiada, że mają mieć autonomiczny samochód do 2o21… ale szczerze wątpię żeby to osiągnęli. zgodnie z opisem producenta:
Pilot Assist helps provide more relaxed driving in heavy, slow-moving traffic at speeds up to 30 mph (50 km/h) on highways and major roads
bez włączenia żadnej funkcji, standardowe wsparcie ustawione jest na level 1. wykrywa zbliżanie się do linii i lekko koryguje jazdę jeśli samochód zaczyna zjeżdżać z drogi, oraz pokazuje ostrzeżenia przy zbliżaniu się do innych pojazdów – zarówno z przodu jak z boków. po włączeniu pilota, zaczynamy zbliżać się do 'samochodu’. pojazd sam utrzymuje prędkość – wyhamowuje jeśli z przodu znajduje się inny pojazd, przyspiesza, kiedy ma wolne miejsce. prędkość maksymalną ustala się bardzo prosto, z kierownicy. sama funkcja pilota jest ogólnie łatwo dostępna i prosta w obsłudze.
jeśli zdejmiemy ręce z kierownicy, to zaczną pojawiać się ostrzeżenia – kierowca musi obligatoryjnie nadzorować jazdę. i tutaj zacznę od pierwszego strzału w kolano, który wręcz nazwę po imieniu: idiotyzm. scenariusz (przetestowałem!): co się dzieje jak kierowca uparcie NIE trzyma rąk na kierownicy? to może być scenariusz, kiedy np. kierowca uśnie, zasłabnie lub inny podobny, spodziewałem się zatem, że auto zacznie gwałtownie zwalniać i zjedzie na pobocze.. albo coś przybliżonego. tymczasem… po ok 3o sec wyłącza się funkcja 'pilot assist’ i przechodzi na ręczne sterownie, zachowując prędkość. polecam zatem nie przysypiać. a przysnąć łatwo, kiedy samochód w zasadzie sam jedzie, i nawet nie trzeba się specjalnie skupiać na drodze. brawo Volvo! najbezpieczniejszy samochód świata.
to dopiero początek zawodu, jaki przeżyłem z 'semi-autonomiczną’ jazdą. żeby nie przeciągać, po prostu wypunktuję bolączki:
- pojazd wymaga namalowanych pasów i nimi się kieruje. nie potrafi sobie poradzić w miejscach gdzie pasy znikają (np. przebudowa trasy ale też skrzyżowania oraz tymczasowe pasy – totalnie się gubi)
- nie nadaje się do jazdy w korq – co było potwornym zawodem, bo to właśnie jazda w korq jest upierdliwa a prędkości są małe. po zatrzymaniu pojazdu na kilka seqnd funkcja pilota jest wstrzymywana, ale po kilq kolejnych – wyłączana. z dwojga złego lepiej, żeby wyłączyła się od razu, bo nigdy nie byłem pewien czy jeszcze działa czy już nie. w efekcie cały czas sqpiałem się na kontrolowaniu wskaźnika zamiast na drodze, żeby wiedzieć na jakie zachowanie pojazdu liczyć. bryndza.
- pomimo całkiem niezłej nawigacji, połączonej z netem, oraz czujników bocznych wskazujących czy można zmieniać pas, pojazd nigdy autonomicznie takiej operacji nie zrobi. przy zmianie pasa 'asystent’ wyłącza się na chwilę, i po wykryciu 'nowych’ pasów włącza ponownie.
- nie nadaje się do jazdy po mieście – ze względu na korki, skrzyżowania, brak automatycznej zmiany pasa itd.
- początkowo słabo wykrywał prawą linię. po deszczu nagle zaczął działać lepiej – podejrzewam więc był kłopot z czujnikiem/kamerą. system w żaden sposób tego nie wykrył/nie poinformował, co również uważam za zagrożenie.
do czego zatem można go użyć? w zasadzie tylko do wsparcia jazdy na drogach szybkiego ruchu. trzeba przyznać, że to całkiem wygodne i nawet będąc bardzo zmęczonym, pełna kontrola prędkości oraz sterowania ułatwia przejazd długich tras. chociaż i tu nie polecam usypiać, choćby z rękoma na kierownicy:
- przy stosunkowo niskich prędkościach (1oo-12o kmph) i na prawdę niewielkich krzywiznach zakrętów na autostradzie, zdarzało się, że pojazd wypadał na pas obok – jakby 'bał się’ trochę mocniej skręcić. mogło to być spowodowane problemami z czujnikiem o czym wspominałem wcześniej.
- podczas zakrętów strasznie jechał blisko prawej strony… bałem się, że walniemy w pojazd na pasie obok. nie miałem nerwa żeby przetrzymać więc korygowałem jazdę. znów być może kwestia czujnika.
- kiedy ktoś z pasa obok wjeżdżał przede mnie, czasem miałem wrażenie, że nie zdąży zwolnić. reaguje stanowczo za późno!
dodatkowo jest funkcja 'park assistant’, która pozwala w pełni autonomicznie zaparkować pojazd. ale muszą być spełnione warunki:
- tylko 'na kopertę’
- tylko z prawej strony
podsumowując
po wstępnej ekscytacji 'WOA! SAM KIERUJE!’, i dłuższych testach, jestem jednak mocno zawiedziony tym, jak daleko jeszcze jest do autonomii pojazdów na drodze. mówimy to o wypasionym wozie za 3ooKPLN, więc w standardowych modelach ze średniej półki, nawet nie wspominając o tych z niskiej, nie prędko będzie można się cieszyć dobrymi systemami.
po ostatnich wypadkach Tesli spodziewałem się, że tam autonomia jest dużo wyższa. zwłaszcza, że wedle raportu koleś zginął czytając gazetę i nie patrząc na drogą. jak jednak doczytałem, ’autopilot’ Tesli nie jest dużo bardziej rozwinięty. w tym miesiącu ma pojawić się update, dla posiadaczy hardware w wersji 3, z dodatkowymi funkcjami autonomii.
#przejechałbymsię
eN.
OneLiner vs Script, stopki i gorączka
OneLiner nie jest skryptem
pasqdny dzień. migrena, potem gorączka, a jak mam gorączkę to muszę coś napisać. czasem głupoty, ale dziś może coś sensownego. i pisząc skrypt wstrzyqjący stopki dla OWA i mobile w EXO dla paru tysięcy userów, pomyślałem o tym czemu z OneLinera zrobiło się ponad 4oo linii kodu w dwóch skryptach. nie wszyscy to rozumieją, a jeśli ktoś skrypty pisać musi, lub lubi, to powinien to bardzo dobrze (z)rozumieć. dla tego wpis, poświęcony klepaczom kodu, którzy chcą robić to lepiej.
pisanie skryptów to praca dość niewdzięczna i mało opłacalna. kiedyś sądziłem, że jak powymiatam w pisaniu PS to będę mógł na tym sensownie zarobić. fakty są takie, że za skrypty rzadko ktoś chce płacić. „bo przecież to jedno polecenie”, albo że tego się nie da używać. no i w sumie… muszę się zgodzić. skrypty na zlecenie zdarzają się, ale rzadko.
w zasadzie robię już trochę inne rzeczy, ale czasem wspieram 2gą i 3cią linię. PowerShell to moje hobby, ale w pracy oczywiście czasem się przydaje. skrypty rzadko bo:
to oczywiście subiektywna ocena, na podstawie doświadczeń własnych. wniosek jednak nasuwa się prosty – chcesz zarobić na kodowaniu, to weź się za coś, co ma interfejs, bo linia poleceń nadal straszy. jest dla nerdów, geeków i popraprańców. ewentualnie – ostatnia deska ratunq.
OneLiner nie jest skryptem. jest… łanlajnerem. nie będę wchodził w filozoficzno-semantyczne dywagacje i definicje – dla mnie nie jest to skrypt. zastosowanie onelinera jest wtedy, kiedy robi się coś bieżącego, trzeba zrobić raz i na szybko, i samemu kontroluje się przebieg. zazwyczaj to tylko jeden w wielu kroqw w długiej pracy. skrypt dla odmiany – to coś co pisze się, żeby było. żeby zostało i żeby można było tego użyć wiele razy i wielu warunkach… a co najważniejsze – żeby użyć tego mogli inni.
taka jest moja definicja.
to samo inaczej
dostałem skrypt mailem – nawet nie oneliner, miał ponad 1oo linii kodu. i prośba „weź tu tylko braqje takiego dyngsa i już. easypeasy… aaa i to ma być uruchamiane przez adminów potem”. oj. czyli celem nie jest to, co robi skrypt, tylko automatyzacja powtarzalnego zadania, przez osoby z 2giej linii. to zmienia wszystko.
zajrzałem do środka – jak na robotę admina, spoko. co prawda z 'dyngsem’ by sobie nie poradził i zrobił zapętloną enumerację – czyli wydłużył przebieg do kwadratu, co przy tysiącach elementów i przebiegu w okolicy 3-4h, nagle zrobiłoby się 3-4 dni (; … ale widać, że ogólnie ogarnia. a jak zatem powinien wyglądać skrypt 'dla kogoś’, dla 2giej linii? kilka wskazówek:
oczywiście takich przykazań można by mnożyć i wypisywać przez pół nocy, ale wybrałem te, których zazwyczaj nie znajduję nawet w skryptach zassanych z technet/codeplex/github czy innych repo – teoretycznie stworzonych do konsumpcji przez innych. tak jak zasadą House MD dla wsparcia jest 'użytkownik zawsze kłamie’, tak dla skypciarzy (a w zasadzie i w ogóle ogólnie) jest 'ludzie są leniwi’. robią minimum. chcesz napisać skrypt dobrze – napisz tak, jak byś sam chciał go użyć, pierwszy raz go widząc, nie bądź leniwy.
przykładowy szkielet skryptu, który może posłużyć jako szablon:
nie ma tu żadnego try/catch… ale jest przykład jak obsłużyć dane wejściowe i nie oszczędzać na opisach i nazwach parametrów.
jedni biegają albo chodzą na imprezy, ja sobie skrobię skrypty (; a jeśli chcesz programować zawodowo – to raczej sięgnij po VS i zacznij ogarniać jakieś .NETy, pytongi czy inne duże frameworki.
gorączka spadła, czas usnąć. miłego kodowania!
eN.
PS. contains nie jest tym, czym się wydaje.