Skip to content
kosooi edited this page Jan 10, 2017 · 5 revisions

anrobot_description

Dokładnie ten sam pakiet co na poprzednim laboratorium - oba zostały zrealizowane jednocześnie.

Uruchomienie

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}

Pliki źródłowe

src/inv_kinematics.cpp

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"
include/anrobot_description/trajectory.h i src/trajectory.cpp

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.

src/gen_trajectory.cpp

Inicjalizuje węzeł trajektorii zwykłej.

src/gen_trajectory.cpp

Inicjalizuje węzeł trajektorii odwrotnej.

srv/SetTarget.srv

Zawiera serwis używany przy zadawaniu celu węzłowi inv_gen_trajectory.

Komunikacja

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.

Clone this wiki locally