Robotyka, Embedded, C
Po zlutowaniu nowego PCB, zgodnie z planem opisanym poprzednio, przystąpiłem do strojenia regulatorów silników. O ile z ruchem postępowym poszło szybko – w końcu robiłem to już któryś raz – tak z ruchem obrotowym natrafiłem na kolejne problemy. Jako sprzężenie zwrotne dla regulatora używam żyroskopu i okazało się, że odczyty są mocno zaszumione. Zakłócenia są […]
Po zlutowaniu nowego PCB, zgodnie z planem opisanym poprzednio, przystąpiłem do strojenia regulatorów silników. O ile z ruchem postępowym poszło szybko – w końcu robiłem to już któryś raz – tak z ruchem obrotowym natrafiłem na kolejne problemy. Jako sprzężenie zwrotne dla regulatora używam żyroskopu i okazało się, że odczyty są mocno zaszumione. Zakłócenia są […]
Pracując nad regulatorami silników zrobiłem zwarcie na płytce czyniąc ją niezdatną do użytku. Pisałem o tym w poprzednim tekście o Micromouse – link. Miałem w zapasie jeszcze części i PCB, więc przystąpiłem do lutowania. Niestety na drugiej płytce również miałem problemy z poprawnym działaniem robota. Przy okazji spaliłem programator ostatecznie tracąc szanse na sprawdzenie czegokolwiek […]
Pracując nad regulatorami silników zrobiłem zwarcie na płytce czyniąc ją niezdatną do użytku. Pisałem o tym w poprzednim tekście o Micromouse – link. Miałem w zapasie jeszcze części i PCB, więc przystąpiłem do lutowania. Niestety na drugiej płytce również miałem problemy z poprawnym działaniem robota. Przy okazji spaliłem programator ostatecznie tracąc szanse na sprawdzenie czegokolwiek […]
W dobie Agile projekty informatyczne są często traktowane jako wiele następujących zaraz po sobie sprintów. Można się spotkać z głosami, że taki projekt to raczej maraton, gdzie powinniśmy się skupiać na celu w dłuższej perspektywie. Jednak indywidualny bieg nie oddaje dobrze wielu niuansów związanych z współpracą w zespole, dużo lepszym porównaniem jest wyścig kolarski. O […]
W dobie Agile projekty informatyczne są często traktowane jako wiele następujących zaraz po sobie sprintów. Można się spotkać z głosami, że taki projekt to raczej maraton, gdzie powinniśmy się skupiać na celu w dłuższej perspektywie. Jednak indywidualny bieg nie oddaje dobrze wielu niuansów związanych z współpracą w zespole, dużo lepszym porównaniem jest wyścig kolarski. O […]
Podstawą TDD jest szybki feedback jaki otrzymujemy z unit testów. Oznacza to, że kompilacja i uruchomienie testów powinno trwać kilka sekund. Kluczem do osiągnięcia tak krótkiego czasu jest odpowiednio skonfigurowany system buildowania. Wiadomo, że w te kilka sekund nie uda nam się zbudować od zera całego projektu. System buildowania musi więc udostępniać nam odpowiednie opcje. […]
Podstawą TDD jest szybki feedback jaki otrzymujemy z unit testów. Oznacza to, że kompilacja i uruchomienie testów powinno trwać kilka sekund. Kluczem do osiągnięcia tak krótkiego czasu jest odpowiednio skonfigurowany system buildowania. Wiadomo, że w te kilka sekund nie uda nam się zbudować od zera całego projektu. System buildowania musi więc udostępniać nam odpowiednie opcje. […]
Aby mikrocykl TDD Red-Green-Refactor był efektywny, kompilacja i wykonanie testu powinny trwać kilka sekund. W praktyce oznacza to, że testy nie są wykonywane na docelowej platformie i należy podjąć dodatkowe kroki w celu wykrycia ewentualnych problemów związanych ze sprzętem. W poprzednim wpisie wytłumaczyłem jak może w tym pomóc dual targeting. Dzisiaj opiszę jak powinien wyglądać […]
Aby mikrocykl TDD Red-Green-Refactor był efektywny, kompilacja i wykonanie testu powinny trwać kilka sekund. W praktyce oznacza to, że testy nie są wykonywane na docelowej platformie i należy podjąć dodatkowe kroki w celu wykrycia ewentualnych problemów związanych ze sprzętem. W poprzednim wpisie wytłumaczyłem jak może w tym pomóc dual targeting. Dzisiaj opiszę jak powinien wyglądać […]
Tworząc systemy embedded musimy zmierzyć się z tymi samymi problemami, co przy tworzeniu innych rodzajów oprogramowania, czyli między innymi: Zmieniającymi się wymaganiami. Zaburzaniem działania istniejących funkcjonalności po wprowadzeniu zmian. Napiętymi terminami. Rosnącym z czasem skomplikowaniem systemu utrudniającym jego utrzymanie i rozszerzanie. Poza tym istnieje również cała gama dodatkowych problemów, specyficznych dla systemów embedded. Są one […]
Testowanie kodu, który nie wykorzystuje zewnętrznych zależności jest stosunkowo proste. W większości przypadków testowany moduł współpracuje jednak z innymi elementami systemu. Stawia to przed testami dwa wyzwania – po pierwsze powinny poprawnie działać, a po drugie sprawdzać poprawność tej współpracy. Nie jest to zadanie proste, a zewnętrzne zależności są jednym z głównych czynników utrudniających testowanie. […]
Testowanie kodu, który nie wykorzystuje zewnętrznych zależności jest stosunkowo proste. W większości przypadków testowany moduł współpracuje jednak z innymi elementami systemu. Stawia to przed testami dwa wyzwania – po pierwsze powinny poprawnie działać, a po drugie sprawdzać poprawność tej współpracy. Nie jest to zadanie proste, a zewnętrzne zależności są jednym z głównych czynników utrudniających testowanie. […]
Ostatnio w pracy miałem za zadanie dokonać optymalizacji pewnego fragmentu kodu. Postanowiłem, że to dobra okazja, aby zebrać trochę porad dotyczących optymalizacji i się nimi podzielić. Część porad odnosi się konkretnie do C, ale większość można uogólnić na każdy język. Entuzjaści wyciskania procesorów do granic możliwości mogą jednak poczuć się zawiedzeni, ponieważ nie będę się […]
Ostatnio w pracy miałem za zadanie dokonać optymalizacji pewnego fragmentu kodu. Postanowiłem, że to dobra okazja, aby zebrać trochę porad dotyczących optymalizacji i się nimi podzielić. Część porad odnosi się konkretnie do C, ale większość można uogólnić na każdy język. Entuzjaści wyciskania procesorów do granic możliwości mogą jednak poczuć się zawiedzeni, ponieważ nie będę się […]
Robotyka, Embedded, C
Programowaniem zajmuję się zawodowo od 2012 roku. Moją specjalnością są systemy embedded, pracowałem już nad systemami safety critical, inteligentymi budynkami, czy Internet of Things. Jestem również wielkim fanem robotyki i w wolnym czasie robię własnego robota micromouse.