Neue Faulhaber Motorik

Wir haben mittlerweile auch die neuen Motoren bekommen, jedoch bekomme ich die nicht zum drehen.

Der IOT2050 kann mit dem Adapterboard kommunizieren, und der edu_drive_uart_node spuckt keine errors aus.

roslaunch edu_drive edu_drive_uart.launch 
... logging to /root/.ros/log/727774f2-e53e-11ed-b8c9-8cf31945107e/roslaunch-iot2050-debian-71.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://192.168.178.167:41105/

SUMMARY
========

PARAMETERS
 * /edu_drive_uart_node/eduDrive/antiWindup: 1
 * /edu_drive_uart_node/eduDrive/canInterface: can0
 * /edu_drive_uart_node/eduDrive/controller0/canID: 0
 * /edu_drive_uart_node/eduDrive/controller0/drive0/channel: 0
 * /edu_drive_uart_node/eduDrive/controller0/drive0/kinematics: [16.0, 0.0, -3.48]
 * /edu_drive_uart_node/eduDrive/controller0/drive1/channel: 1
 * /edu_drive_uart_node/eduDrive/controller0/drive1/kinematics: [16.0, 0.0, -3.48]
 * /edu_drive_uart_node/eduDrive/controller0/encoderRatio: 1024.0
 * /edu_drive_uart_node/eduDrive/controller0/gearRatio: 44.0
 * /edu_drive_uart_node/eduDrive/controller0/rpmMax: 134.0
 * /edu_drive_uart_node/eduDrive/controller1/canID: 1
 * /edu_drive_uart_node/eduDrive/controller1/drive0/channel: 0
 * /edu_drive_uart_node/eduDrive/controller1/drive0/kinematics: [-16.0, 0.0, -3.48]
 * /edu_drive_uart_node/eduDrive/controller1/drive1/channel: 1
 * /edu_drive_uart_node/eduDrive/controller1/drive1/kinematics: [-16.0, 0.0, -3.48]
 * /edu_drive_uart_node/eduDrive/controller1/encoderRatio: 1024.0
 * /edu_drive_uart_node/eduDrive/controller1/gearRatio: 44.0
 * /edu_drive_uart_node/eduDrive/controller1/invertEnc: 0
 * /edu_drive_uart_node/eduDrive/controller1/rpmMax: 134.0
 * /edu_drive_uart_node/eduDrive/controllers: 2
 * /edu_drive_uart_node/eduDrive/frequencyScale: 32
 * /edu_drive_uart_node/eduDrive/inputWeight: 0.2
 * /edu_drive_uart_node/eduDrive/invertEnc: 0
 * /edu_drive_uart_node/eduDrive/kd: 0.0
 * /edu_drive_uart_node/eduDrive/ki: 3.1
 * /edu_drive_uart_node/eduDrive/kp: 0.2
 * /edu_drive_uart_node/eduDrive/maxPulseWidth: 100
 * /edu_drive_uart_node/eduDrive/responseMode: 0
 * /edu_drive_uart_node/eduDrive/timeout: 300
 * /rosdistro: noetic
 * /rosversion: 1.16.0

NODES
  /
    edu_drive_uart_node (edu_drive/edu_drive_uart_node)

ROS_MASTER_URI=http://192.168.178.167:11311

process[edu_drive_uart_node-1]: started with pid [85]
/dev/ttyS3 has been successfully opened
[ INFO] [1682629200.768457186]: Instanciated robot with vMax: 0.5 m/s and omegaMax: 1 rad/s
#EduDrive Setting RPM to 0 0 0 0 0 0 0 0
...

Auch die LED am Adapterboard blinkt wenn der Knoten hochgefahren ist gruen, rot ist aus

Was bedeuten die LEDs und ihre blink-muster?


Ich habe keine ahnung ob die DIP-schalter richtig gestellt sind, jedenfalls habe ich alle stellungen an einem ausprobiert und nix drehte sich.

Wie funktioniert das mit welches Board (controller) 0 oder 1 ist/sein muss, und wie müssen die DIP-schalter für verschiedene Adressen (canID) geschaltet werden (ist es 2-bit binär?)
Es ist mega praktich dass ihr auf yaml-configs umgestellt sind, aber an der Dokumentation haperts noch, weshalb ich kaum Ahnung habe ob meine config valide ist / der hardware entspricht.
(z.b welche PWM frequenz ist das, wofür ist die pulse width, wie sind die dip switches zu belegen, etc)
{ps: vielleicht auch klar machen, dass die Board-Stapel auf einem bus liegen und das nicht 2 separate busse sind}

