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

Dane z tabel WWW - regular expression

Dane z tabel WWW

Jeśli ktoś publikuje jakieś dane w internecie, to robi to zazwyczaj w taki sposób, by można się było z tymi danymi łatwo zapoznać. Jeśli danych jest dużo, to dobrym zwyczajem jest, poza umieszczeniem ich w tabeli html, udostępnienie pliku xls, csv, czy choćby txt. Dzięki temu użytkownik będzie miał możliwość łatwego pobrania danych i ich dalszej analizy. Gdy jednak gotowy plik z danymi nie istnieje, nie wszystko stracone. Są sposoby, by dość łatwo skopiować dane ze strony www bezpośrednio w środowisku MATLAB. Pomagają w tym wyrażenie regularne.
Czytaj dalej Dane z tabel WWW - regular expression

Blog MATLAB&Simulink