See also:
Our Lokomat is heavily customized, doesn’t always work, and continues to be updated. To keep track of all changes and backtrack potential errors, an update log is kept on this page. If any changes to the system are made, or new problems are uncovered, they will be presented here.
Alex, Maurits
Worked on:
Changes made:
Knowledge Gained:
Alex, Maurits
Worked on:
Changes made:
Knowledge Gained:
Alex, Maurits
Worked on:
Changes made:
Knowledge Gained:
TreadmillErrorword
changes to 8
after some time. For more info, see Treadmill Error WordBreakActive
parameter stays on 1
, even though we can see the brake disengage. It’s clear now that the communication from the brake to the VFD seems to be defective. We can bypass this check by hardwiring it, or with a software bypass by modifying the simulink model somewhat.Maurits
Worked on:
Changes Made:
Now able to start and stop the treadmill motor as well as change its speed!
Knowledge Gained:
Stefano, Maurits
Worked on:
Changes Made:
Now able to read BWS encoder and potentiometer (not yet calibrated) and run the BWS motor from Simulink model
BWS encoder color coding (encoder cable):
1. Not connected
2. Vcc = green
3. GND = black
4. Not connected
5. A* = orange
6. A = red
7. B* = white
8. B = blue
9. I* = yellow (not connected to Beckhoff EL5101)
10. I = brown (not connected to Beckhoff EL5101)
Stefano, Maurits
Worked on:
Changes Made:
Treadmill is fully functional from Simulink Model. It is now possible to start, stop and change speed.
Performed some additional checks on the treadmill following Hocoma technical support instructions (see scheme below). The inductive sensor (on top of 9) is working properly, but no brake-active feedback is sent back from the inductive sensor to the xPC target. In the Mitsubishi inverter (17) Changed Pr.17=0 to bypass the MRS brake-active check. However, if the configuration Pr.17=4 is used, the treadmill does not work: the brake (9) is disengaged but the motor does not start.
Checked all connections and cable management.
Knowledge Gained:
Stefano, Alex
Worked on:
Changes Made:
BWS works, but needs some tuning of sensors, filters and control gains.
Rewired the Maxon Motor on top of the Lokomat (BWS motor) to the Maxon ADS_E driver.
BWS motor color coding:
Motor+ = Red = White (round connector) = Light Blue (ADS_E)
Motor- = Black = Brown (round connector) = Pink (ADS_E)
Humusoft BWS (Channel 3):
DA2 = analog-value
DO2 = digital-enable
Created a start_BWS.m script to launch tests with the BWS support.
Checked motor signs and encoder signs.
Performed some tests with the TestBWS.slx model to make the BWS move according to the desired trajectory.
Knowledge Gained:
P2 Offset
and P4 Imax
according to desired output motor current. Set to pre-adjustment values for the BWS (P2 = 0, P4 = 50% = 5A)TODO
Change frequency back to 1kHz (now is 500Hz).
Check potentiometer+encoder calibration.
Check Kalman and LP filters.
Stefano
Worked on:
Changes Made:
TestBWS_SDG.slx
model to test BWS sensors.Knowledge Gained:
Planning to get a potentiometer spare here
Stefano
Worked on:
Changes Made:
TestBWS_SDG.slx
model to test BWS sensors.Knowledge Gained:
Planning to get a potentiometer spare here.
Stefano
Worked on:
Changes Made:
Knowledge Gained:
The LinMot Multi-axis EtherCAT interface minimum cycle time is 2ms (500Hz)
Stefano
Worked on:
Changes Made:
startDemo_SDG.m
script to load/run/pause the Lokomat + Treadmill.LokoFreeNew_SDG.m
debug Simulink model for testing.Knowledge Gained:
The Lokomat Demo is now working with all installed modules.
Need to switch Knee R and L in the Humusoft board (they are inverted and I needed to switch wires in the HWOut Simulink Model)
Need to switch KneeR Motor+ and Motor- (they are inverted and I needed to add a -1 gain to the KneeR before the Humusoft Simulink Block)
Some tuning required in:
- BWS
- Pelvis
- KneeR and KneeL (also retune Maxon ADS_E trimmers)
Alex
Worked on:
Changes Made:
DEL
key on startup).Knowledge Gained:
xpcexplr
) and have the machine boot from this.
Alex and Stefano
Worked on:
LinMot Drivers, LinMot Talk and TWINCAT to enable Current mode on hip actuators
Changes Made:
Install LinMot Talk 5.0 (3.17 Build B20120710 Firmware version, from LinMot Talk V5S1 B20121010). We can try to update the firwmare of the LinMot Drivers, but today this is not needed.
Connect LinMot Talk with the Axis 3 Driver (RA) following this guide. We bought a UGREEN connector to do it.
In LinMot Talk, change Parameters - Motion Control SW - Drive Configuration - X14 I/O Definitions - Diff Analog In -10..10V - Analog Input - Signal Type - Current
(UPID 62B3h from 0000h
to 0002h
).
In LinMot Talk, change Parameters - Motion Control SW - State Machine Setup - Special Mode - Mode - +/- 10V Current Command Mode
(UPID 62F8h from 0000h
to 0001h
)
Parameters - Motion Control SW - State Machine Setup - Special Mode - Current Command Config - Value 5A
(can be tuned according to motor specification) (UPID E2B5h from 0000h
to 1388h
)In LinMot Talk, Control Panel, Override Homing Mode, then Override Special Mode. The LinMot is now current controlled.
In TWINCAT, send the ControlWord 2239
(dec) to activate Homing Mode
, then send the ControlWord 1215
(dec) to activate the Special Mode
.
Knowledge Gained:
The B1150 can be current-controlled through the Special Mode.
Set the ControlWord through Ethercat to 1215 to enable Special Mode.
In Simulink, to date, trajectory following is done through the Motion Command Interface, which overrides the ControlWord. We can get rid of the Motion Command Interface and just use the ControlWord and an Analog Signal. Homing mode is still functional.
Alternatively, in LinMot Talk, additional features can be enabled to use the Analog mode without EtherCAT:
Parameters - Motion Control SW - Motion Interface - Run Mode Settings - Run Mode Selection (UPID 62A8h from Motion Command Interface
to Analog
).
In LinMot Talk, to reproduce Encoder Signals on X13 Output Connector, change Motion Control SW -> Motor Configuration -> Position Feedback -> Feedback on X13 -> Sensor Type -> Encoder Simulation
(UPID 6118h
from 0000h to 0007)
TO-DO:
Change Configuration for Axis 4,5,6
Connect Humusoft board signals to the X14 Input Connectors
Test current-control with a simple Simulink Model, evaluate delays and latency.
Stefano
Worked on:
Changes Made:
Connect Humusoft board signals to the X14 Input Connectors (with Maurits help).
Created a new Simulink model to control Hip actuators through the Humusoft analog signals.
Implemented soft-stop control, coupling control, and viscous compensation control.
Briefly tested, stiction and static friction is still noticeable.
Knowledge Gained:
Hip actuators can work in current control mode within Simulink. Transparency is fair and movement is quite smooth.
Control frequency is still very low
Stefano
Worked on:
Changes Made:
The Hip actuators are now controlled in Special Mode, which permits to control the actuators in current/force control. The target current is set to the driver through the Humusoft board.
The Knee actuators are controlled in current control through the Humusoft board.
Hip - the following controllers have been implemented:
Knees - the following controllers have been implemented:
Knowledge Gained:
The Lokomat legs can be controlled in transparent mode.
Left leg (hip and knee) exhibits higher friction than right leg. To be investigated.
Control frequency is still very low. Due to this, the knees sometimes exhibit unstable behavior when close to the end-stop. Need for proper gains tuning.
Stefano and Thomas
Worked on:
Changes Made:
Knowledge Gained:
MATLAB R2013b only works with EtherCAT Configurator
MATLAB R2017b only works with TwinCAT
The Lokomat can now be controlled at 1kHz. The knee drives behavior has improved, showing good rendering capability.
The Lokomat demo runs at 500 Hz.
The Maxon drivers 24V is not connected to the Lokomat Emergency Stop. Should be fixed asap.
Stefano and Alex
Worked on:
Changes Made:
Added extra NIC, because couldnt do host-target communication and UDP communication using the same NIC.
The new NIC is used for EtherCAT communication, as it is not compatible for UDP (I8254x), which frees up the older one for UDP. (To see what PCI port has what, type getxpcpci('all')
)
1
, Slot: 11
- Intel I8254x1
, Slot: 8
- Intel I825591
, Slot: 9
- Intel I82559Made a new Simulink model called Treadmill_UDP.slx
, which is the exact same but also includes some UDP blocks.
Knowledge Gained:
Real-Time UDP only works on I8255x cards.
On LokoFree, you can’t run Host-Target communication at the same time as UDP on a single NIC. However, on LokoBasis you can (for whatever reason).
UDP communication runs at 1kHz on LokoFree (uses
Real-Time UDP blocks
). LokoBasis uses other xPC UDP blocks, which run over the same cables as the host-target connection.
We ran into an issue where the LMIF Error on the LokoBasis suddenly turned to
3
--> MeaningWatchdog timer error
(communication between motor driver and treadmill computer was dropping), which made the treadmill brake act very strange turning on/off. To fix this we changed 4 things, and we’re not (yet) sure what was the actual fix: 1. Different network switch, 2. Changed ports from25000
to25005
, 3. We lowered the send rate of the UDP connection from LokoFree to LokoBasis to100Hz
, 4. Reduced the amount of displays etc. We think it is most likely fixed by 3, the lowering of the send rate.
Stefano and Thomas
Worked on:
Changes Made:
Emergency Stop now kills LinMot Drivers and Maxon Drivers power supply.
Stefano and Alex vdB
Worked on:
Changes made:
Knowledge gained:
Pelvis rotation angles are very noisy. We decided to not use them in the computation of the forward kinematics (hip angles)