Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

project:nr5 [2012/05/27 01:39]
109.192.98.64
project:nr5 [2012/07/12 16:21] (aktuell)
109.192.98.64
Zeile 1: Zeile 1:
 +
 ====== Nr. 5 - resurrection / Mitsubishi Movemaster RM-101 ====== ====== Nr. 5 - resurrection / Mitsubishi Movemaster RM-101 ======
 {{tag>project software hardware electronics computing }} {{tag>project software hardware electronics computing }}
Zeile 6: Zeile 7:
 Der Mitsubishi Movemaster RM-101 ist ein 5-Achsen-Roboterarm. Der Mitsubishi Movemaster RM-101 ist ein 5-Achsen-Roboterarm.
 Das Geraet wurde ca. 1984 gebaut. Das Geraet wurde ca. 1984 gebaut.
 +
 +===== Media =====
 +
 +  * [[http://vimeo.com/44572459|initial show off video @ vimeo]]
 +  * [[http://twitter.com/4RM4/status/216724331542216704/photo/1/large|Light Painting]]
 +  * [[http://hackaday.com/tag/rm-101/|Hackaday]]
 +  * [[http://www.youtube.com/watch?v=hqOJN07eqFo|Pen Plotting]]
  
 ===== Zustand ===== ===== Zustand =====
Zeile 11: Zeile 19:
 Etwas angeschmutzt, Reinigung und Schmierung erforderlich. Etwas angeschmutzt, Reinigung und Schmierung erforderlich.
 Der Anschluss "CON3" wurde mit einem 25p-Sub-D-Stecker verbunden. Der Anschluss "CON3" wurde mit einem 25p-Sub-D-Stecker verbunden.
-Eine Gehaeuseblende fuer den Anschluss fehlt.+Eine Gehaeuseblende fuer den Anschluss <del>fehlt</del> wurde angefertigt.
 Die Belegung des Steckers legt den Anschuss an einen Printerport nahe. Die Belegung des Steckers legt den Anschuss an einen Printerport nahe.
  
Zeile 67: Zeile 75:
 ===== ToDo ===== ===== ToDo =====
  
-  * Anschlussblende anfertigen und montieren. +  * <del>Anschlussblende anfertigen und montieren</del>
-  * den db25-Stecker mittels gewinkelter Pfostenleiste an das Geraet anbinden. +  * <del>den db25-Stecker mittels gewinkelter Pfostenleiste an das Geraet anbinden.</del> skipped
-  * Ansteuerung reversen.+  * <del>Ansteuerung reversen.</del>
  
 ===== Quellen ===== ===== Quellen =====
Zeile 83: Zeile 91:
   * [[Mitsubishi RV-M1 Instruction Manual |RV-M1]] gibt moegliche Tips fuer Befehle auf p.62(pdf) sec.3.3.1(toc) ff. Es wird explizit erwaehnt, dass der Robot als Printer angeschlossen werden kann.   * [[Mitsubishi RV-M1 Instruction Manual |RV-M1]] gibt moegliche Tips fuer Befehle auf p.62(pdf) sec.3.3.1(toc) ff. Es wird explizit erwaehnt, dass der Robot als Printer angeschlossen werden kann.
   * [[http://linuxcnc.org/|LinuxCNC.org]] Steuerungssoftware (für wenn's tut)   * [[http://linuxcnc.org/|LinuxCNC.org]] Steuerungssoftware (für wenn's tut)
 +  * [[http://www.etf.unssa.rs.ba/~slubura/robotika/sarajevo/ROBOT/calgari/ROBSYM.HTM|Denavit-Hartenberg parameters -> RM-101]]
 +
 +===== Manual =====
 +
 +On shack@shackit:mitsubishi-rm101 .
 +
 +===== Firmware Reverse Engineering =====
 +
 +ROM-Dump and IDA-Database on shack@shack:mitsubishi-rm101 .
 +
 +==== Kommandos ====
 +
 +Jedes Kommando besteht aus einem einzelnen Großbuchstaben, gefolgt von 0-7 Parametern, durch Kommata getrennt. Leerzeichen werden ignoriert.
 +
 +Parameter können Hex oder Dezimal sein, + oder - als Präfix sind erlaubt.
 +
 +Ein Kommando nimmt entweder keine, einen Hex- oder 1-7 Dezimalparameter. Hex und Dezimal werden nie gemischt. Maximallänge inkl. eventuellem Präfix in Klammern.
 +
 +Wenn das Gerät im Error-Zustand landet (Error-LED, falscher Input), akzeptiert es nur noch das Kommando "N" (wahrscheinlich Reset).
 +
 +^ Kommando ^ Parameter ^ Kommentar ^
 +| C | none     | Schliesst den Greifer                           |
 +| E | 1 dez(3) | geraten: Save position (evtl. vertauscht mit M) |
 +| F | none     | Oeffnet den Greifer                             |
 +| H | none     | Set Current Position to Home Position           |
 +| I | 6 dez(4) | Relative Bewegungen um 6 Achsen, s.u.           |
 +| L | 1 dez(1) |                                                 |
 +| M | 1 dez(3) | geraten: Move to saved position                 |
 +| N | none     | "neutrale" Position -- die, die er beim Einschalten hatte |
 +| O | 1 hex(4) |                                                 |
 +| P | 7 dez(4) | wahrscheinlich entsprechend PS bei RM-501       |
 +| Q | 1 dez(2) |                                                 |
 +| S | 1 dez(1) |                                                 |
 +| T | 1 dez(2) |                                                 |
 +| U | 4 dez(1) | Parameter müssen 0 oder 1 sein                 |
 +| V | 4 dez(1) | gleicher Code wie U, nur wird ein Zwischenergebnis invertiert |
 +
 +=== Kommando "I" ===
 +
 +allg: I1,2,3,4,5,6
 +
 +^Stelle^Gelenk^Funktion
 +| 1    | Drehachse, Achse 1 von unten | "-" gegen Uhrzeigersinn  "+" Uhrzeigersinn
 +| 2    | Schulter                     | "+" heben  "-" senken
 +| 3    | Ellenbogen                   | "+" heben  "-" senken
 +| 4    | Handgelenk                   | Differential, "rechts" "+" nach unten, "-" nach oben
 +| 5    | Handgelenk                   | Differential, "links"  "+" nach oben,  "-" nach unten
 +|      |                              | Hand hoch:   4. Stelle negativ, 5. Stelle positiv, gleicher Betrag
 +|      |                              | Hand runter: 4. Stelle positiv, 5. Stelle negativ
 +|      |                              | Hand drehen: 4. und Stelle gleiches Vorzeichen, , gleicher Betrag
 +| 6    | Greifer                      | "-" oeffnet, "+" schliesst
 +
 +7200 ergibt eine Drehung des Greifers um 360 Grad.
 +
 +Wenn ein Parameter die Betriebsgrenzen ueberschreitet, verliert das System Steps und 
 +die Neutrale Position geht verloren -> Neukalibrieren.
 +
 +==== Tests 2012-06-18 ====
 +
 +^ Kommando ^ Reaktion  ^ Massnahme   ^ Schluss              ^
 +| A        | Error-LED | Power-Cycle |                      |
 +| N        | none      | -           |                      |
 +| AN       | Error-LED | -           |                      |
 +| A\nN     | Error-LED | -           | N macht KEINEN reset |
 +| ' '      | none      | -           |                      |
 +| F        | none      | -           |                      |
 +
 +protokoll:
 +<code>
 + F oeffnet den Greifer, setzt Error-LED
 + N schliesst den Greifer, setzt Error-LED
 + F -> keine Reaktion
 + Power-Cycle
 + F0 oeffnet den greifer, schliesst ihn, oeffnet ihn abermals, setzt Error-LED
 + N schliesst den Greifer, setzt Error-LED
 + F0 -> keine Reaktion
 + F -> keine Reaktion
 + Power-Cycle
 + F oeffnet den greifer, keine Error-LED
 + N schliesst den greifer, keine Error-LED
 + F oeffnet den greifer, keine Error-LED
 + N schliesst den greifer, keine Error-LED
 + -> dreck ?
 + B -> nix, Error-LED
 + C -> nix, keine Error-LED
 + Power-Cycle
 + D -> nix, Error-LED
 + Power-Cycle
 + E -> nix, keine Error-LED
 + F -> oeffnet den greifer, keine Error-LED
 + G -> nix, Error-LED
 + Power-Cycle -> schliesst den greifer
 + H -> nix, keine Error-LED
 + I -> nix, Error-LED
 + Power-Cycle
 + J -> nix, Error-LED
 + Power-Cycle
 + K -> nix, Error-LED
 + Power-Cycle
 + L -> nix, keine Error-LED
 + Power-Cycle
 + L10 -> nix, Error-LED
 + Power-Cycle
 + L1 -> nix, keine Error-LED
 + L2 -> nix, Error-LED
 + Power-Cycle
 + L0 -> nix, keine Error-LED
 + M -> nix, keine Error-LED
 + M0 -> nix, keine Error-LED
 + M1 -> nix, keine Error-LED
 + M2 -> nix, keine Error-LED
 + M10 -> nix, keine Error-LED
 + O -> nix, keine Error-LED
 + O1111 -> nix, keine Error-LED
 + Power-Cycle
 + O1111 -> nix, keine Error-LED
 + P -> Error-LED
 + Power-Cycle
 + Q -> nix, keine Error-LED
 + R -> nix, Error-LED
 + Power-Cycle
 + R180 -> nix, Error-LED
 + S -> nix, Error-LED
 + Power-Cycle
 + S1 -> nix, keine Error-LED
 + T -> nix, keine Error-LED
 + T10 -> nix, keine Error-LED
 + U -> nix, Error-LED
 + 'U ' -> nix, Error-LED
 + Power-Cycle
 + U -> nix, Error-LED
 + U1010 -> nix, Error-LED
 + Power-Cycle
 + U1010 -> nix, Error-LED
 + Power-Cycle
 + U10,10,10,10 -> nix, Error-LED
 + Power-Cycle
 + U1,1,1,1 -> nix, keine Error-LED
 + U0,0,0,0 -> nix, keine Error-LED
 + U5,5,5,5 -> nix, Error-LED
 + Power-Cycle
 + V -> nix, Error-LED
 + Power-Cycle
 + V1,1,1,1 -> nix, keine Error-LED
 + V0,0,0,0 -> nix, keine Error-LED
 + V2,2,2,2 -> nix, Error-LED
 + Power-Cycle
 + W -> nix, Error-LED
 + Power-Cycle
 + W0 -> nix, Error-LED
 + Power-Cycle
 + X -> nix, Error-LED
 + Power-Cycle
 + Y -> nix, Error-LED
 + Power-Cycle
 + Z -> nix, Error-LED
 + Power-Cycle
 + I500,500,500,500,500,500 -> arm bewegt sich um alle achsen :-) !!!!111111!!1einseinself!!
 + I500,500,500,500,500,500 -> arm bewegt sich um alle achsen :-) !!!!111111!!1einseinself!!  -> inkrementelle bewegung
 + I-500,-500,-500,-500,-500,-500 -> arm bewegt sich in gegenrichtung
 +</code>
 + 
 +Fazit:
 +<code>
 + erste stelle: drehgelenk, achse 1 von unten -gegen Uhrzeigersinn +Uhrzeigersinn
 + zweite stelle: 1. schwenkgelenk +heben -senken
 + dritte stelle: 2. schwenkgelenk +heben -senken
 + vierte stelle: 3. handgelenk differential "rechts" nach unten, "-" nach oben
 + fuenfte stelle: 3. handgelenk differential "links" nach oben,  "-" nach unten
 + -> hand hoch:   4. st negativ, 5. stelle positiv
 + -> hand runter: 4. st positiv, 5. stelle negativ
 + sechste stelle: greifer "-" oeffnet, "+" schliesst
 +</code>
  
 ===== Befehle RM-501 ===== ===== Befehle RM-501 =====
Zeile 129: Zeile 310:
   * keine Reaktion vom Antrieb    * keine Reaktion vom Antrieb 
   * Beobachtung: einige Motoren werden richig uebel heiss - obwohl keine Bewegung ausgefuehrt wurde.   * Beobachtung: einige Motoren werden richig uebel heiss - obwohl keine Bewegung ausgefuehrt wurde.
 +
 +==== Scripte ====
 +
 +simples frontend 'robo':
 +<file txt robo>
 +#!/bin/bash
 +
 +#
 +# usage: 
 +# robo { n | N }         - go to  null position
 +# robo a.b.c.d.e.f [-r]  - execute 'I' command with numerical parameters a..f
 +#                        - '.' is eqivalent to ','
 +#                          - values of '0' may be omitted e.g.: ..100... = 0,0,100,0,0,0
 +#                          - a trailing "-r" changes the sign of all the parameters
 +# robo Xn                - send arbitrary command
 +#
 +
 +IFC=/dev/usblp0
 +
 +case "$1" in 
 +        n|N) 
 +                echo "N" > $IFC
 +                ;;
 +        [-0-9,.]*)
 +                P=${1//./,}
 +                P=${P//,,/,0,}
 +                P=$( echo "$P" | sed 's/,$/,0/' )
 +                P=$( echo "$P" | sed 's/^,/0,/' )
 +                #echo "*$P*"
 +                P=$( echo "$P" | tr , '\n' )
 +                #echo "*$P*"
 +                if [ "$2" = "-r" ]; then 
 +                        P=$( 
 +                                echo "$P" | 
 +                                awk '
 +                                        # { print "-"$1"-" }
 +                                        $1 == 0 { print "0" }
 +                                        $1 != 0 { print $1 * -1 }
 +                                        ' |
 +                                tr '\n' ,  
 +                        )
 +                else 
 +                        P=$( 
 +                                echo "$P" | 
 +                                awk '
 +                                        # { print "+"$1"+" }
 +                                        $1 == 0 { print "0" }
 +                                        $1 != 0 { print $1 * 1 }
 +                                        ' |
 +                                tr '\n' ,  
 +                        )
 +                fi 
 +                P=${P%,}
 +                echo "I$P" > $IFC
 +                ;;
 +        *) 
 +                echo "$1" > $IFC
 +                ;;
 +esac
 +</file>
 +
 +ablauf 'nach rechts drehen, karte greifen, praesentieren' 'robo.sh':
 +<file txt robo.sh>
 +#!/bin/bash -xv
 +export PATH=$PATH:/home/shack
 +# echo "N" > /dev/usblp0
 +read () {
 +        :
 +}
 +
 +read x
 +robo 2150,1250,0,1760,1760,0
 +read x
 +robo 0,0,-1000,0,0,-1000
 +read x
 +robo 0,0,0,-250,250,0
 +read x
 +# robo 0,0,-250,0,0,0
 +# read x
 +robo 0,-200,50,0,0,0
 +read x
 +robo 0,-225,150,0,0,0
 +#robo 0,50,-25,0,0,0
 +read x
 +
 +# griff
 +robo 0,0,0,0,0,1025
 +read x
 +robo 0,500,1000,0,0,0
 +#read x
 +#robo 0,-250,-250,0,0,0
 +
 +read x
 +robo N
 +# present
 +read x
 +robo 0,0,0,3600,3600,0
 +</file>
  
project/nr5.1338075586.txt.gz · Zuletzt geändert: 2012/05/27 01:39 von 109.192.98.64