<launch>
  <node pkg="edu_drive" type="edu_drive_uart_node" name="edu_drive_uart_node" output="screen">
    <rosparam command="load" file="$(find edu_drive)/launch/edu_drive_uart.yaml" />
  </node>
</launch>

edu_drive_uart.yaml:

eduDrive:
  canInterface: can0
  frequencyScale: 32
  inputWeight: 0.2
  maxPulseWidth: 100
  timeout: 300
  kp: 0.2
  ki: 3.1
  kd: 0.0
  antiWindup: 1
  invertEnc: 0
  responseMode: 0
  
  controllers: 2
  
  controller0:
    canID: 0
    gearRatio: 44.0
    encoderRatio: 1024.0
    rpmMax: 134.0
    drive0:
      channel: 0
      kinematics: [16.0, 0.0, -3.48]
    drive1:
      channel: 1
      kinematics: [16.0, 0.0, -3.48]
 
  controller1:
    canID: 1
    gearRatio: 44.0
    encoderRatio: 1024.0
    rpmMax: 134.0
    invertEnc: 0
    drive0:
      channel: 0
      kinematics: [-16.0, 0.0, -3.48]
    drive1:
      channel: 1
      kinematics: [-16.0, 0.0, -3.48]

Ich habe auch alle knopf-pins ueberbrueckt, also am enable sollte es nicht liegen außer das akku+knopf-board hat schlechte firmware

Noch was: keins der motor-boards hat kondensatoren auf der rückseite. Nur leere pads

Hallo Sam,
die Einstellung der CAN-ID erfolgt nach dem folgendem Bitmuster:
0: niederwertiges Bit
1: höherwertiges Bit
0=off, 1==0ff → Can-ID: 0
0=on, 1==0ff → Can-ID: 1
0=off, 1==0n → Can-ID: 2
0=on, 1==0n → Can-ID: 3
Die Kapazitäten auf der Unterseite sind nur optional. Sie werden nicht bestückt. Ich habe sie als Reserve ins Layout gebracht, für den Fall, dass wir eine bessere Versorgung der Leistungs-ICs brauchen.
Es müssen drei Bedingungen erfüllt sein, damit sich die Antriebe drehen können:

  1. Notaus darf nicht gedrückt sein (Schalter ist geschlossen)
  2. Die Spannung darf nicht höher als 24V sein (kein angestecktes Netzteil). D.h. die Antriebe sollen sich nur im Akkubetrieb drehen.
  3. Es muss ein Enable-Signal gesendet werden (Taste e mit dem virtuellen Joystick). Sobald dies geschieht, sieht man auf den Motorcontrollern eine grün leuchtende LED.
    Hast Du das alles geprüft?

Danke für die aufklärung!

Bislang leuchtete an den motor controllern keine LED.
Ich habe ein 19V laptop netzteil benutzt, weil ich vor gestern den akku nicht hier hatte.
Ich probiers jetzt mal mit akku.

Leider gehts trotz akku immernoch nicht.

Ich habe aber ein anderes Problem behoben:
es waren am CAN-bus keine jumper, und damit keine Widerstände gesetzt, sodass dort nichts gesendet/empfangen werden konnte.
…aber trotzdem keine an-gehende enable LEDs oder drehende motoren :(


Getestet sind:
Addressen (0 & 1 gleichzeitig, nur 0)
Am Bus wird geredet (mit oszilloskop nachgewiesen)
Akkuspannung (~20V)
Not-aus fest zugelötet
edu_drive_uart reagiert auf Kommandos von edu_virtual_joy
Enable wurde von edu_drive_uart versendet (laut dem was im terminal steht)

habe ich was vergessen zu machen?


PS:

Die LEDs am adapterboard (das was man auf den IOT steckt) scheinen sich bei jedem starten von edu_drive_uart zwischen 2 blinkmuster abzuwechseln

startvorgänge LEDs
1 Grün blinkend
2 Grün & Rot blinkend
3 wie 1
4 wie 2

kann der Knoten vielleicht nicht auf das Adapterboard zugreifen?

Nach weiteren Tests steht fest, dass auch an der UART-Schnittstelle geredet wird, aber nur vom IOT aus.
Das Adapterboard schickt/antwortet nicht.

Jetzt erst fällt mir auf, dass am Power Management board die LEDs gar nicht leuchten.
Die leuchten nur wenn man ein Netzteil anschließt, was aber wiederrum die Motoren ausschalten würde.

Selbst wenn ich Start, Not-Aus und An-schalter überbrücke gehen ohne Netzteil keine LEDs an.


Interessanterweise liefert das Power Management board trotzdem Strom an das restliche system