{"id":4555,"date":"2017-10-26T09:49:35","date_gmt":"2017-10-26T07:49:35","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=4555"},"modified":"2023-03-29T11:47:13","modified_gmt":"2023-03-29T09:47:13","slug":"tutorial-joint-dynamixel-controller-erstellen","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/de\/tutorial-joint-dynamixel-controller-erstellen\/","title":{"rendered":"Dynamixel Tutorial &#8211; Einen Joint Dynamixel Controller erstellen"},"content":{"rendered":"\n<html>\n <body>\n  <p>\n   <b>\n   <\/b>\n   <strong>\n    Beschreibung:\n   <\/strong>\n   Dieses Tutorial beschreibt, wie man einen Joint Controller mit einem oder mehreren\n   <a class=\"catalogue\" href=\"\/de\/293-dynamixel\">\n    Robotis Dynamixel Servomotoren\n   <\/a>\n   herstellt.\n  <\/p>\n  \n  \n  <p>\n   Alle hier erstellten Dateien sollten in my_dynamixel_tutorial gespeichert werden, das wir im vorherigen Tutorial erstellt haben.\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    roscd my_dynamixel_tutorial\n   <\/span>\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-1-schritt-die-parameter-des-controllers-festlegen\">\n   1. Schritt: Die Parameter des Controllers festlegen\n  <\/h2>\n  \n  \n  <p>\n   Zuerst erstellen wir eine Konfigurationsdatei mit allen f\u00fcr den\n   <a class=\"catalogue\" href=\"\/de\/401596-open-source-controller-cm904-a-fuer-dynamixel-servomotoren.html\">\n    Dynamixel Controller\n   <\/a>\n   notwendigen Parametern. F\u00fcgen Sie folgenden Text in die Datei tilt.yami:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    tilt_controller:\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    controller:\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    package: dynamixel_controllers\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    module: joint_position_controller\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    type: JointPositionController\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    joint_name: tilt_joint\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    joint_speed: 1.17\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    motor:\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    id: 4\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    init: 512\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    min: 0\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    max: 1023\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   <b>\n    Bemerkung:\n   <\/b>\n   Die Identifikation des Motors muss der ID Ihres Dynamixel Aktors zugewiesen sein.\n  <\/p>\n  \n  \n  <p>\n   Hier sind weitere Informationen zur .yami Datei. Im Bereich \u201cmotor\u201d gibt es vier Parameter: \u201cid\u201d, \u201cinit\u201d, \u201cmin\u201d und \u201cmax\u201d.\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Der id Parameter ist willk\u00fcrlich, Sie k\u00f6nnen jede beliebige Zahl ausw\u00e4hlen, au\u00dfer Sie verwenden andere Dynamixel, dann muss die ID des Dynamixel spezifisch sein.\n   <\/li>\n   \n   \n   <li>\n    Der init Parameter hat 4096 Werte, diese gehen von 0 bis 4095. Dieser Parameter bezieht sich auf die Ausgangsposition des Joints (engl. \u201cjoint initial position\u201d, deshalb init). Eine volle Drehung entspricht 360 Grad, setzen wir also den init auf 1365, so bewegt sich der Motor um 120 Grad aus seiner Ausgangsposition heraus, mit der urspr\u00fcnglichen Referenz 0.\n   <\/li>\n   \n   \n   <li>\n    Der min Parameter ist die minimale Drehung, die ein Motor schafft, hier gelten die gleichen Regeln wie f\u00fcr den init Parameter.\n   <\/li>\n   \n   \n   <li>\n    Der max Parameter ist die maximale Drehung, die ein Motor schafft und folgt den gleichen Regeln wie die Parameter zuvor.\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-2-schritt-eine-startdatei-erstellen\">\n   2. Schritt: Eine Startdatei erstellen\n  <\/h2>\n  \n  \n  <p>\n   Als n\u00e4chstes m\u00fcssen wir eine Startdatei erstellen, die die Parameter des Controllers auf den Server f\u00fcr die Parameter l\u00e4dt und den Controller startet. Kopieren Sie folgenden Text in die Datei start_tit_controller.launch:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    &lt;launch&gt;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    &lt;!&#8211; Start tilt joint controller &#8211;&gt;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    &lt;rosparam file=\u00a0\u00bb$(find my_dynamixel_tutorial)\/tilt.yaml\u00a0\u00bb command=\u00a0\u00bbload\u00a0\u00bb\/&gt;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    &lt;node name=\u00a0\u00bbtilt_controller_spawner\u00a0\u00bb pkg=\u00a0\u00bbdynamixel_controllers\u00a0\u00bb type=\u00a0\u00bbcontroller_spawner.py\u00a0\u00bb\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    args=\u00a0\u00bb&#8211;manager=dxl_manager&gt;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    &#8211;port pan_tilt_port\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    tilt_controller\u00a0\u00bb\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    output=\u00a0\u00bbscreen\u00a0\u00bb\/&gt;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    &lt;\/launch&gt;\n   <\/span>\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-3-schritt-den-controller-starten\">\n   3. Schritt: Den Controller starten\n  <\/h2>\n  \n  \n  <p>\n   Zuerst m\u00fcssen wir den Controller Manager Node starten. Im vorherigen Tutorial wurde erkl\u00e4rt, wie. Nachdem der Controller Manager l\u00e4uft, laden wir schlie\u00dflich den Controller:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    roslaunch my_dynamixel_tutorial start_tilt_controller.launch\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Dieser Node l\u00e4dt den Dynamixel Controller und beendet ihn; die Ausgabe sieht in etwa so aus:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    process[tilt_controller_spawner-1]: started with pid [4567]\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    [INFO] 1295304638.205076: ttyUSB0 controller_spawner: waiting for controller_manager to startup in global namespace&#8230;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    [INFO] 1295304638.217088: ttyUSB0 controller_spawner: All services are up, spawning controllers&#8230;\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    [INFO] 1295304638.345325: Controller tilt_controller successfully started.\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    [tilt_controller_spawner-1] process has finished cleanly.\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Wenn alles sauber gestartet ist, sollte im Terminal \u201cController tilt_controller successfully started\u201d stehen.\n  <\/p>\n  \n  \n  <p>\n   Jetzt listen wir alle Themen und Dienste auf, mit denen der Dynamixel Controller aufwartet:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    rostopic list\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Relevante Themen:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    \/motor_states\/ttyUSB0\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/command\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/state\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Das Thema \/tilt_controller\/command erwartet eine std_msgs\/Float64\n   <a class=\"catalogue\" href=\"http:\/\/docs.ros.org\/api\/std_msgs\/html\/msg\/Float64.html\" rel=\"noopener\" target=\"_blank\">\n    Nachricht\n   <\/a>\n   , die den Winkel des Joints festlegt.\n  <\/p>\n  \n  \n  <p>\n   Das Thema \/tilt_controller\/state gibt den aktuellen Status des Motors aus, die Art der Nachricht hier is dynamixel_msgs\/JointState.\n  <\/p>\n  \n  \n  <p>\n   Relevante Dienste:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    \/restart_controller\/ttyUSB0\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/start_controller\/ttyUSB0\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/stop_controller\/ttyUSB0\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/set_compliance_margin\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/set_compliance_punch\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/set_compliance_slope\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/set_speed\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/set_torque_limit\n   <\/span>\n   <br\/>\n   <span style=\"color: #666699;\">\n    \/tilt_controller\/torque_enable\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Ein paar der Dienste ver\u00e4ndern die Parameter des Joints, wie Geschwindigkeit, Drehmomentgrenze des Motors, \u00dcbereinstimmungs-Spielraum und Neigung, etc.\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-4-schritt-den-motor-bewegen\">\n   4. Schritt: Den Motor bewegen\n  <\/h2>\n  \n  \n  <p>\n   Um den Motor auch zu bewegen, m\u00fcssen wir den gew\u00fcnschten Winkel im Thema \/tilt_controller\/command angeben, und zwar so:\n  <\/p>\n  \n  \n  <p>\n   <span style=\"color: #666699;\">\n    rostopic pub -1 \/tilt_controller\/command std_msgs\/Float64 &#8212; 1.5\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   <b>\n    Das war\u2019s! Jetzt bewegt sich der Motor!\n   <\/b>\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Beschreibung: Dieses Tutorial beschreibt, wie man einen Joint Controller mit einem oder mehreren Robotis Dynamixel Servomotoren herstellt. Alle hier erstellten Dateien sollten in my_dynamixel_tutorial gespeichert werden, das wir im vorherigen Tutorial erstellt haben. roscd my_dynamixel_tutorial 1. Schritt: Die Parameter des Controllers festlegen Zuerst erstellen wir eine Konfigurationsdatei mit allen f\u00fcr den Dynamixel Controller notwendigen Parametern.[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/de\/tutorial-joint-dynamixel-controller-erstellen\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":4565,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10533],"tags":[],"class_list":["post-4555","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-anleitungen-und-tutorials"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/4555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=4555"}],"version-history":[{"count":6,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/4555\/revisions"}],"predecessor-version":[{"id":13025,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/4555\/revisions\/13025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/4565"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=4555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=4555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=4555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}