Robotyka, Embedded, C
Po wyeliminowaniu błędów w PID opisanych w poprzednim artykule, mogłem przejść do kolejnych poprawek w module silników. Moją uwagę przykuł regulator prędkości kątowej. Postanowiłem wprowadzić w nim zmiany, aby zwiększyć precyzję obrotu robota i zwiększyć jego stabilność. Do tej pory zdarzało mi się, że robot się wzbudzał i stojąc w miejscu wykonywał czasem niewielkie skręty. […]
Dobry regulator prędkości silników jest niezbędny do nawigacji w labiryncie. Robot powinien być w stanie zarówno robić małe skręty podczas jazdy w celu korekty ustawienia oraz skręty o 45, 90 i 180 stopni podczas eksploracji labiryntu i speed runu. Mój regulator powstał już jakiś czas temu, co opisywałem tu, tu i tu. Strojenie zajęło mi […]
Dobry regulator prędkości silników jest niezbędny do nawigacji w labiryncie. Robot powinien być w stanie zarówno robić małe skręty podczas jazdy w celu korekty ustawienia oraz skręty o 45, 90 i 180 stopni podczas eksploracji labiryntu i speed runu. Mój regulator powstał już jakiś czas temu, co opisywałem tu, tu i tu. Strojenie zajęło mi […]
W idealnym świecie nie testujemy szczegółów implementacyjnych jakimi są funkcje statyczne. To samo tyczy się prywatnych pól i metod klasy w językach obiektowych. Zamiast tego piszemy testy dla publicznego API i z pomocą odpowiednich mocków jesteśmy w stanie zaobserwować całe zachowanie testowanego modułu z zewnątrz. Rzeczywistość często nie jest taka różowa i musimy często jakoś […]
W idealnym świecie nie testujemy szczegółów implementacyjnych jakimi są funkcje statyczne. To samo tyczy się prywatnych pól i metod klasy w językach obiektowych. Zamiast tego piszemy testy dla publicznego API i z pomocą odpowiednich mocków jesteśmy w stanie zaobserwować całe zachowanie testowanego modułu z zewnątrz. Rzeczywistość często nie jest taka różowa i musimy często jakoś […]
Częstą wymówką, aby nie pisać unit testów jest “Tego kodu nie da się przetestować.”, otóż zwykle jednak się da, tylko trzeba chwilę pomyśleć jak się do tego zabrać. Jednym z takich trudniejszych przypadków jest testowanie nieskończonych pętli. W tym wpisie pokażę kilka technik służących do pokrycia ich unit testami. Po co nam w kodzie nieskończone […]
Częstą wymówką, aby nie pisać unit testów jest „Tego kodu nie da się przetestować.”, otóż zwykle jednak się da, tylko trzeba chwilę pomyśleć jak się do tego zabrać. Jednym z takich trudniejszych przypadków jest testowanie nieskończonych pętli. W tym wpisie pokażę kilka technik służących do pokrycia ich unit testami. Po co nam w kodzie nieskończone […]
O code review napisano już całkiem sporo. W internecie można znaleźć dokładne opisy jak powinny wyglądać, jakie dają efekty, czy ile kodu sprawdzać na raz. Dlatego nie będę dokładnie analizować tych aspektów. Zamiast tego krótko opiszę najważniejsze korzyści i kilka przydatnych technik na podstawie własnych doświadczeń. Z code review korzystałem już w wielu projektach i […]
O code review napisano już całkiem sporo. W internecie można znaleźć dokładne opisy jak powinny wyglądać, jakie dają efekty, czy ile kodu sprawdzać na raz. Dlatego nie będę dokładnie analizować tych aspektów. Zamiast tego krótko opiszę najważniejsze korzyści i kilka przydatnych technik na podstawie własnych doświadczeń. Z code review korzystałem już w wielu projektach i […]
Ostatnio czytałem książkę “Mit przedsiębiorczości”, która mówi, że każda firma od samego początku powinna mieć jasno określoną strukturę i dobrze zdefiniowane procesy. Skłoniło mnie to do refleksji jaki wpływ takie procesy mają na mnie jako pracownika. Jakie są zalety i wady pracy dla wielkiej korporacji oraz małego startupu. I jaki poziom strukturyzacji jest najlepszy dla […]
Ostatnio czytałem książkę „Mit przedsiębiorczości”, która mówi, że każda firma od samego początku powinna mieć jasno określoną strukturę i dobrze zdefiniowane procesy. Skłoniło mnie to do refleksji jaki wpływ takie procesy mają na mnie jako pracownika. Jakie są zalety i wady pracy dla wielkiej korporacji oraz małego startupu. I jaki poziom strukturyzacji jest najlepszy dla […]
Korzystając z C++ na systemach embedded najczęściej wyłączamy obsługę exceptionów. W tym artykule wyjaśnię dlaczego tak robimy oraz jakie zagrożenia z tym się wiążą. Dlaczego w embedded nie używamy exceptionów? Systemy embedded posiadają ograniczenia rozmiaru programu, wykorzystywanej pamięci i czasu wykonywania poszczególnych operacji. Wykorzystanie wyjątków rodzi następujące problemy: Czas obsługi wyjątku jest niedeterministyczny i stosunkowo […]
Korzystając z C++ na systemach embedded najczęściej wyłączamy obsługę exceptionów. W tym artykule wyjaśnię dlaczego tak robimy oraz jakie zagrożenia z tym się wiążą. Dlaczego w embedded nie używamy exceptionów? Systemy embedded posiadają ograniczenia rozmiaru programu, wykorzystywanej pamięci i czasu wykonywania poszczególnych operacji. Wykorzystanie wyjątków rodzi następujące problemy: Czas obsługi wyjątku jest niedeterministyczny i stosunkowo […]
Dobry zestaw narzędzi może niesamowicie poprawić naszą produktywność. Należę do osób lubiących automatyzację i wspomaganie się toolami przy developmencie. Szczególnie zrzucanie na toole żmudnych i ciężkich do wyegzekwowania czynności jak na przykład formatowanie kodu, czy wysyłanie komend na terminalu. W tym wpisie przedstawię kilka przydatnych narzędzi, głównie pod kątem embedded, C/C++ i STM32. Kompilator ARM […]
Dobry zestaw narzędzi może niesamowicie poprawić naszą produktywność. Należę do osób lubiących automatyzację i wspomaganie się toolami przy developmencie. Szczególnie zrzucanie na toole żmudnych i ciężkich do wyegzekwowania czynności jak na przykład formatowanie kodu, czy wysyłanie komend na terminalu. W tym wpisie przedstawię kilka przydatnych narzędzi, głównie pod kątem embedded, C/C++ i STM32. Kompilator ARM […]
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.