Ltf science

From DIDEAS Wiki
Jump to: navigation, search

PF Users Navigation:

Edit

Jan 31 2010

  • 10:30am at 205,000 cycles. The backlash continues to increase. The red line appears to fit the trend and has a slope of 41 counts (corrected) per hour. The limit is 22000, thus the expected stop time is 3 to 6am. [1]
  • At 75 hrs the firmware was updated to make the encoder read atomic. The encoder range event errors have dropped significantly (but not fully). Possibly the read is still non-atomic.... [2]
  • The workloop plot at 205k cycles shows a spike growing near the 0 motor position. [3]
  • A comparison of the workloop at the start of the run on Jan 27th, and the present time. There has been a ~1/2 rotation position shift - which is possibly due to slop - as at the zero position there is alignment, as well as in the positive force, and negative position area. PNG FIG

notes

s = importdata('\\192.168.192.27\cbarn\src\pfcmd_python\support\parsed_log.txt'); tm = (s(:,1)-s(1,1))/3600;
x=81:115;cnt1=2.075e4;cnt2=2.12e4;tm1=81;tm2=92; y=cnt1+(x-tm1)*(cnt2-cnt1)/(cnt2-cnt1);
plot(tm, s(:,3),'.',[0,110],[2.2e4,2.2e4],'r',x,y,'r','LineWidth',2);grid on;
ylabel('encoder counts');xlabel('hours into run');title('LTF Range of Motion (1-31-10)');

Jan 30 2010

  • Some plots from 70 hours into the run.
  • There is an interesting pattern in the excessive range of motion error condition.

[4]

  • Backlash starts at 50hrs.

[5]

  • Motor temperature is steady.

[6]


Dec 2009 - full range backdrive loops

time domain

  • Backdrive was -31000 to +21000 (full range), robot applied either a constant +3 amps or -3 amps. This plot is versus time. JR3 data is correctly aligned with robot data. Notice that change in force reading with robot (and thus backdrive) position

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_fullrange_backdrive_wmp_3amps_and_jr3.JPG [7]

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_fullrange_backdrive_wmp_3amps_zoom.JPG [8]

force vs motor rotations

  • Previous experiment with data ploted WRT to robot motor rotations - notice the periodic relationship in the forces wrt to motor.

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_fullrange_backdrive_vs_ak_motor_wmp_3amps_w_jr3.JPG [9]

  • Zoom into edge of above to make apparent the 0.55 motor rotation shift when robot torque current changes from +3 amps to -3 amps.

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_fullrange_backdrive_vs_ak_motor_wmp_3amps_w_jr3_zoom.JPG [10]

Dec 2009 - dynamic tests

  • 3 amp discrete discrete sine waves applied. This plot is versus time. (freq range ~10hz to 20hz)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_discrete_sine_sweep_with_jr3.JPG [11]

  • continuous time sine sweep from 1 to 200 hz. This plot is versus experiment time (but has a drive frq trace)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_continuous_sine_sweep_w_jr3.JPG [12]

  • Phase response - the movie:

http://bmech2.media.mit.edu/for_wiki/png/ltf/sine_drive_phase_response_8_to_30hz.avi


how to do dynamic test

  • login as root, cd /root/pfcmd on lifefix
  • after a power cycle of the robot on LTF - MAKE SURE BACKDRIVE IS OFF!!! (use ^C on ecat)
    • python do_command.py -p 1 -s 1115 1500 0 2
      • check for ~3 motor amps in MATLAB
      • sets mode 2 which comutates the ankle motor
    • python do_command.py -p 1 -s 1115 0 0 7
      • zero the current offset
    • python do_command.py -p 1 -s 1115 0 0 0
      • go back to mode 0

Requires the use of 3 programs on the LTF, and a number of programs on a support PC

  • on the PC start wifi_fast and the matlab plotter "plot_lifefix". When starting wifi_fast, specify a log file (-f) that is descriptive of the test.
  • for JR3 viewing, start a 2nd matlab plotter "plot_jr3"
  • On LTF: python lifefix_test.py npv : to enable the LWactual and reset the charge amp
  • start move_ecat with the desired position profile
    • cd ecat
    • to (slowly) sweep a position : ./move_ecat -m p2p -a 1 -d 1 -p 200 -r 100 -i -27000 -f 9000
      • -p 200 -> 200 passes, -r 100 -> 100 rpm.
      • -i and -f specify initial and final position end points (check for limits!).
      • -h help display
    • to hold position for a long seconds : ./move_ecat -m p2p -a 1 -d 1 -p 1 -r 100 -i 0 -f 0 -P 99999999


  • start the jr3 logger (w/1000 hz sample rate) with optional UDP logger and a description logging file name.
    • python log_loadcell.py -U 192.168.192.15 -R 1000 -f jr3_<TEST_DESCRIPTION>.txt
    • matlab (plot_jr3.m) must be running on machine specified by -U option
  • make sure that the charge amp is in the measure mode, be verifying that the LWactual plot is noisy.
    • may require the use of charge_amp_control.py
  • edit the lifefix_test.py stimulus program to set the desired amplitude of the tests.
  • run the stimulus program
    • python lifefix_test.py sweep
  • often lifefix_test will run indefinitely, use the command "python lifefix_test.py stop" when enough data has been collected.
  • stop all the data collectors
  • load the data into matlab, and if necessary, align the JR3 data with the SWIFI data.

