Problemem na którym zatrzymałem się ostatnio podczas próby wprawienia robota w ruch (link) było przeniesienie napędu z silnika na koła. Osią obrotu koła jest jest śruba przechodząca przez mocowanie silnika. Jest ona dokręcana za pomocą nakrętki, co widać na poniższym zdjęciu.Kiedy nakrętka jest wkręcona za mocno, występuje opór przy próbie obrotu koła. Zębatka na wale silnika przestaje się wtedy kręcić. Po poluzowaniu śruby, koło dobrze się kręci, ale nakrętka zaczyna się odkręcać i po jakimś czasie wypada. Rozwiązaniem mojego problemu okazał się klej do śrub. Dzięki sklejeniu nakrętki ze śrubą, nie odpada ona podczas obracania się koła. Nie muszę więc tak mocno skręcać śruby i koło może swobodnie się kręcić.

Po zamontowaniu kół i sklejeniu śrub robot mógł w końcu wyruszyć w swą pierwszą trasę. Została ona uwieczniona na filmiku:

Komendy jazdy są wydawane z komputera za pomocą portu szeregowego Bluetooth. Możliwe komendy to jazda prosto, do tyłu, skręt w lewo, w prawo i zmiana prędkości. Każda z komend podaje na oba silniki tą samą wartość sterowania. Jak widać na filmiku nie gwarantuje to jazdy prosto, robot dosyć mocno skręca. Możliwe przyczyny, jakie przychodzą mi do głowy to większy opór obracania się kół po jednej stronie i nierówny rozkład masy robota. Aby to poprawić mogę manipulować siłą wkręcenia śrub. W tym konkretnym przypadku mam jeszcze spore pole do poprawy, jednak nawet przy dobrym wyregulowaniu jakieś małe różnice między obiema stronami mogą występować. Należy je niwelować softwareowo kontrolując odczyty z enkoderów. W labiryncie robot będzie mógł również korygować swoją pozycję za pomocą czujników odległości od ścian.

Robot jeździ o własnych siłach. Co oznacza, że:

  • Część mechaniczna spełnia założenia projektowe – wszystkie wydrukowane części do siebie pasują, napęd z silnika jest przenoszony na koła.
  • Część elektroniczna działa – Układy na płytce są poprawnie zasilane, procesor się uruchamia, prąd jest podawany na silniki.
  • Część softwareowa działa – FreeRTOS się uruchamia, sterownik silników działa, wydawanie komend przez USART działa.

Można więc uznać, że osiągnąłem pierwszego milestone’a projektu. Najbliższe cele będą obejmowały:

  • Stworzenie regulatora silników wykorzystującego odczyty z enkoderów i regulatory PID, któremu można zadawać prędkość postępową i kątową.
  • Czujniki odległości – montaż, kalibracja, konwersja odczytanego napięcia na odległość w milimetrach.
  • Czujnik IMU – uruchomienie i odczytywanie wartości z żyroskopu i akcelerometru.

Realizacja tych trzech punktów umożliwi rozpoczęcie prac nad estymacją pozycji robota w labiryncie.

 

Podobał się artykuł? Zapisz się na newsletter

Zapisz się, aby otrzymywać informacje o nowościach na blogu,
ciekawe materiały oraz informacje marketingowe. W prezencie otrzymasz również
dokument “Jak zwiększyć jakość kodu w projektach embedded? – darmowe narzędzia”.