Hallo zusammen,
mein Ziel ist es eine Linearachse mit dem darauf montiertem IRB 4600 (IRC5, Robotware 6) über die EGM Schnittstelle via ROS anzusteuern. Auf der Steuerung sind das StateMachine Add-Inn 1.1 und die damit automatisch erstellten EMG RAPID Programme installiert.
Mir ist es möglich die Joint Velocity aller 6 Roboterachsen über ROS festzulegen. Leider bewegt sich die Linearachse nicht, es erscheint allerdings auch keine Fehlermeldung (weder auf dem Teach Pendant noch in ROS). Die Linearachse lässt sich manuell joggen und ist beim Start der Steuerung automatisch aktiv.
Über ROS lassen sich mithilfe der topic /rws/state zwei mechanische EInheiten identifizieren (Roboter und Linearachse).
Die topic /egm/joint_states ermöglicht das Auslesen aller Joint Positionen und Geschwindigkeiten inklusive die der Linearachse. Dies funktioniert alles problemlos und in Echtzeit per EGM auch während der Bewegung. Der ROS controller nimmt ein Array mit 7 Einträgen als Input für eine Geschwindigkeitsvorgabe (Joint Group Velocity). Mithilfe der ersten 6 Einträge kann ich die Roboterachsen manipulieren, der 7. Eintrag gilt der Linearachse.
Ich habe mich da an das offizielle Beispiel von ABB für einen 6-Achs Industrieroboter mit einem EGM Channel gehalten.
Den entsprechenden ROS controller starte ich bei erfolgreich laufender EGM Verbindung mit
rosservice call /egm/controller_manager/switch_controller "start_controllers: [joint_group_velocity_controller]
stop_controllers: ['']
strictness: 1
start_asap: false
timeout: 0.0"
Die Vorgabe der Geschwindigkeiten erfolgt über folgende topic (hier sind alle Geschwindigkeiten 0)
rostopic pub /egm/joint_group_velocity_controller/command std_msgs/Float64MultiArray "data: [0,0,0,0,0,0,0]"
Hat wer eine Ahnung, an welchen Einstellungen ich ggf. rumspielen kann, um auch eine Steuerung der Linearachse zu ermöglichen? Screenshots der aktuellen EInstellungen usw. kann ich gerne morgen bei Bedarf nachreichen.
Reicht ein EGM Channel für diese Aufgabe aus oder muss ich ggf. doch zwei nutzen. Ich verstehe das Konzept aktuell so, dass eine mechanische Gruppe mit zwei mechanischen Einheiten vorliegt. Das wird aktuell auch per ROS inklusive aller 7 vorliegenden Achsen erkannt. Dementsprechend müsste meiner Meinung nach ein EGM Channel ausreichen.
Bei dem Versuch 2 Channel zu nutzen (einen für den Roboter, einen für die Linearachse) bekomme ich folgende Fehlermeldung im ROS Terminal.