dc sine sweep tests of 12-26-09

  • ran at 3 backdrive positions, 0, +15000, -25000
  • data files live here: \\pedant\xxxxxFiles\xxxxx LLC\data\ltf\2009_dec_26_dynamic_tests
            kca.set_fullscale_range(1000.0)
            lf.mc.dataport_set_readback_variable(position=2, variable_id=208);
            lf.mc.set_dataport_select(1);  # MC dataport_select - routes lifefix to dataport, not SC data
            lf.set_parameter('ff_force_gain',  27.0e-3);  # this value cancels newtons_to_amps
            lf.set_parameter('sine_amp',  2.5);            
            lf.set_parameter('desired_dc_force',5.0);
            lf.set_force_mode(force_mode='dc_sweep', sweep_seconds=40.0, sweep_range=[1,200])
            lf.set_parameter('current_limit',9);
            lf.send_run_command('start')            


white noise constant table

  • ran 6 test and 3 back drive positions, 0, +15k, -25k. Two tests run at each position - the difference being the sign of the DC component.
  • data files live here: \\pedant\xxxxxFiles\xxxxx LLC\data\ltf\2009_dec_26_dynamic_tests
            kca.set_fullscale_range(1000.0)
            lf.mc.dataport_set_readback_variable(position=2, variable_id=208);
            lf.mc.set_dataport_select(1);  # MC dataport_select - routes lifefix to dataport, not SC data
            lf.set_parameter('ff_force_gain',  27.0e-3);  # this value cancels newtons_to_amps
            lf.set_parameter('thrust_table_scale_factor', 5);
            lf.set_parameter('desired_dc_force',-5.0);
            lf.set_force_mode(force_mode='CONST_TABLE');
            lf.set_parameter('current_limit',12);
            lf.send_run_command('start')        

Dec 2009 - static test

some tricks to get things working

  • use do_command.py -p 1 -s 1115 1500 0 2 to set the motor phase
  • python static_test.py -J (use -J to avoid jr3_mean error)
  • when starting static_test confirm there is an AC LWactual signal sync w/qIq


potential function @ BD -11000, sweep -9 to 9 amps (in reverse BD experiment)

  • The backdrive motor was fixed at -11000, and the robot current was stepped with the following pattern: 0.2, -0.2, 0.4, -0.4, 0.6 amps, ..., 9, -9 amps. After the current step the system was allowed to settle. The LW was collected via RS232 - appx 87 samples averaged. This plot consists of appx 12 hrs of collection the full experiment cycled the backdrive motor from 21000 to -29000 (steps of -2000). This plot contains only the instances where the backdrive motor position == -11000. The LW (charge amp was not zeroed except at the very start of the experiment and its drift is apparent.) Ltf_matlab_source#ltf_pf-2009-12-16.m

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_ltf_potential_plot_9amps_bd_m11000.JPG [13]

force dependence on BD position (forward BD motion)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_force_dependence_on_bd_posion_121509.JPG [14]

mile encoder study

  • Bench test with +-6 amps for 20 hrs

bmech2.media.mit.edu http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_inc_mile_encoder_hist_560000.JPG [15]

  • MR encoder dependence on motor phase angle (no load, voltage limited)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_ec30_w_mr_enc_mod1000.JPG [16]

  • MILE encoder dependence on motor phase angle(RE40 negative voltage)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_re40_drive_of_ec30_mile_qV_vs_mod2048_minus2600rpm.JPG [17]

  • MILE encoder dependence on motor phase angle(RE40 positive voltage)

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_re40_drive_of_ec30_mile_qV_vs_mod2048_2600rpm.JPG [18]

  • unloaded MILE at 7000-8000 rpm, voltage limited. Notice the very large motor amp spikes - but less on the qIq. This suggests there is a large qId term.

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_ec30_w_mile_enc_mod.JPG [19]

early experiments

resonance observed developing belt thrash test

  • Holding the BD motor fixed, driving the robot motor w/current mode square wave at specified frequency.

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_belt_resonance.JPG [20]


zoom in - resonance observed developing belt thrash test

  • Zooming into a specific section:

http://bmech2.media.mit.edu/for_wiki/png/ltf/TN_belt_resonance_zoom.JPG [21]