Dieses Tutorial beschreibt, wie man Robotis Dynamixel Servomotoren verbindet und unbearbeitetes Feedback auswertet.
Level des Tutorials: ANFÄNGER
1. Schritt: Ein Paket erstellen
Bevor wir anfangen, müssen wir ein Paket erstellen, mit den richtigen Abhängigkeiten und allen Dateien aus diesem Tutorial. Bemerkung: Bevor Sie einen Befehl aus der Liste ausführen, vergewissern Sie sich, dass das aktuelle Verzeichnis in einem der Verzeichnisse der Umgebungsvariablen ROS_PACKAGE_PATH liegt. (Hier ist ein Tutorial , wie man seinen Arbeitsplatz und ein Overlay-Verzeichnis am besten erstellt.)
# Dies haben Sie in dem Creating a Workspace Tutorial erstellt.
cd ~/catkin_ws/src
catkin_create_pkg my_dynamixel_tutorial dynamixel_controllers std_msgs rospy roscpp
2. Schritt: Eine Startdatei für den Manager Node erstellen
Wir nehmen an, dass die Dynamixel Servomotoren mit dem /dev/ttyUSB0 Port verbunden sind.
Zuerst müssen wir den Controller Manager starten, der sich mit den Motoren verbindet und unbearbeitete Feedback-Daten (z.B. aktuelle Position, Zielposition, Fehler, etc.) in einer bestimmten Rate sendet. Am einfachsten geht das, indem wir eine Startdatei schreiben, die alle notwendigen Parameter festlegt. Kopieren Sie den folgenden Text und fügen Sie ihn in eine controller_manager.launch Datei ein.
1 <!– -*- mode: XML -*- –>
2
3 <launch>
4 <node name=”dynamixel_manager” pkg=”dynamixel_controllers” type=”controller_manager.py” required=”true” output=”screen”>
5 <rosparam>
6 namespace: dxl_manager
7 serial_ports:
8 pan_tilt_port:
9 port_name: “/dev/ttyUSB0”
10 baud_rate: 1000000
11 min_motor_id: 1
12 max_motor_id: 25
13 update_rate: 20
14 </rosparam>
15 </node>
16 </launch>
Bemerkung: Setzen Sie die Symbolrate richtig! Wenn Sie Dynamixel RX-28 Servomotoren benutzen, sollte sie auf 57142 gesetzt werden. Wenn sie dann noch Probleme haben, prüfen Sie, ob Sie Ihren Benutzernamen noch in die dialout Gruppe einsetzen müssen und, ob der USB Port beschreibbar gemacht werden muss.
Wenn wir folgendes jetzt ausführen:
roslaunch my_dynamixel_tutorial controller_manager.launch
Sollten wir eine Status Ausgabe sehen, ähnlich wie diese:
[INFO] [WallTime: 1295282870.051953] pan_tilt_port: Pinging motor IDs 1 through 25…
[INFO] [WallTime: 1295282870.103676] pan_tilt_port: Found 4 motors – 4 AX-12 [4, 5, 6, 13], initialization complete.
Die Ausgabe hängt natürlich von den Motoren ab, die an den USB Bus angeschlossen sind.
3. Schritt: Das Motoren Feedback auswerten
Jetzt veröffentlicht der Controller Manager Feedback über das Thema /motor_states/pan_tilt_port. Prüfen Sie zuerst, ob das Thema hier zu finden ist:
rostopic list
Die Ausgabe sollte in etwa so aussehen:
/motor_states/pan_tilt_port
/rosout
/rosout_agg
Eines der Themen in der Liste sollte /motor_states/pan_tilt_port sein. Diese Information wurde herausgegeben:
rostopic echo /motor_states/pan_tilt_port
In diesem Fall haben wir vier AX-12 + Motoren verbunden:
motor_states:
motor_states:
–
timestamp: 1351555461.28
id: 4
goal: 517
position: 527
error: 10
speed: 0
load: 0.3125
voltage: 12.4
temperature: 39
moving: False
–
timestamp: 1351555461.28
id: 5
goal: 512
position: 483
error: -29
speed: 0
load: 0.0
voltage: 12.6
temperature: 40
moving: False
–
timestamp: 1351555461.28
id: 6
goal: 511
position: 516
error: 5
speed: 0
load: 0.0
voltage: 12.3
temperature: 41
moving: False
–
timestamp: 1351555461.28
id: 13
goal: 256
position: 256
error: 0
speed: 0
load: 0.0
voltage: 12.3
temperature: 38
moving: False
Fertig!