-
Notifications
You must be signed in to change notification settings - Fork 0
Lab 5
Dokładnie ten sam pakiet co na poprzednim laboratorium - oba zostały zrealizowane jednocześnie.
roslaunch anrobot_description invpointtrajectorydisplay.launch
Aby zmienić z interpolacji liniowej na nieliniową należy zmienić parametr use_lin:=false, albo
w trakcie działania programu zmienić parametr /use_lin komendą
rosparam set /use_lin ${value}
Węzeł ten hostuje dwa serwisy:
- /inv_kinematics - zajmuje się przetworzeniem zadanego punktu końcowego na stany jointów.
- /set_end_target - przyjmuje zadane parametry dla interpolacji ruchu punktu (lub odwrotnej kinematyki dla lab5) i przesyła je do dalszych węzłów na temacie "/target_end"
Zawiera odpowiednio deklarację i implementację dwóch klas:
- Trajectory - zajmuje się obliczaniem kolejnych kroków w interpolacji trajektorii złącz. Nasłuchuje na topicu /joint_states.
- InvTrajectory - to samo, ale dla konkretnego punktu w przestrzeni - w tym dla końcowego efektora. Zadane punkty pobiera z topicu /target_end.
Obie z tych klas liczą kolejne pozycje z częstotliwością 20Hz. Publikują one obie końcowe stany złącz na temacie /trajectory_joint_states, a InvTrajectory dodatkowo publikuje pozycję punktu końcowego na temacie /end_trajectory.
Inicjalizacja klasy InvTrajectory następuje poprzez wywołanie usługi:
rosservice call /set_end_target "point: {x: 1.0, y: 2.0, z: -1.0}"
jeżeli podane zostanie niepoprawne położenie usługa zwróci informację o niepowodzeniu i będzie dalej oczekiwać na poprawne dane.
Inicjalizuje węzeł trajektorii zwykłej.
Inicjalizuje węzeł trajektorii odwrotnej.
Zawiera serwis używany przy zadawaniu celu węzłowi inv_gen_trajectory.
Interpolacją ruchu punktu w przestrzeni i wyświetlenie go za pomocą modelu robota. Sterowanie przy pomocy serwisu /set_end_target z węzłu inv_kinematics, inicjalizacja przy pierwszej poprawnej wiadomości wysłanej na niego.
