Blog reaktywacja

Po dłuższej chwili nieaktywności na blogu, wracamy ze zdwojoną siłą i workiem pomysłów na nowe tematy. Nie jest to, jak można by myśleć, postanowienie noworoczne, do realizacji którego zabraknie za chwilę zapału. Z nową energią i nowymi autorami będziemy wypełniać nasz blog treściami, które, mamy nadzieję, Was zainteresują. Nowe wpisy i artykuły będą pojawiać się co najmniej dwa razy w miesiącu. Ich forma będzie różna; od tradycyjnych postów, przed dłuższe artykuły, po formę wideo: tutoriale, przewodniki „how to” oraz ciekawostki ze Świata MATLABa. Poruszone problemy będą natury praktycznej, a więc akcent będzie postawiony na rozwiązywanie konkretnych zagadnień i problemów inżynierskich. Nieco więcej niż dotychczas będzie tematów związanych ze statystyczną analizą danych, przetwarzaniem sygnałów, czy np. obsługą sprzętu pomiarowego. Nie zabraknie również treści poświęconych podstawom programowania w MATLABie. Każdy, niezależnie do tego czy zaczyna swoją przygodę z MATLABem czy jest bardziej zaawansowanym użytkownikiem, znajdzie na naszym blogu coś dla siebie. Już niebawem opublikujemy nieco więcej szczegółów i zakres tematyczny najbliższych wpisów. Stay tuned 😊 A dla tych którzy nie mogą się doczekać, przypominamy, że dostępny jest nasz tutorial w formie tekstowej, wprowadzający w arkana użytkowania MATLABa. Chcesz lepiej poznać MATLABa? Jesteś w dobrym miejscu!

LEGO EV3 i regulacja PID: Identyfikacja oraz automatyczne strojenie

Implementacja algorytmu PID to nie wszystko

Dzisiejszy post będzie kontynuacją ciągu artykułów na temat tworzenia algorytmu sterowania mobilnym robotem w środowisku Simulink. Dla przypomnienia, w ostatnim wpisie zajęliśmy się omówieniem robota oraz implementacją podstawowych algorytmów obsługujących silniki, doczytujących dane z enkoderów i wyliczających faktyczne prędkości obrotowe oraz liniowe kół robota. Również, na samym końcu rozpoczęliśmy implementację regulatora PID pozwalającego zadawanie konkretnej prędkości robota.

Czytaj dalej LEGO EV3 i regulacja PID: Identyfikacja oraz automatyczne strojenie

LEGO EV3, ciąg dalszy: Sterowanie robotem mobilnym

Roboty w akcji

W ostatnim wpisie na temat programowania LEGO Mindstorms z wykorzystaniem MATLABa i Simulinka przedstawione zostały podstawowe zagadnienia związane z podłączaniem sterownika LEGO EV3 do komputera, komunikacją z Simulinkiem oraz wgrywaniem utworzonych algorytmów do urządzenia LEGO. Dziś, tak jak obiecano, rozpoczynamy cykl prezentujący wybrane roboty w akcji.

Na pierwszy rzut zajmiemy się programowaniem klasycznego robota mobilnego, jeżdżącej platformy, na podstawie której omówionych zostanie kilka ważnych aspektów tworzenia algorytmów sterujących robotem, przydatnych również przy innych konstrukcjach.

Czytaj dalej LEGO EV3, ciąg dalszy: Sterowanie robotem mobilnym

Programowanie LEGO Mindstorms EV3 z użyciem Simulinka

Zabawa na poważnie

Klocki LEGO większości z nas kojarzą się z beztroską zabawą w dzieciństwie, gdy czas nie odgrywał żadnej roli, kluczowe było natomiast stworzenie konstrukcji, która efektownie zapełni nasz plac budowy, skutecznie ochroni przed atakami nieprzyjaciela, a przy okazji wzbudzi podziw w oczach zapatrzonych w nas rodziców i dziadków. Zapewne dużo mniej osób miało styczność z serią LEGO Mindstorms, w której oprócz samych klocków znajdziemy także zestaw podzespołów elektromechanicznych, takich jak czujniki czy serwomotory oraz kontrolująca je jednostka centralna. Zestaw LEGO Mindstorms dzięki połączeniu tych wszystkich wymienionych elementów w całość pozwala nam na tworzenie programowalnych robotów.
Czytaj dalej Programowanie LEGO Mindstorms EV3 z użyciem Simulinka

MATLAB Tutorial #11

Import danych z wielu plików

