Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature moteus controller #4

Merged
merged 33 commits into from
Jun 26, 2024
Merged

Feature moteus controller #4

merged 33 commits into from
Jun 26, 2024

Conversation

BartlomiejK2
Copy link
Collaborator

Dodano:
Node do sterowania kilkoma moteusami naraz:
src/meldog_brigde/meldog_bridge/multi_moteus_controller

Publisher: "multi_moteus_state" - wysyła aktualną listę danych o moteusach (MultiMoteusState)
Subscriber: "multi_moteus_control" - otrzymuje dla każdego moteusa dane (MultiMoteusControl)

Parametr: number_of_moteuses - liczba moteusy

Nowa paczka dla autorskich interface'ów do meldoga:
src/meldog_interfaces

msg:

MultiMoteusState:
MoteusState [ ] state_array

MultiMoteusControl:
MoteusControl [ ] control_array

MoteusState:
float32 position
float32 velocity
float32 torque
float32 q_current
float32 d_current

MoteusControl:
float32 desired_position
float32 desired_velocity
float32 feedforward_torque

srv:

MultiMoteusActive:
bool [ ] active

"---"
bool [ ] success

TODO: Zrobić serwis umożliwiający wyłączenie/zatrzymanie wybranych moteusów

@pktiuk
Copy link
Contributor

pktiuk commented Apr 23, 2023

Dobrze by ybło, gdybyś w Pull Requeście umieszczał też informację którego Issuesa on dotyczy? Wtedy w twoim issue pojawi się komentarz pokazujący, że pojawił się pull request. Ułatwi to nawigację.
Powinno to wyglądać jakoś tak:
Implementacja zadania: #2

@jmacuga
Copy link
Collaborator

jmacuga commented May 10, 2023

Wydaje mi się ze to jest problem z tym ze w asyncio odpala sie event loop, a w rclpy.spin() executor i się blokują

Generalnie jak czytam to ludzie mają problemy z rosem 2 + asyncio

Moze jakos inaczej zeobic to asynchroniczne wywoływanie

@jmacuga
Copy link
Collaborator

jmacuga commented May 17, 2023

Nie wiem czy rozwiązałam ten problem o który chodziło, ale node się uruchamia, oraz odpala się za pomocoą ros2 run

@pktiuk
Copy link
Contributor

pktiuk commented May 17, 2023

Muszę was pochwalić, dokładnie tak wyobrażam sobie współpracę nad tymi samymi pull requestami

@BartlomiejK2
Copy link
Collaborator Author

BartlomiejK2 commented Aug 20, 2023

Rozbiłem działanie ROSa i asynchroniczne sterowanie moteusami na osobne wątki. Silnik działa, da się go sterować wysyłając wiadomości na topic multi_moteus_control oraz odbierać jego aktualny stan na topicu multi_moteus_state. Korzystałem z kodu napisanego przez autora moteusa, warto dokładniej przyjrzeć się działaniu biblioteki threading, może da się coś poprawić. Oprócz tego zostało jeszcze dodanie serwisu do wyłączania moteusa.

Comment on lines 6 to 9
from meldog_interfaces.msg import MultiMoteusControl
from meldog_interfaces.msg import MultiMoteusState
from meldog_interfaces.msg import MoteusState
from meldog_interfaces.msg import MoteusControl
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Możesz to zaimportować w jednej linijce podając klasy po przecinkach
from cośtam import Wiadomosc1, Wiadomosc2, etc.

@pktiuk
Copy link
Contributor

pktiuk commented Dec 14, 2023

@BartlomiejK2 Czemu wrzuciłeś tutaj losowe pliki .csv?

@BartlomiejK2 BartlomiejK2 marked this pull request as ready for review May 20, 2024 15:59
@BartlomiejK2
Copy link
Collaborator Author

@pktiuk
Siema, długo nie dawałem feedbacku z postępu projektu. Akutalnie dostaliśmy nakładkę na malinę (pi3hat) do lepszej kontroli sterowników meldoga, do której potrzebny będzie nowy kontroler rosowy. Planuję skorzystać tym razem z frameworku ros2_control. Na wakacje zaplanowane mam przygotowanie hardware interface'u dla pi3hat'a oraz jakiś prosty sterownik (albo skorzystam z gotowców) do testów. Jako, że planujemy większość kodu odpowiedzialnego za sterowanie pisać w C++ a stary package jest w Pythonie i jego kod nie przyda się do dalszej pracy, stworzyłem nowy package meldog_bridge a stary zamieniłem na "meldog_bridge_old" i wrzuciłem do osobnego folderu "old_code".

