Skocz do zawartości

[Bascom] Line Follower algorytm


aixI

Pomocna odpowiedź

Wygląda dobrze. Jednak czegoś Ci jeszcze brakuje, pochodna po czasie, więc zastanów się, czy taki algorytm powinien wykonywać się w nieskończonej pętli najszybciej jak to możliwe.

Co do aplikacji, brzmi podobnie do moich poczynań: https://www.forbot.pl/forum/topics7/line-follower-feniks2-vt5933.htm (końcówka 1 posta)

Bardo przydatne podczas debugowania.

Link do komentarza
Share on other sites

Jednak czegoś Ci jeszcze brakuje, pochodna po czasie, więc zastanów się, czy taki algorytm powinien wykonywać się w nieskończonej pętli najszybciej jak to możliwe.

Cytat z Wikipedii: "Regulator PD (ang. proportional-derivative controller) – w automatyce, regulator składający się z członu proporcjonalnego P o wzmocnieniu k_p, oraz różniczkującego D (fizycznie nierealizowalnego) o czasie różniczkowania T_d." To co jest napisane pogrubioną czcionką to jest właśnie ta pochodna? Szczerze to nie wiem o co z nią chodzi. Czy algorytm powinien wykonywać się w nieskończonej pętli najszybciej jak to możliwe? Chyba nie, bo potrzebuje czas na wyrównanie względem linii? Nie wiem dokładnie - to są moje gdybania/przemyślenia.

Co do aplikacji, brzmi podobnie do moich poczynań: https://www.forbot.pl/forum/topics7/line-follower-feniks2-vt5933.htm (końcówka 1 posta)

Nie ukrywam, że trochę patrzyłem na Twoją apkę 🙂 Skąd wziąłeś ten wykres? Bo fajnie byłoby go użyć właśnie do 16 czujników, gdzie jak jest logiczne 0 to wykres nic nie pokazuje, a jak jest logiczne 1, to wykres podnosi się do wartości 1.

Link do komentarza
Share on other sites

Skąd wziąłeś ten wykres?

Sam już nie pamiętam - jednak mogę Ci zdradzić, bazując na moim doświadczeniu, że Delphi to zła droga 😉 Zmuś się lepiej od razu do C# lub Javy. Jest na forum artykuł jak stworzyć w C# aplikację do komunikacji przez RS232.

To co jest napisane pogrubioną czcionką to jest właśnie ta pochodna? Szczerze to nie wiem o co z nią chodzi. Czy algorytm powinien wykonywać się w nieskończonej pętli najszybciej jak to możliwe? Chyba nie, bo potrzebuje czas na wyrównanie względem linii? Nie wiem dokładnie - to są moje gdybania/przemyślenia.

Ogólnie mówiąc, człon różniczkujący reaguje na zmiany w czasie. Jeśli porównamy pozycję aktualną i poprzednią w kolejnym obiegu pętli, to robot nie zdąży zareagować i człon D wyniesie 0. Dlatego musisz "dać mu czas" na reakcję. Najprościej zrealizować to przez dodanie opóźnienia w pętli. Ile? 1,2,15, 50ms? Sprawdź sam 😉

  • Lubię! 1
Link do komentarza
Share on other sites

Ogólnie mówiąc, człon różniczkujący reaguje na zmiany w czasie. Jeśli porównamy pozycję aktualną i poprzednią w kolejnym obiegu pętli, to robot nie zdąży zareagować i człon D wyniesie 0. Dlatego musisz "dać mu czas" na reakcję. Najprościej zrealizować to przez dodanie opóźnienia w pętli. Ile? 1,2,15, 50ms? Sprawdź sam 😉

Acha! Czyli muszę sobie sprawdzić ile tych ms opóźnienia dać na końcu pętli Do...Loop.

Sam już nie pamiętam - jednak mogę Ci zdradzić, bazując na moim doświadczeniu, że Delphi to zła droga 😉 Zmuś się lepiej od razu do C# lub Javy. Jest na forum artykuł jak stworzyć w C# aplikację do komunikacji przez RS232.

Kurczę, trochę szkoda, bo się trochę nakręciłem na Delphi 😃 i na taki debuger.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Acha! Czyli muszę sobie sprawdzić ile tych ms opóźnienia dać na końcu pętli Do...Loop.

Tak.

Kurczę, trochę szkoda, bo się trochę nakręciłem na Delphi i na taki debuger.

To zrób podobny w C#, edytor okienek w Visualu jest równie prosty.

Link do komentarza
Share on other sites

Acha! Czyli muszę sobie sprawdzić ile tych ms opóźnienia dać na końcu pętli Do...Loop.

Tak.

No muszę się z Tobą nie zgodzić Treker. Zdecydowanie aixI powinien to zrobić na timerze, zwłaszcza jeśli robot ma robić coś więcej niż jeżdżenie po linii, a ma przesyłać dane po RSie.

(...) jednak mogę Ci zdradzić, bazując na moim doświadczeniu, że Delphi to zła droga Zmuś się lepiej od razu do C# lub Javy.

Delphi może nie jest idealne, ale do komunikacji po RSie się nadaje. Wystarczy zrobić dodatkowy wątek, który będzie odpowiedzialny za odbieranie ramek danych.

Link do komentarza
Share on other sites

No muszę się z Tobą nie zgodzić Treker.

Ja napisałem, że to najłatwiejsze rozwiązanie. Chodzi o samą zasadę działania. Zresztą sam używałem kiedyś takiego rozwiązanie i nie narzekałem.

Delphi może nie jest idealne, ale do komunikacji po RSie się nadaje.

Zgadza się, tylko nie jest to prężnie rozwijający się język, skoro ktoś zaczyna, to lepiej od czegoś lepszego (jeśli jest taka możliwość). Tutaj, przy samym RSie, przeskok na C# nie będzie trudny.

Link do komentarza
Share on other sites

Jak chodzi i Visual C# 2010 Express, to zrobiłem sobie podobny jak w Delphi szablon mojej apki - wygląda tak:

Na razie (tak jak w Delphi) działa tylko "Exit" 😃

Jak mam, np. "Suma wag z czujników:" to po dwukropku dać "Label'a", aby w nim wyświetlana była suma wag?, czy jakiegoś "Edit'a"? (pytam tak, gdyż nie wiem dokładnie jak by to miało wyglądać i działać).

Edit: Jak mam projekt w Visual'u już zapisany (i w ogóle), to czy jest możliwość (tak jak w Delphi) aby otworzyć tylko aplikacje, a nie zaraz cały projekt, w raz z edytorem i kodem?

Link do komentarza
Share on other sites

Jak mam, np. "Suma wag z czujników:" to po dwukropku dać "Label'a", aby w nim wyświetlana była suma wag?, czy jakiegoś "Edit'a"? (pytam tak, gdyż nie wiem dokładnie jak by to miało wyglądać i działać).

To zależy tylko od Ciebie. Najrozsądniej, skoro nie będziesz edytował tych danych, umieścić tam "Labele".

Jak mam projekt w Visual'u już zapisany (i w ogóle), to czy jest możliwość (tak jak w Delphi) aby otworzyć tylko aplikacje, a nie zaraz cały projekt, w raz z edytorem i kodem?

Podczas kompilacji tworzy się program wykonywalny, znajdziesz go w katalogu "Relase" lub "Debug", zależy w jakim trybie budujesz program.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.