W zasadzie tutorial został zakończony. Celem dotychczasowych wpisów serii było zaznajomienie użytkownika ze środowiskiem MATLAB na tyle, by mógł on usiąść przed komputerem i zacząć z programem w miarę wygodnie pracować. Oczywiście w praktyce, gdy przychodzi zmierzyć się z rzeczywistym problemem, dość szybko okazuje się, że czegoś ważnego w tutorialu nie było… No i jest to jak najbardziej zrozumiała sytuacja. Wszystkiego zamknąć w krótkim samouczku nie sposób, można jednak poruszyć kilka dość często pojawiających się problemów. A jeden z najczęściej pojawiających się, to problem sprawnego odczytu danych z wielu plików.
Czytaj dalej MATLAB Tutorial #11

Simulink, Arduino i LCD

Simulink, Arduino i LCD

Biblioteka Simulink Support for Arduino zawiera całą gamę bloków umożliwiających komunikację pomiędzy Arduino i światem zewnętrznym. Można korzystać w we/wy cyfrowych i analogowych, portu szeregowego a ostatnio nawet interfejsów I2C i SPI, które zapewniają obsługę prostych układów peryferyjnych. Jednak może się zdarzyć, że będziemy chcieli wykorzystać jakiś bardziej złożony układ, który nie jest obsługiwany z poziomu Simulinka, Zestaw gotowych bloków z biblioteki Simulinka jest niewystarczający choćby w przypadku chęci obsługi podłączonego do Arduino modułu LCD. Na szczęście w takich wypadkach można zapewnić sobie obsługę niestandardowego urządzenia samemu, a jest to możliwe dzięki tak zwanej s-funkcji. Czytaj dalej Simulink, Arduino i LCD

ThingSpeak - przykłady

 

ThingSpeak - przykłady

Do korzystania z ThingSpeak potrzebne jest nam źródło danych, stałe połączenie z internetem oraz odrobina cierpliwości do czytania dokumentacji. ThingSpeak współpracuje z przeróżnymi systemami i siłą rzeczy nie istnieje uniwersalna formuła, która pozwoliłaby na natychmiastową konfigurację systemu w każdym przypadku. Na szczęście czytanie dokumentacji w przypadku ThingSpeak nie sprawia kłopotu, a dużym ułatwieniem na start są liczne przykłady.

Czytaj dalej ThingSpeak - przykłady

Dokładność numeryczna

Poniższy wpis autorstwa pana Grzegorza Knora otrzymał wyróżnienie w naszym czerwcowym konkursie

Wstęp

Poniższy wpis bazuje na wątku dokładność numeryczna z polskiego forum matlab.pl.
Otóż w 2009 roku zetknąłem sie z problemem, który może być zilustrowany za pomocą następującego pseudokodu:

Dla każdego k ze zbioru [0,1, 0,2, 0,3,... 5]

Jeśli zaokrąglona wartość k jest równa k

Wydrukuj k

Czytaj dalej Dokładność numeryczna

MATLAB - Zliczanie twarzy ze zdjęcia tłumu

Poniższy wpis pana Łukasza Wyporka zapewnił autorowi pierwsze miejsce w naszym czerwcowym konkursie

MATLAB - Zliczanie twarzy ze zdjęcia tłumu

29 kwietnia 2015 r. na Rynku w Krakowie miał miejsce wiec wyborczy Janusza Korwina-Mikkego. Byłem bardzo ciekawy, ile osób przyszło na spotkanie - niestety - liczyć głów na zdjęciu mi się nie chciało. Postanowiłem więc wykorzystać do tego celu środowisko MATLAB, pisząc krótki program zliczający głowy na zdjęciu za mnie.

Całość zajęła (uwaga!) 9 linii kodu. I to jest właśnie fajne w bibliotekach dołączonych do MATLABa - wystarczy z nich skorzystać, a cała „brudna” robota wykonywana jest za nas.

% Create a cascade detector object.
faceDetector = vision.CascadeObjectDetector();
faceDetector.MinSize = [20 22];
faceDetector.MergeThreshold = 3;
I = imread('.\zdjecie_tlumu.jpg');
bboxes = step(faceDetector, I);
IFaces = insertObjectAnnotation(I, 'rectangle', bboxes, 'Twarz', 'LineWidth', 10);
count = size(bboxes)
figure, imshow(IFaces), title(['Ilość wykrytych twarzy: pomiędzy ' int2str(count(1)*1.2) ' a ' int2str(count(1)*1.8) ]);
Rysunek 1 Program w środowisku Matlab
Rysunek 1 Program w środowisku Matlab

Czytaj dalej MATLAB - Zliczanie twarzy ze zdjęcia tłumu