Jeżeli chodzi o csvki, to były one zrobione do testów skoków nogi. Już wtedy wiedziałem, że ten package nie przyda się w przyszłości, to wrzucałem na szybko do niego.

Myślę, że można to mergować, jak zacznę nowy sterownik to zrobię osobnego pulla.

@pktiuk
Copy link
Contributor

pktiuk commented May 20, 2024

Cześć @BartlomiejK2

Jako, że planujemy większość kodu odpowiedzialnego za sterowanie pisać w C++ a stary package jest w Pythonie i jego kod nie przyda się do dalszej pracy

Jeśli ten kod jest niepotrzebny to wrzuć go na jakiegoś innego brancha i tyle. Nie powinien on być widoczny na branchu na którym obecnie pracujesz, ponieważ zaśmieca on projekt i utrudnia w rozeznaniu się po projekcie. Po to jest git, aby ogarniać rzeczy archiwalne. Jeśli ten kod ma być nieużywany to nie wiem, czy warto go mergować (no chyba, że jednak ma być on używany dopóki nie przepiszecie całości na C++)

Jeżeli chodzi o csvki, to były one zrobione do testów skoków nogi. Już wtedy wiedziałem, że ten package nie przyda się w przyszłości, to wrzucałem na szybko do niego.

No fajnie, że zostały zrobione do testów nogi, ale czy ktoś po tobie też będzie używać tych plików i nie będzie ich zmieniał co chwilę?

@BartlomiejK2
Copy link
Collaborator Author

@pktiuk

Jeśli ten kod jest niepotrzebny to wrzuć go na jakiegoś innego brancha i tyle. Nie powinien on być widoczny na branchu na którym obecnie pracujesz, ponieważ zaśmieca on projekt i utrudnia w rozeznaniu się po projekcie. Po to jest git, aby ogarniać rzeczy archiwalne. Jeśli ten kod ma być nieużywany to nie wiem, czy warto go mergować (no chyba, że jednak ma być on używany dopóki nie przepiszecie całości na C++)

Kod może się przydać w przyszłości dla testów jednej nogi, nowy kod będzie raczej przygotowany stricte pod całego robota.
Mogę go wrzucić na archiwalnego brancha tak jak radzisz, albo zostawić jako nową paczkę do testowania.

No fajnie, że zostały zrobione do testów nogi, ale czy ktoś po tobie też będzie używać tych plików i nie będzie ich zmieniał co chwilę?

To są pliki których nie powinno się edytować, sterownik do skoków je tylko zczytuję. Jeżeli ktoś będzie chciał w przyszłości testować ponownie skoki to albo musi mieć te csvki, albo sam wygenerować z mojego skryptu matlabowego.

@pktiuk
Copy link
Contributor

pktiuk commented May 23, 2024

@pktiuk

Jeśli ten kod jest niepotrzebny to wrzuć go na jakiegoś innego brancha i tyle. Nie powinien on być widoczny na branchu na którym obecnie pracujesz, ponieważ zaśmieca on projekt i utrudnia w rozeznaniu się po projekcie. Po to jest git, aby ogarniać rzeczy archiwalne. Jeśli ten kod ma być nieużywany to nie wiem, czy warto go mergować (no chyba, że jednak ma być on używany dopóki nie przepiszecie całości na C++)

Kod może się przydać w przyszłości dla testów jednej nogi, nowy kod będzie raczej przygotowany stricte pod całego robota. Mogę go wrzucić na archiwalnego brancha tak jak radzisz, albo zostawić jako nową paczkę do testowania.

W takim razie można zrobić paczkę wskazującą na to, że służy tylko do testów i opisać ją dokładnie w README.

No fajnie, że zostały zrobione do testów nogi, ale czy ktoś po tobie też będzie używać tych plików i nie będzie ich zmieniał co chwilę?

To są pliki których nie powinno się edytować, sterownik do skoków je tylko zczytuję. Jeżeli ktoś będzie chciał w przyszłości testować ponownie skoki to albo musi mieć te csvki, albo sam wygenerować z mojego skryptu matlabowego.

W takim razie to rzeczywiście warto te pliki zostawić.


Wygląda na to, że masz tutaj wszystko przemyślane nie mam więcej uwag co do zawartości.
Jedyne co bym ci teraz zalecił to uporządkowanie tej paczki z kodem testowym i zmergowanie jej. Chodzi tutaj o to, że zbyt duże zmiany na raz są ciężkie do zrobienia review, więc warto je rozbijać na mniejsze logiczne fragmenty.

@BartlomiejK2 BartlomiejK2 merged commit d8db49c into main Jun 26, 2024
1 check failed
@BartlomiejK2 BartlomiejK2 deleted the feature_moteus_controller branch June 27, 2024 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants