use esum to stop motor when stalling to avoid damage
authorErik Andresen <erik@vontaene.de>
Sun, 14 Aug 2016 17:44:41 +0000 (19:44 +0200)
committerErik Andresen <erik@vontaene.de>
Sun, 14 Aug 2016 17:44:41 +0000 (19:44 +0200)
avr/motor_ctrl/main.c
avr/motor_ctrl/main.hex
scripts/wt_node.py

index 576d57c..3dca8cc 100644 (file)
@@ -687,7 +687,8 @@ static void update_motor(void) {
        static int16_t m3_old=SHRT_MIN;
        static int16_t m4_old=SHRT_MIN;
 
-       error_state = ~((PIND & 0x40)>>3 | (PINB & 0x07)) & 0xf;
+       error_state &= 0xf0; // clear lower bits
+       error_state |= ~((PIND & 0x40)>>3 | (PINB & 0x07)) & 0xf;
 
        if (m1_old != motor1) { // update only when changed
                if (motor1 == 0) {
@@ -857,11 +858,39 @@ static void update_pid(void) {
        static int32_t esum3=0;
        static int32_t esum4=0;
 
+       // protect motors from damage if stalling
+       if (labs(esum1) > 120000 && speed1 == 0) {
+               motor1 = 0;
+               motor1_mode = MOTOR_MANUAL;
+               error_state |= (1<<4);
+               esum1 = 0;
+       }       
+       if (labs(esum2) > 120000 && speed2 == 0) {
+               motor2 = 0;
+               motor2_mode = MOTOR_MANUAL;
+               error_state |= (1<<5);
+               esum2 = 0;
+       }       
+       if (labs(esum3) > 120000 && speed3 == 0) {
+               motor3 = 0;
+               motor3_mode = MOTOR_MANUAL;
+               error_state |= (1<<6);
+               esum3 = 0;
+       }       
+       // protect motors from damage if stalling
+       if (labs(esum4) > 120000 && speed4 == 0) {
+               motor4 = 0;
+               motor4_mode = MOTOR_MANUAL;
+               error_state |= (1<<7);
+               esum4 = 0;
+       }       
+
        if (motor1_mode == MOTOR_PID) {
                if (speed1_wish == 0) {
                        motor1 = 0;
                        eold1 = 0;
                        esum1 = 0;
+                       error_state &= ~(1<<4);
                } else {
                        int16_t e = speed1_wish - speed1;
                        esum1+=e;
@@ -879,6 +908,7 @@ static void update_pid(void) {
                        motor2 = 0;
                        eold2 = 0;
                        esum2 = 0;
+                       error_state &= ~(1<<5);
                } else {
                        int16_t e = speed2_wish - speed2;
                        esum2+=e;
@@ -896,6 +926,7 @@ static void update_pid(void) {
                        motor3 = 0;
                        eold3 = 0;
                        esum3 = 0;
+                       error_state &= ~(1<<6);
                } else {
                        int16_t e = speed3_wish - speed3;
                        esum3+=e;
@@ -913,6 +944,7 @@ static void update_pid(void) {
                        motor4 = 0;
                        eold4 = 0;
                        esum4 = 0;
+                       error_state &= ~(1<<7);
                } else {
                        int16_t e = speed4_wish - speed4;
                        esum4+=e;
@@ -1013,17 +1045,17 @@ int main(void) {
 
                        if (aft_handicap > 0) {
                                speed1_wish = speed_wish_left * (100-aft_handicap)/100.0;
-                               speed4_wish = speed_wish_right * (100-aft_handicap)/100.0;
+                               speed3_wish = speed_wish_right * (100-aft_handicap)/100.0;
                        } else {
                                speed1_wish = speed_wish_left;
-                               speed4_wish = speed_wish_right;
+                               speed3_wish = speed_wish_right;
                        }
                        if (front_handicap > 0) {
                                speed2_wish = speed_wish_left * (100-front_handicap)/100.0;
-                               speed3_wish = speed_wish_right * (100-front_handicap)/100.0;
+                               speed4_wish = speed_wish_right * (100-front_handicap)/100.0;
                        } else {
                                speed2_wish = speed_wish_left;
-                               speed3_wish = speed_wish_right;
+                               speed4_wish = speed_wish_right;
                        }
                        motor1_mode = MOTOR_PID;
                        motor2_mode = MOTOR_PID;
index b6df9bd..edffdd9 100644 (file)
 :1001A000A9020C50B9918688083CA6AAAA2ABE00CA\r
 :1001B0000000803F45464765666700202B2D2E30A6\r
 :1001C00031323334353637383968000011241FBED8\r
-:1001D000CFE5D8E0DEBFCDBF10E0A0E6B0E0E8E0BC\r
-:1001E000F7E202C005900D92AA37B107D9F721E0D6\r
+:1001D000CFE5D8E0DEBFCDBF10E0A0E6B0E0E8EBB1\r
+:1001E000F8E202C005900D92AA37B107D9F721E0D5\r
 :1001F000AAE7B0E001C01D92A836B207E1F70E945D\r
-:1002000020060C9482130C9400001F920F920FB6DC\r
+:1002000020060C945A140C9400001F920F920FB603\r
 :100210000F9211242F933F934F935F936F937F938C\r
 :100220008F939F93AF93BF93EF93FF9381B1887F99\r
 :10023000803881F040F4803609F01CC385EC86BF1D\r
@@ -74,7 +74,7 @@
 :100490008091A4009091A500A091A600B091A70022\r
 :1004A0006627782F892F9A2F622B6093A400709370\r
 :1004B000A5008093A6009093A70023E33BE542E8C4\r
-:1004C00055E40E9431100E94110F7093D100609387\r
+:1004C00055E40E9409110E94E90F7093D1006093D6\r
 :1004D000D0007093CF006093CE0081E08093D7006E\r
 :1004E0008093D600B7C183B190E0A0E0B0E00EC029\r
 :1004F00023B18091A4009091A500A091A600B09195\r
@@ -91,7 +91,7 @@
 :1005A000D30058C183B18093AB0003C083B1809363\r
 :1005B000AA0081E08093F2004DC18091E90090E0B3\r
 :1005C000FC013297E13AF10508F04BC1E65DFF4FBF\r
-:1005D0000C94FD108AB59BB53CC188B599B539C15D\r
+:1005D0000C94D5118AB59BB53CC188B599B539C184\r
 :1005E00083B537C18CB735C113B834C18091DE00F3\r
 :1005F0009091DF000EC08091DC009091DD0009C079\r
 :100600008091DA009091DB0004C08091D800909135\r
 :100AA0000F900FBE0F901F9018959C018AB188611E\r
 :100AB0008AB9579A80B5866080BD40E050E084E0F6\r
 :100AC000220F331F441F551F8A95D1F760E079E04C\r
-:100AD0008DE390E00E94DE10DA01C9010197A109BF\r
+:100AD0008DE390E00E94B611DA01C9010197A109E6\r
 :100AE000B109892F9A2FAB2FBB27A7FDBA9580BDDF\r
 :100AF000215029B987EF90E09093F4008093F300A0\r
 :100B00009093F6008093F50008955D9BFECFFC0165\r
 :100B3000DF91CF910895CF93DF93EC01CE01219601\r
 :100B4000FC012081222319F00E948505F7CFDF9157\r
 :100B5000CF9108955F9BFECF8CB190E008950C94E7\r
-:100B6000AA056FEA75E08BE895E00C943011CF93FD\r
+:100B6000AA056FEA75E08BE895E00C940812CF9324\r
 :100B7000DF93FC01E253FF4FA081B181EC01C4532C\r
 :100B8000DF4F28813981A217B307A1F05D9B12C006\r
 :100B90002C912CB920813181AC0145535F4F241732\r
 :100C70000E9455050E94B10580E582B986B78B7E3A\r
 :100C800086BF85EC86BF81EA8FBD89E08EBD1BBC27\r
 :100C90001ABC19BC18BC89E685BD13BC83BF1CBE39\r
-:100CA00080E790E00E94AD1185B78F7885BF84E022\r
+:100CA00080E790E00E94851285B78F7885BF84E049\r
 :100CB00089BF78942224239433243A940FEF10E0D0\r
 :100CC0008091E9008F3F41F48091E800853A21F45A\r
 :100CD000F894E0E0F8E109958091F200882309F4A6\r
 :100CE000E4C0F8948090EA009090EB00A090EC00B3\r
 :100CF000B090ED006091EE007091EF008091F000F7\r
 :100D00009091F1001092F200789427EB3BE04DEBCC\r
-:100D10005EE30E94311020E030E040E05FE30E949B\r
-:100D20003110A50194010E943E0E6B017C01A501CA\r
-:100D30009401C501B4010E943E0EA70196010E94D4\r
-:100D40003D0E23E33BE542E855E40E9431104B01A0\r
+:100D10005EE30E94091120E030E040E05FE30E94C2\r
+:100D20000911A50194010E94160F6B017C01A50118\r
+:100D30009401C501B4010E94160FA70196010E94FB\r
+:100D4000150F23E33BE542E855E40E9409114B01EE\r
 :100D50005C0123E33BE542E855E4C701B6010E948C\r
-:100D600031106B017C018091AA008823C9F1809128\r
+:100D600009116B017C018091AA008823C9F180914F\r
 :100D7000AA0024E630E0281B3109B901882777FD55\r
-:100D80008095982F0E94440F9B01AC01C501B401CE\r
-:100D90000E94311020E030E048EC52E40E94A90E9D\r
-:100DA0000E94110F7093D1006093D0008091AA002F\r
+:100D80008095982F0E941C109B01AC01C501B401F5\r
+:100D90000E94091120E030E048EC52E40E94810FEB\r
+:100DA0000E94E90F7093D1006093D0008091AA0057\r
 :100DB00044E650E0481B5109BA01882777FD809529\r
-:100DC000982F0E94440F9B01AC01C701B6010E94FD\r
-:100DD000311020E030E048EC52E40E94A90E0AC035\r
-:100DE000C501B4010E94110F7093D1006093D0002F\r
-:100DF000C701B6010E94110F7093CB006093CA0027\r
+:100DC000982F0E941C109B01AC01C701B6010E9424\r
+:100DD000091120E030E048EC52E40E94810F0AC083\r
+:100DE000C501B4010E94E90F7093D1006093D00057\r
+:100DF000C701B6010E94E90F7093CD006093CC004B\r
 :100E00008091AB008823C1F18091AB00E4E6F0E073\r
 :100E1000E81BF109BF01882777FD8095982F0E9474\r
-:100E2000440F9B01AC01C501B4010E94311020E0C8\r
-:100E300030E048EC52E40E94A90E0E94110F70931A\r
+:100E20001C109B01AC01C501B4010E94091120E016\r
+:100E300030E048EC52E40E94810F0E94E90F709369\r
 :100E4000CF006093CE008091AB0064E670E0681B39\r
-:100E50007109882777FD8095982F0E94440F9B0188\r
-:100E6000AC01C701B6010E94311020E030E048EC2F\r
-:100E700052E40E94A90E0AC0C501B4010E94110FDC\r
-:100E80007093CF006093CE00C701B6010E94110F8E\r
-:100E90007093CD006093CC00F1E0F093D700F09315\r
+:100E50007109882777FD8095982F0E941C109B01AF\r
+:100E6000AC01C701B6010E94091120E030E048EC56\r
+:100E700052E40E94810F0AC0C501B4010E94E90F2B\r
+:100E80007093CF006093CE00C701B6010E94E90FB6\r
+:100E90007093CB006093CA00F1E0F093D700F09319\r
 :100EA000D600F093D500F093D4008091C9008C391E\r
-:100EB00008F48EC51092C900F8942091DE0030919C\r
+:100EB00008F466C61092C900F8942091DE003091C3\r
 :100EC000DF003A8329834091DC005091DD005C8390\r
 :100ED0004B838091DA009091DB009E838D83E091BB\r
 :100EE000D800F091D900F887EF837894809198002A\r
 :100F000097006A01C81AD90A8091940090919500BF\r
 :100F10006D807E80681A790A80919200909193008A\r
 :100F20002F01481A590AB701882777FD8095982F15\r
-:100F30000E94440F2AE037ED43E25CE30E94A90ED1\r
-:100F40000E94110F6D877E878F87988BB601882747\r
-:100F500077FD8095982F0E94440F2AE037ED43E2F9\r
-:100F60005CE30E94A90E0E94110F698B7A8B8B8B18\r
-:100F70009C8BB301882777FD8095982F0E94440FA2\r
-:100F80002AE037ED43E25CE30E94A90E0E94110FB4\r
+:100F30000E941C102AE037ED43E25CE30E94810F1F\r
+:100F40000E94E90F6D877E878F87988BB60188276F\r
+:100F500077FD8095982F0E941C102AE037ED43E220\r
+:100F60005CE30E94810F0E94E90F698B7A8B8B8B67\r
+:100F70009C8BB301882777FD8095982F0E941C10C9\r
+:100F80002AE037ED43E25CE30E94810F0E94E90F03\r
 :100F90006D8B7E8B8F8B988FB201882777FD809524\r
-:100FA000982F0E94440F2AE037ED43E25CE30E9451\r
-:100FB000A90E0E94110F698F7A8F8B8F9C8FB701BA\r
-:100FC0006C0D7D1D882777FD8095982F0E94440F1A\r
-:100FD00023E33BE542E056E40E94A90E4B015C018D\r
+:100FA000982F0E941C102AE037ED43E25CE30E9478\r
+:100FB000810F0E94E90F698F7A8F8B8F9C8FB70109\r
+:100FC0006C0D7D1D882777FD8095982F0E941C1041\r
+:100FD00023E33BE542E056E40E94810F4B015C01B4\r
 :100FE000B301640D751D882777FD8095982F0E94A9\r
-:100FF000440F23E33BE542E056E40E94A90E2B0197\r
-:101000003C01A50194010E943D0E27EB3BE04DEB16\r
-:101010005EE30E94A90E69877A878B879C8760911F\r
+:100FF0001C1023E33BE542E056E40E94810F2B01E5\r
+:101000003C01A50194010E94150F27EB3BE04DEB3D\r
+:101010005EE30E94810F69877A878B879C87609146\r
 :10102000B5007091B6008091B7009091B800298505\r
-:101030003A854B855C850E943E0E6B017C012BED51\r
-:101040003FE049EC50E40E942D1018164CF42BEDB3\r
-:101050003FE049EC50E4C701B6010E943D0E12C0CA\r
-:101060002BED3FE049EC50ECC701B6010E94A20E07\r
+:101030003A854B855C850E94160F6B017C012BED78\r
+:101040003FE049EC50E40E94051118164CF42BEDDA\r
+:101050003FE049EC50E4C701B6010E94150F12C0F1\r
+:101060002BED3FE049EC50ECC701B6010E947A0F2E\r
 :1010700087FF0AC02BED3FE049EC50E4C701B60101\r
-:101080000E943E0E6B017C01A3019201C501B401D7\r
-:101090000E943E0E20E030E040E05FE30E9431100D\r
+:101080000E94160F6B017C01A3019201C501B401FE\r
+:101090000E94160F20E030E040E05FE30E9409115B\r
 :1010A0004B015C014090BD005090BE006090BF00BD\r
-:1010B0007090C000C701B6010E94A60EA501940160\r
-:1010C0000E9431109B01AC01C301B2010E943E0E8F\r
+:1010B0007090C000C701B6010E947E0FA501940187\r
+:1010C0000E9409119B01AC01C301B2010E94160FDD\r
 :1010D0006D8F7E8F8F8F98A34090B9005090BA008B\r
-:1010E0006090BB007090BC00C701B6010E949410D4\r
-:1010F000A50194010E9431109B01AC01C301B20112\r
-:101100000E943E0E2B013C012AE037ED43E25CE3F6\r
-:10111000C501B4010E94A90E4B015C012AE037ED24\r
-:1011200043E25CE369857A858B859C850E94A90EE4\r
+:1010E0006090BB007090BC00C701B6010E946C11FB\r
+:1010F000A50194010E9409119B01AC01C301B20139\r
+:101100000E94160F2B013C012AE037ED43E25CE31D\r
+:10111000C501B4010E94810F4B015C012AE037ED4B\r
+:1011200043E25CE369857A858B859C850E94810F0B\r
 :10113000F894C092B500D092B600E092B700F09259\r
 :10114000B8002D8D3E8D4F8D58A12093BD0030935A\r
 :10115000BE004093BF005093C0004092B90050922F\r
 :1011B000AE008093AF009093B000789489819A81BB\r
 :1011C0009093990080939800EB81FC81F0939700B5\r
 :1011D000E09396002D813E813093950020939400FA\r
-:1011E0004F81588550939300409392008091D7008F\r
-:1011F000813009F0AFC08091D0009091D100892B4F\r
-:1012000089F41092E7001092E6001092910010927B\r
-:10121000900010928C0010928D0010928E0010920F\r
-:101220008F0098C0A090D000B090D1008091C700EE\r
-:101230009091C800A81AB90AB501882777FD809552\r
-:10124000982FC0908C00D0908D00E0908E00F09090\r
-:101250008F00C60ED71EE81EF91EC0928C00D092D9\r
-:101260008D00E0928E00F0928F000E94440F27E7DD\r
-:101270003EEB4FE15DE30E9431102B013C01C701C1\r
-:10128000B6010E94440F27E137EB41E55AE30E9483\r
-:1012900031109B01AC01C301B2010E943E0E6B01F3\r
-:1012A0007C018091900090919100B501681B790BB1\r
-:1012B000882777FD8095982F0E94440F20E030E02A\r
-:1012C000A9010E9431109B01AC01C701B6010E9427\r
-:1012D0003E0E0E94110F7093E7006093E600B092FB\r
-:1012E0009100A09290008091E6009091E70018167E\r
-:1012F000190634F48091D0009091D10097FD0DC073\r
-:101300008091E6009091E70097FF0CC08091D0009B\r
-:101310009091D100181619062CF41092E700109243\r
-:10132000E60018C08091E6009091E7008F3F91059C\r
-:1013300031F02CF01093E7000093E6000BC0809191\r
-:10134000E6009091E70081309F4F24F43092E7004F\r
-:101350002092E6008091D600813009F0AFC08091E4\r
-:10136000CE009091CF00892B89F41092E500109265\r
-:10137000E40010928B0010928A0010928600109266\r
-:101380008700109288001092890098C0A090CE002B\r
-:10139000B090CF008091C5009091C600A81AB90AFC\r
-:1013A000B501882777FD8095982FC0908600D09052\r
-:1013B0008700E0908800F0908900C60ED71EE81ED6\r
-:1013C000F91EC0928600D0928700E0928800F092C9\r
-:1013D00089000E94440F27E73EEB4FE15DE30E9446\r
-:1013E00031102B013C01C701B6010E94440F27E1D7\r
-:1013F00037EB41E55AE30E9431109B01AC01C30178\r
-:10140000B2010E943E0E6B017C0180918A00909196\r
-:101410008B00B501681B790B882777FD8095982F85\r
-:101420000E94440F20E030E0A9010E9431109B018E\r
-:10143000AC01C701B6010E943E0E0E94110F7093CD\r
-:10144000E5006093E400B0928B00A0928A00809146\r
-:10145000E4009091E5001816190634F48091CE004E\r
-:101460009091CF0097FD0DC08091E4009091E50030\r
-:1014700097FF0CC08091CE009091CF0018161906EE\r
-:101480002CF41092E5001092E40018C08091E40062\r
-:101490009091E5008F3F910531F02CF01093E5001D\r
-:1014A0000093E4000BC08091E4009091E50081304E\r
-:1014B0009F4F24F43092E5002092E4008091D50003\r
-:1014C000813009F0AFC08091CC009091CD00892B84\r
-:1014D00089F41092E3001092E200109285001092BD\r
-:1014E000840010928000109281001092820010926D\r
-:1014F000830098C0A090CC00B090CD008091C30034\r
-:101500009091C400A81AB90AB501882777FD809583\r
-:10151000982FC0908000D0908100E0908200F090E1\r
-:101520008300C60ED71EE81EF91EC0928000D0921E\r
-:101530008100E0928200F09283000E94440F27E72E\r
-:101540003EEB4FE15DE30E9431102B013C01C701EE\r
-:10155000B6010E94440F27E137EB41E55AE30E94B0\r
-:1015600031109B01AC01C301B2010E943E0E6B0120\r
-:101570007C018091840090918500B501681B790BF6\r
-:10158000882777FD8095982F0E94440F20E030E057\r
-:10159000A9010E9431109B01AC01C701B6010E9454\r
-:1015A0003E0E0E94110F7093E3006093E200B09230\r
-:1015B0008500A09284008091E2009091E3001816CB\r
-:1015C000190634F48091CC009091CD0097FD0DC0A8\r
-:1015D0008091E2009091E30097FF0CC08091CC00D5\r
-:1015E0009091CD00181619062CF41092E300109279\r
-:1015F000E20018C08091E2009091E3008F3F9105D6\r
-:1016000031F02CF01093E3000093E2000BC08091C6\r
-:10161000E2009091E30081309F4F24F43092E30088\r
-:101620002092E2008091D400813009F0AFC0809117\r
-:10163000CA009091CB00892B89F41092E10010929E\r
-:10164000E00010927F0010927E0010927A001092BB\r
-:101650007B0010927C0010927D0098C0A090CA0080\r
-:10166000B090CB008091C1009091C200A81AB90A35\r
-:10167000B501882777FD8095982FC0907A00D0908B\r
-:101680007B00E0907C00F0907D00C60ED71EE81E27\r
-:10169000F91EC0927A00D0927B00E0927C00F0921A\r
-:1016A0007D000E94440F27E73EEB4FE15DE30E947F\r
-:1016B00031102B013C01C701B6010E94440F27E104\r
-:1016C00037EB41E55AE30E9431109B01AC01C301A5\r
-:1016D000B2010E943E0E6B017C0180917E009091D0\r
-:1016E0007F00B501681B790B882777FD8095982FBF\r
-:1016F0000E94440F20E030E0A9010E9431109B01BC\r
-:10170000AC01C701B6010E943E0E0E94110F7093FA\r
-:10171000E1006093E000B0927F00A0927E00809193\r
-:10172000E0009091E1001816190634F48091CA0087\r
-:101730009091CB0097FD0DC08091E0009091E10069\r
-:1017400097FF0CC08091CA009091CB001816190623\r
-:101750002CF41092E1001092E00018C08091E0009B\r
-:101760009091E1008F3F910531F02CF01093E10052\r
-:101770000093E0000BC08091E0009091E100813087\r
-:101780009F4F24F43092E1002092E00080B326B312\r
-:10179000807490E0A3E095958795AA95E1F727706E\r
-:1017A000282B20952F702093A9008091E60090911E\r
-:1017B000E700209166003091670028173907C9F1CA\r
-:1017C0008091E6009091E700892B19F485B3837F1F\r
-:1017D0001CC080916900811107C08091E600909142\r
-:1017E000E7001816190654F080916900882351F01B\r
-:1017F0008091E6009091E70097FF04C085B3877F52\r
-:10180000846003C085B38B7F886085BB8091E600D0\r
-:101810009091E70090936700809366008091E600C6\r
-:101820009091E70097FF03C09195819591099BBD29\r
-:101830008ABD8091E4009091E50020916400309190\r
-:10184000650028173907C9F18091E4009091E500FF\r
-:10185000892B19F485B38F7C1CC08091680081119D\r
-:1018600007C08091E4009091E5001816190654F025\r
-:1018700080916800882351F08091E4009091E50008\r
-:1018800097FF04C085B38F7D806103C085B38F7ED1\r
-:10189000806285BB8091E4009091E50090936500A3\r
-:1018A000809364008091E4009091E50097FF03C06D\r
-:1018B00091958195910999BD88BD8091E2009091A3\r
-:1018C000E300209162003091630028173907C1F1CD\r
-:1018D0008091E2009091E300892B19F485B38F7316\r
-:1018E0001CC08091D300811107C08091E2009091CB\r
-:1018F000E3001816190654F08091D300882351F0A4\r
-:101900008091E2009091E30097FF04C085B38F7748\r
-:10191000806403C085B38F7B806885BB8091E200C3\r
-:101920009091E30090936300809362008091E200C5\r
-:101930009091E30097FF03C091958195910983BD34\r
-:101940008091E0009091E100209160003091610071\r
-:1019500028173907C1F18091E0009091E100892BAF\r
-:1019600019F482B3837F1CC08091D200811107C01B\r
-:101970008091E0009091E1001816190654F08091D2\r
-:10198000D200882351F08091E0009091E10097FF10\r
-:1019900004C082B3877F846003C082B38B7F88607A\r
-:1019A00082BB8091E0009091E10090936100809370\r
-:1019B00060008091E0009091E10097FF03C0919555\r
-:1019C000819591098CBF8091AC008F5F8093AC00B2\r
-:1019D00085B7806885BF889585B78F7785BF70C9C3\r
-:1019E0006F927F929F92AF92BF92CF92DF92EF92CF\r
-:1019F000FF920F931F93CF93DF93CDB7DEB72C9752\r
-:101A00000FB6F894DEBF0FBECDBF8C017B013A014B\r
-:101A1000FC0117821682838181FF19C1CE010196D4\r
-:101A20005C01F801D380F701D3FC2591D3FE21910D\r
-:101A30007F01222309F407C1253249F4D3FC259103\r
-:101A4000D3FE21917F01253211F0912C1BC0B801EA\r
-:101A5000822F90E00E947B1163013601E2CF2223A6\r
-:101A600009F4F1C0622F70E08BEB91E02C870E94AB\r
-:101A700025112C85892B49F0F701D3FC2591D3FE44\r
-:101A800021917F0197FEEBCF0CC0233221F4F92D79\r
-:101A9000F0619F2EF1CF2C3639F4292D2068922E3B\r
-:101AA000EBCF222309F4CFC0622F70E084EB91E0EA\r
-:101AB0002C870E9425112C85892B41F06301F4E0CD\r
-:101AC000CF0ED11CB8018FE390E012C0233641F055\r
-:101AD000233789F0233521F5F92DF1609F2E0BC0B6\r
-:101AE000630122E0C20ED11CB801F3018081918113\r
-:101AF0000E947B11B2CF630122E0C20ED11CF30120\r
-:101B000060807180F30190FC859190FE81913F018E\r
-:101B1000882309F4A2CFB80190E00E947B11F2CF94\r
-:101B2000243611F0293639F5630197FE09C0F4E037\r
-:101B3000CF0ED11CF30160817181828193810AC033\r
-:101B4000F2E0CF0ED11CF30160817181882777FD0F\r
-:101B50008095982FF92DFF7E9F2E97FF09C09095B5\r
-:101B60008095709561957F4F8F4F9F4FF0649F2EAA\r
-:101B70002AE030E038C02037A1F040F42835D1F019\r
-:101B80002F3609F060C028E030E019C0253719F081\r
-:101B9000283751F058C0292D2F7E922E2AE030E0B0\r
-:101BA0000EC0892D8061982E992D9462992E20E186\r
-:101BB00030E005C0E92DE4609E2E20E132E06301B3\r
-:101BC00097FE09C0F4E0CF0ED11CF3016081718152\r
-:101BD0008281938108C0F2E0CF0ED11CF3016081B5\r
-:101BE000718180E090E0A5010E94DA11782E7A18C8\r
-:101BF00096FE05C0B8018DE290E00E947B1194FE34\r
-:101C000016C0FE01E70DF11D8081803381F0B8011F\r
-:101C100080E390E00E947B1192FE09C0292D207282\r
-:101C2000822F90E0B801885A9F4F0E947B117A94CE\r
-:101C3000F501E70DF11D8081B80190E00E947B1154\r
-:101C40007110F5CF0ACFF8018681978102C08FEF1E\r
-:101C50009FEF2C960FB6F894DEBF0FBECDBFDF917D\r
-:101C6000CF911F910F91FF90EF90DF90CF90BF9099\r
-:101C7000AF909F907F906F9008955058BB27AA27F0\r
-:101C80000ED0A0C169D130F06ED120F031F49F3F69\r
-:101C900011F41EF45EC10EF4E095E7FB54C1E92F88\r
-:101CA000B3D180F3BA17620773078407950718F05A\r
-:101CB00071F49EF5CBC10EF4E0950B2EBA2FA02D3A\r
-:101CC0000B01B90190010C01CA01A0011124FF27E9\r
-:101CD000591B99F0593F50F4503E68F11A16F040E4\r
-:101CE000A22F232F342F4427585FF3CF46953795E3\r
-:101CF0002795A795F0405395C9F77EF41F16BA0BA8\r
-:101D0000620B730B840BBAF09150A1F0FF0FBB1F55\r
-:101D1000661F771F881FC2F70EC0BA0F621F731F9E\r
-:101D2000841F48F4879577956795B795F7959E3FFB\r
-:101D300008F0B3CF9395880F08F09927EE0F979589\r
-:101D400087950895DCD008F481E0089514D1E395D7\r
-:101D50004AC10CD037C107D140F0FED030F021F499\r
-:101D60005F3F19F0F0C0511172C1F3C04DD198F32B\r
-:101D70009923C9F35523B1F3951B550BBB27AA270C\r
-:101D800062177307840738F09F5F5F4F220F331F7E\r
-:101D9000441FAA1FA9F333D00E2E3AF0E0E830D04A\r
-:101DA00091505040E695001CCAF729D0FE2F27D04D\r
-:101DB000660F771F881FBB1F261737074807AB071B\r
-:101DC000B0E809F0BB0B802DBF01FF2793585F4F90\r
-:101DD0002AF09E3F510568F0B6C039C15F3FECF371\r
-:101DE000983EDCF3869577956795B795F7959F5F55\r
-:101DF000C9F7880F911D9695879597F90895E1E0A9\r
-:101E0000660F771F881FBB1F621773078407BA0707\r
-:101E100020F0621B730B840BBA0BEE1F88F7E09562\r
-:101E2000089504D06894B11112C10895F5D088F0D6\r
-:101E30009F5790F0B92F9927B751A0F0D1F0660FB6\r
-:101E4000771F881F991F1AF0BA95C9F712C0B130D1\r
-:101E500081F0FCD0B1E00895F9C0672F782F882772\r
-:101E6000B85F39F0B93FCCF3869577956795B39510\r
-:101E7000D9F73EF490958095709561957F4F8F4F7F\r
-:101E80009F4F0895E89409C097FB3EF49095809584\r
-:101E9000709561957F4F8F4F9F4F9923A9F0F92F30\r
-:101EA00096E9BB279395F695879577956795B795AE\r
-:101EB000F111F8CFFAF4BB0F11F460FF1BC06F5F94\r
-:101EC0007F4F8F4F9F4F16C0882311F096E911C0A6\r
-:101ED000772321F09EE8872F762F05C0662371F0C7\r
-:101EE00096E8862F70E060E02AF09A95660F771FDB\r
-:101EF000881FDAF7880F9695879597F90895990FB7\r
-:101F00000008550FAA0BE0E8FEEF16161706E807C3\r
-:101F1000F907C0F012161306E407F50798F0621BE4\r
-:101F2000730B840B950B39F40A2661F0232B242BB9\r
-:101F3000252B21F408950A2609F4A140A6958FEFD8\r
-:101F4000811D811D089597F99F6780E870E060E02A\r
-:101F500008959FEF80EC089500240A941616170642\r
-:101F600018060906089500240A941216130614068A\r
-:101F700005060895EECF50D0E8F3E894E0E0BB27E3\r
-:101F80009F57F0F02AED3FE049EC06C0EE0FBB0F83\r
-:101F9000661F771F881F28F0B23A6207730784070D\r
-:101FA00028F0B25A620B730B840BE3959A9572F783\r
-:101FB000803830F49A95BB0F661F771F881FD2F7C1\r
-:101FC0009048BAC0092E0394000C11F4882352F0F3\r
-:101FD000BB0F40F4BF2B11F460FF04C06F5F7F4F55\r
-:101FE0008F4F9F4F0895EF93E0FF06C0A2EA2AEDBE\r
-:101FF0003FE049EC5FEB53DEE5DF0F90039401FC1B\r
-:102000009058E6E9F1E0A4C057FD9058440F551FE1\r
-:1020100059F05F3F71F04795880F97FB991F61F06A\r
-:102020009F3F79F087950895121613061406551FE1\r
-:10203000F2CF4695F1DF08C0161617061806991F4D\r
-:10204000F1CF86957105610508940895E894BB2742\r
-:1020500066277727CB0197F9089551DF08F48FEFB2\r
-:1020600008950BD0AFCF78DF28F07DDF18F09523EF\r
-:1020700009F069CF6ECF1124EACFC6DFA0F3959F98\r
-:10208000D1F3950F50E0551F629FF001729FBB275F\r
-:10209000F00DB11D639FAA27F00DB11DAA1F649F0B\r
-:1020A0006627B00DA11D661F829F2227B00DA11DBE\r
-:1020B000621F739FB00DA11D621F839FA00D611D44\r
-:1020C000221F749F3327A00D611D231F849F600D65\r
-:1020D000211D822F762F6A2F11249F5750408AF09E\r
-:1020E000E1F088234AF0EE0FFF1FBB1F661F771F2A\r
-:1020F000881F91505040A9F79E3F510570F023CFA3\r
-:10210000A6CF5F3FECF3983EDCF386957795679515\r
-:10211000B795F795E7959F5FC1F7FE2B880F911D47\r
-:102120009695879597F908959F9325DF0F9007FC63\r
-:10213000EE5F59CF9F3F31F0915020F4879577950E\r
-:102140006795B795880F911D9695879597F908958E\r
-:102150009F938F937F936F93FF93EF939B01AC01BA\r
-:1021600080DFEF91FF9105D02F913F914F915F91CB\r
-:1021700078CFDF93CF931F930F93FF92EF92DF926D\r
-:102180007B018C01689405C0DA2EEF0176DFFE0139\r
-:10219000E894A5912591359145915591AEF3EF01C4\r
-:1021A0007EDDFE019701A801DA9479F7DF90EF90C8\r
-:1021B000FF900F911F91CF91DF910895052E97FB0E\r
-:1021C0001EF400940E94F51057FD07D00E940311E1\r
-:1021D00007FC03D04EF40C94F510509540953095C3\r
-:1021E00021953F4F4F4F5F4F089590958095709583\r
-:1021F00061957F4F8F4F9F4F0895EE0FFF1F059002\r
-:10220000F491E02D0994A1E21A2EAA1BBB1BFD013B\r
-:102210000DC0AA1FBB1FEE1FFF1FA217B307E407C5\r
-:10222000F50720F0A21BB30BE40BF50B661F771F1D\r
-:10223000881F991F1A9469F76095709580959095FD\r
-:102240009B01AC01BD01CF010895FC01059006166C\r
-:1022500021F00020D9F7C00108953197CF010895EA\r
-:102260000F931F93CF93DF93EC018B01009731F411\r
-:102270006115710519F480E090E038C06EE070E0FF\r
-:1022800081E090E00E943812FC010097A1F380E801\r
-:1022900083830115110571F01387028781E8838319\r
-:1022A00080915E0190915F01892B21F4F0935F0191\r
-:1022B000E0935E012097C9F0D187C0878381826057\r
-:1022C00083838091600190916101892B71F4F09377\r
-:1022D0006101E09360018091620190916301892B1B\r
-:1022E00021F4F0936301E0936201CF01DF91CF917C\r
-:1022F0001F910F9108950F931F93CF93DF93182F82\r
-:10230000092FEB018B8181FD03C08FEF9FEF20C070\r
-:1023100082FF10C04E815F812C813D81421753079F\r
-:102320007CF4E881F9819F012F5F3F4F3983288337\r
-:10233000108306C0E885F985812F0995892B29F737\r
-:102340002E813F812F5F3F4F3F832E83812F902F20\r
-:10235000DF91CF911F910F9108950F931F93CF930A\r
-:10236000DF93E0916001F0916101238121FF1BC0A7\r
-:10237000EC0100E010E089916091600170916101D1\r
-:10238000DB011896ED91FC911997882331F009959E\r
-:10239000892B89F30FEF1FEFEECF8AE00995892B88\r
-:1023A00011F4C80102C08FEF9FEFDF91CF911F9111\r
-:1023B0000F910895FA01AA27283051F1203181F1B7\r
-:1023C000E8946F936E7F6E5F7F4F8F4F9F4FAF4F3D\r
-:1023D000B1E03ED0B4E03CD0670F781F891F9A1F50\r
-:1023E000A11D680F791F8A1F911DA11D6A0F711D04\r
-:1023F000811D911DA11D20D009F468943F912AE010\r
-:10240000269F11243019305D3193DEF6CF010895F7\r
-:10241000462F4770405D4193B3E00FD0C9F7F6CF28\r
-:10242000462F4F70405D4A3318F0495D31FD4052F0\r
-:10243000419302D0A9F7EACFB4E0A6959795879586\r
-:1024400077956795BA95C9F7009761057105089565\r
-:102450009B01AC010A2E0694579547953795279511\r
-:10246000BA95C9F7620F731F841F951FA01D0895A9\r
-:102470000F931F93CF93DF93869F8001879F100D4B\r
-:10248000969F100D1124C8010E945412EC01009770\r
-:1024900029F0A80160E070E00E947B13CE01DF917B\r
-:1024A000CF911F910F910895CF93DF9382309105C3\r
-:1024B00010F482E090E0E0916601F091670120E085\r
-:1024C00030E0A0E0B0E0309739F140815181481709\r
-:1024D0005907B8F04817590771F482819381109712\r
-:1024E00029F013969C938E9312972CC090936701BA\r
-:1024F0008093660127C02115310531F0421753073B\r
-:1025000018F0A901DB0101C0EF019A01BD01DF0153\r
-:102510000280F381E02DD7CF21153105F9F0281B7A\r
-:10252000390B2430310580F48A819B816115710556\r
-:1025300021F0FB019383828304C090936701809311\r
-:102540006601FE01329644C0FE01E20FF31F819343\r
-:10255000919322503109398328833AC02091640134\r
-:1025600030916501232B41F420916C0030916D0076\r
-:10257000309365012093640120916A0030916B00D3\r
-:102580002115310541F42DB73EB740916E005091B1\r
-:102590006F00241B350BE0916401F0916501E21797\r
-:1025A000F307A0F42E1B3F0B2817390778F0AC0176\r
-:1025B0004E5F5F4F2417350748F04E0F5F1F509353\r
-:1025C0006501409364018193919302C0E0E0F0E0E3\r
-:1025D000CF01DF91CF910895CF93DF93009709F456\r
-:1025E00087C0FC01329713821282C0916601D0919C\r
-:1025F0006701209781F420813181280F391F809154\r
-:102600006401909165018217930779F5F093650154\r
-:10261000E09364016DC0DE0120E030E0AE17BF073B\r
-:1026200050F412964D915C9113979D0141155105FF\r
-:1026300009F1DA01F3CFB383A28340815181840F82\r
-:10264000951F8A179B0771F48D919C911197840FA8\r
-:10265000951F02969183808312968D919C9113977A\r
-:10266000938382832115310529F4F0936701E09368\r
-:1026700066013EC0D9011396FC93EE9312974D91DB\r
-:102680005D91A40FB51FEA17FB0779F48081918152\r
-:10269000840F951F0296D90111969C938E93828187\r
-:1026A000938113969C938E931297E0E0F0E08A81D9\r
-:1026B0009B81009719F0FE01EC01F9CFCE01029643\r
-:1026C00028813981820F931F209164013091650127\r
-:1026D0002817390769F4309729F41092670110928E\r
-:1026E000660102C013821282D0936501C093640117\r
-:1026F000DF91CF910895DC0101C06D9341505040AE\r
-:08270000E0F70895F894FFCF03\r
-:102708000080008000800080010100006801200036\r
-:0A2718000D0A53746172740D000085\r
+:1011E0004F815885509393004093920080918E00D8\r
+:1011F00090918F00A0919000B0919100B7FF07C02F\r
+:10120000B095A095909581959F4FAF4FBF4F813C72\r
+:10121000944DA140B105CCF08091C7009091C800D9\r
+:10122000892B99F41092E7001092E6001092D700F3\r
+:101230008091A90080618093A90010928E00109285\r
+:101240008F00109290001092910080918A009091EE\r
+:101250008B00A0918C00B0918D00B7FF07C0B095B6\r
+:10126000A095909581959F4FAF4FBF4F813C944D76\r
+:10127000A140B105CCF08091C5009091C600892BAA\r
+:1012800099F41092E5001092E4001092D60080913B\r
+:10129000A90080628093A90010928A0010928B00AE\r
+:1012A00010928C0010928D008091860090918700A2\r
+:1012B000A0918800B0918900B7FF07C0B095A095B4\r
+:1012C000909581959F4FAF4FBF4F813C944DA1406A\r
+:1012D000B105CCF08091C3009091C400892B99F4A2\r
+:1012E0001092E3001092E2001092D5008091A900C4\r
+:1012F00080648093A900109286001092870010925B\r
+:101300008800109289008091820090918300A091C2\r
+:101310008400B0918500B7FF07C0B095A095909567\r
+:1013200081959F4FAF4FBF4F813C944DA140B10578\r
+:10133000CCF08091C1009091C200892B99F4109259\r
+:10134000E1001092E0001092D4008091A900806822\r
+:101350008093A90010928200109283001092840062\r
+:10136000109285008091D700813009F0B4C080913F\r
+:10137000D0009091D100892BB1F41092E700109227\r
+:10138000E600109281001092800010928E00109260\r
+:101390008F0010929000109291008091A9008F7E92\r
+:1013A0008093A90098C0A090D000B090D100809107\r
+:1013B000C7009091C800A81AB90AB501882777FD1F\r
+:1013C0008095982FC0908E00D0908F00E090900074\r
+:1013D000F0909100C60ED71EE81EF91EC0928E0036\r
+:1013E000D0928F00E0929000F09291000E941C1029\r
+:1013F00027E73EEB4FE15DE30E9409112B013C0121\r
+:10140000C701B6010E941C1027E137EB41E55AE302\r
+:101410000E9409119B01AC01C301B2010E94160F89\r
+:101420006B017C018091800090918100B501681B67\r
+:10143000790B882777FD8095982F0E941C1020E05B\r
+:1014400030E0A9010E9409119B01AC01C701B6015E\r
+:101450000E94160F0E94E90F7093E7006093E60068\r
+:10146000B0928100A09280008091E6009091E70008\r
+:101470001816190634F48091D0009091D10097FD90\r
+:101480000DC08091E6009091E70097FF0CC080911D\r
+:10149000D0009091D100181619062CF41092E70094\r
+:1014A0001092E60018C08091E6009091E7008F3F0F\r
+:1014B000910531F02CF01093E7000093E6000BC08B\r
+:1014C0008091E6009091E70081309F4F24F43092A4\r
+:1014D000E7002092E6008091D600813009F0B4C088\r
+:1014E0008091CE009091CF00892BB1F41092E5004D\r
+:1014F0001092E40010927F0010927E0010928A00F9\r
+:1015000010928B0010928C0010928D008091A90097\r
+:101510008F7D8093A90098C0A090CE00B090CF009E\r
+:101520008091C5009091C600A81AB90AB501882714\r
+:1015300077FD8095982FC0908A00D0908B00E09026\r
+:101540008C00F0908D00C60ED71EE81EF91EC092CA\r
+:101550008A00D0928B00E0928C00F0928D000E9465\r
+:101560001C1027E73EEB4FE15DE30E9409112B01C0\r
+:101570003C01C701B6010E941C1027E137EB41E591\r
+:101580005AE30E9409119B01AC01C301B2010E9400\r
+:10159000160F6B017C0180917E0090917F00B50158\r
+:1015A000681B790B882777FD8095982F0E941C1067\r
+:1015B00020E030E0A9010E9409119B01AC01C701A4\r
+:1015C000B6010E94160F0E94E90F7093E500609328\r
+:1015D000E400B0927F00A0927E008091E4009091A0\r
+:1015E000E5001816190634F48091CE009091CF00D2\r
+:1015F00097FD0DC08091E4009091E50097FF0CC02D\r
+:101600008091CE009091CF00181619062CF41092FC\r
+:10161000E5001092E40018C08091E4009091E5008C\r
+:101620008F3F910531F02CF01093E5000093E4001A\r
+:101630000BC08091E4009091E50081309F4F24F42D\r
+:101640003092E5002092E4008091D500813009F0CD\r
+:10165000B4C08091CC009091CD00892BB1F4109250\r
+:10166000E3001092E20010927D0010927C00109234\r
+:101670008600109287001092880010928900809155\r
+:10168000A9008F7B8093A90098C0A090CC00B09057\r
+:10169000CD008091C3009091C400A81AB90AB50189\r
+:1016A000882777FD8095982FC0908600D09087007E\r
+:1016B000E0908800F0908900C60ED71EE81EF91E43\r
+:1016C000C0928600D0928700E0928800F092890054\r
+:1016D0000E941C1027E73EEB4FE15DE30E940911D9\r
+:1016E0002B013C01C701B6010E941C1027E137EB1A\r
+:1016F00041E55AE30E9409119B01AC01C301B2010B\r
+:101700000E94160F6B017C0180917C0090917D00FE\r
+:10171000B501681B790B882777FD8095982F0E946B\r
+:101720001C1020E030E0A9010E9409119B01AC01CE\r
+:10173000C701B6010E94160F0E94E90F7093E300E3\r
+:101740006093E200B0927D00A0927C008091E20064\r
+:101750009091E3001816190634F48091CC00909112\r
+:10176000CD0097FD0DC08091E2009091E30097FFBE\r
+:101770000CC08091CC009091CD00181619062CF465\r
+:101780001092E3001092E20018C08091E200909164\r
+:10179000E3008F3F910531F02CF01093E3000093AC\r
+:1017A000E2000BC08091E2009091E30081309F4FF6\r
+:1017B00024F43092E3002092E2008091D400813042\r
+:1017C00009F0B4C08091CA009091CB00892BB1F48C\r
+:1017D0001092E1001092E00010927B0010927A00CB\r
+:1017E0001092820010928300109284001092850063\r
+:1017F0008091A9008F778093A90098C0A090CA001B\r
+:10180000B090CB008091C1009091C200A81AB90A93\r
+:10181000B501882777FD8095982FC0908200D090E1\r
+:101820008300E0908400F0908500C60ED71EE81E6D\r
+:10183000F91EC0928200D0928300E0928400F09260\r
+:1018400085000E941C1027E73EEB4FE15DE30E94FC\r
+:1018500009112B013C01C701B6010E941C1027E1B0\r
+:1018600037EB41E55AE30E9409119B01AC01C3012A\r
+:10187000B2010E94160F6B017C0180917A00909159\r
+:101880007B00B501681B790B882777FD8095982F21\r
+:101890000E941C1020E030E0A9010E9409119B0168\r
+:1018A000AC01C701B6010E94160F0E94E90F7093A8\r
+:1018B000E1006093E000B0927B00A0927A008091FA\r
+:1018C000E0009091E1001816190634F48091CA00E6\r
+:1018D0009091CB0097FD0DC08091E0009091E100C8\r
+:1018E00097FF0CC08091CA009091CB001816190682\r
+:1018F0002CF41092E1001092E00018C08091E000FA\r
+:101900009091E1008F3F910531F02CF01093E100B0\r
+:101910000093E0000BC08091E0009091E1008130E5\r
+:101920009F4F24F43092E1002092E0008091A900C2\r
+:10193000807F8093A9003091A90080B326B3807482\r
+:1019400090E0A3E095958795AA95E1F72770282B5D\r
+:1019500020952F70232B2093A9008091E600909171\r
+:10196000E700209166003091670028173907C9F118\r
+:101970008091E6009091E700892B19F485B3837F6D\r
+:101980001CC080916900811107C08091E600909190\r
+:10199000E7001816190654F080916900882351F069\r
+:1019A0008091E6009091E70097FF04C085B3877FA0\r
+:1019B000846003C085B38B7F886085BB8091E6001F\r
+:1019C0009091E70090936700809366008091E60015\r
+:1019D0009091E70097FF03C09195819591099BBD78\r
+:1019E0008ABD8091E4009091E500209164003091DF\r
+:1019F000650028173907C9F18091E4009091E5004E\r
+:101A0000892B19F485B38F7C1CC0809168008111EB\r
+:101A100007C08091E4009091E5001816190654F073\r
+:101A200080916800882351F08091E4009091E50056\r
+:101A300097FF04C085B38F7D806103C085B38F7E1F\r
+:101A4000806285BB8091E4009091E50090936500F1\r
+:101A5000809364008091E4009091E50097FF03C0BB\r
+:101A600091958195910999BD88BD8091E2009091F1\r
+:101A7000E300209162003091630028173907C1F11B\r
+:101A80008091E2009091E300892B19F485B38F7364\r
+:101A90001CC08091D300811107C08091E200909119\r
+:101AA000E3001816190654F08091D300882351F0F2\r
+:101AB0008091E2009091E30097FF04C085B38F7797\r
+:101AC000806403C085B38F7B806885BB8091E20012\r
+:101AD0009091E30090936300809362008091E20014\r
+:101AE0009091E30097FF03C091958195910983BD83\r
+:101AF0008091E0009091E1002091600030916100C0\r
+:101B000028173907C1F18091E0009091E100892BFD\r
+:101B100019F482B3837F1CC08091D200811107C069\r
+:101B20008091E0009091E1001816190654F0809120\r
+:101B3000D200882351F08091E0009091E10097FF5E\r
+:101B400004C082B3877F846003C082B38B7F8860C8\r
+:101B500082BB8091E0009091E100909361008093BE\r
+:101B600060008091E0009091E10097FF03C09195A3\r
+:101B7000819591098CBF8091AC008F5F8093AC0000\r
+:101B800085B7806885BF889585B78F7785BF98C8EA\r
+:101B90006F927F929F92AF92BF92CF92DF92EF921D\r
+:101BA000FF920F931F93CF93DF93CDB7DEB72C97A0\r
+:101BB0000FB6F894DEBF0FBECDBF8C017B013A019A\r
+:101BC000FC0117821682838181FF19C1CE01019623\r
+:101BD0005C01F801D380F701D3FC2591D3FE21915C\r
+:101BE0007F01222309F407C1253249F4D3FC259152\r
+:101BF000D3FE21917F01253211F0912C1BC0B80139\r
+:101C0000822F90E00E94531263013601E2CF22231B\r
+:101C100009F4F1C0622F70E08BEB91E02C870E94F9\r
+:101C2000FD112C85892B49F0F701D3FC2591D3FEBA\r
+:101C300021917F0197FEEBCF0CC0233221F4F92DC7\r
+:101C4000F0619F2EF1CF2C3639F4292D2068922E89\r
+:101C5000EBCF222309F4CFC0622F70E084EB91E038\r
+:101C60002C870E94FD112C85892B41F06301F4E043\r
+:101C7000CF0ED11CB8018FE390E012C0233641F0A3\r
+:101C8000233789F0233521F5F92DF1609F2E0BC004\r
+:101C9000630122E0C20ED11CB801F3018081918161\r
+:101CA0000E945312B2CF630122E0C20ED11CF30195\r
+:101CB00060807180F30190FC859190FE81913F01DD\r
+:101CC000882309F4A2CFB80190E00E945312F2CF0A\r
+:101CD000243611F0293639F5630197FE09C0F4E086\r
+:101CE000CF0ED11CF30160817181828193810AC082\r
+:101CF000F2E0CF0ED11CF30160817181882777FD5E\r
+:101D00008095982FF92DFF7E9F2E97FF09C0909503\r
+:101D10008095709561957F4F8F4F9F4FF0649F2EF8\r
+:101D20002AE030E038C02037A1F040F42835D1F067\r
+:101D30002F3609F060C028E030E019C0253719F0CF\r
+:101D4000283751F058C0292D2F7E922E2AE030E0FE\r
+:101D50000EC0892D8061982E992D9462992E20E1D4\r
+:101D600030E005C0E92DE4609E2E20E132E0630101\r
+:101D700097FE09C0F4E0CF0ED11CF30160817181A0\r
+:101D80008281938108C0F2E0CF0ED11CF301608103\r
+:101D9000718180E090E0A5010E94B212782E7A183D\r
+:101DA00096FE05C0B8018DE290E00E94531294FEA9\r
+:101DB00016C0FE01E70DF11D8081803381F0B8016E\r
+:101DC00080E390E00E94531292FE09C0292D2072F8\r
+:101DD000822F90E0B801885A9F4F0E9453127A9444\r
+:101DE000F501E70DF11D8081B80190E00E945312CA\r
+:101DF0007110F5CF0ACFF8018681978102C08FEF6D\r
+:101E00009FEF2C960FB6F894DEBF0FBECDBFDF91CB\r
+:101E1000CF911F910F91FF90EF90DF90CF90BF90E7\r
+:101E2000AF909F907F906F9008955058BB27AA273E\r
+:101E30000ED0A0C169D130F06ED120F031F49F3FB7\r
+:101E400011F41EF45EC10EF4E095E7FB54C1E92FD6\r
+:101E5000B3D180F3BA17620773078407950718F0A8\r
+:101E600071F49EF5CBC10EF4E0950B2EBA2FA02D88\r
+:101E70000B01B90190010C01CA01A0011124FF2737\r
+:101E8000591B99F0593F50F4503E68F11A16F04032\r
+:101E9000A22F232F342F4427585FF3CF4695379531\r
+:101EA0002795A795F0405395C9F77EF41F16BA0BF6\r
+:101EB000620B730B840BBAF09150A1F0FF0FBB1FA4\r
+:101EC000661F771F881FC2F70EC0BA0F621F731FED\r
+:101ED000841F48F4879577956795B795F7959E3F4A\r
+:101EE00008F0B3CF9395880F08F09927EE0F9795D8\r
+:101EF00087950895DCD008F481E0089514D1E39526\r
+:101F00004AC10CD037C107D140F0FED030F021F4E7\r
+:101F10005F3F19F0F0C0511172C1F3C04DD198F379\r
+:101F20009923C9F35523B1F3951B550BBB27AA275A\r
+:101F300062177307840738F09F5F5F4F220F331FCC\r
+:101F4000441FAA1FA9F333D00E2E3AF0E0E830D098\r
+:101F500091505040E695001CCAF729D0FE2F27D09B\r
+:101F6000660F771F881FBB1F261737074807AB0769\r
+:101F7000B0E809F0BB0B802DBF01FF2793585F4FDE\r
+:101F80002AF09E3F510568F0B6C039C15F3FECF3BF\r
+:101F9000983EDCF3869577956795B795F7959F5FA3\r
+:101FA000C9F7880F911D9695879597F90895E1E0F7\r
+:101FB000660F771F881FBB1F621773078407BA0756\r
+:101FC00020F0621B730B840BBA0BEE1F88F7E095B1\r
+:101FD000089504D06894B11112C10895F5D088F025\r
+:101FE0009F5790F0B92F9927B751A0F0D1F0660F05\r
+:101FF000771F881F991F1AF0BA95C9F712C0B13020\r
+:1020000081F0FCD0B1E00895F9C0672F782F8827C0\r
+:10201000B85F39F0B93FCCF3869577956795B3955E\r
+:10202000D9F73EF490958095709561957F4F8F4FCD\r
+:102030009F4F0895E89409C097FB3EF490958095D2\r
+:10204000709561957F4F8F4F9F4F9923A9F0F92F7E\r
+:1020500096E9BB279395F695879577956795B795FC\r
+:10206000F111F8CFFAF4BB0F11F460FF1BC06F5FE2\r
+:102070007F4F8F4F9F4F16C0882311F096E911C0F4\r
+:10208000772321F09EE8872F762F05C0662371F015\r
+:1020900096E8862F70E060E02AF09A95660F771F29\r
+:1020A000881FDAF7880F9695879597F90895990F05\r
+:1020B0000008550FAA0BE0E8FEEF16161706E80712\r
+:1020C000F907C0F012161306E407F50798F0621B33\r
+:1020D000730B840B950B39F40A2661F0232B242B08\r
+:1020E000252B21F408950A2609F4A140A6958FEF27\r
+:1020F000811D811D089597F99F6780E870E060E079\r
+:1021000008959FEF80EC089500240A941616170690\r
+:1021100018060906089500240A94121613061406D8\r
+:1021200005060895EECF50D0E8F3E894E0E0BB2731\r
+:102130009F57F0F02AED3FE049EC06C0EE0FBB0FD1\r
+:10214000661F771F881F28F0B23A6207730784075B\r
+:1021500028F0B25A620B730B840BE3959A9572F7D1\r
+:10216000803830F49A95BB0F661F771F881FD2F70F\r
+:102170009048BAC0092E0394000C11F4882352F041\r
+:10218000BB0F40F4BF2B11F460FF04C06F5F7F4FA3\r
+:102190008F4F9F4F0895EF93E0FF06C0A2EA2AED0C\r
+:1021A0003FE049EC5FEB53DEE5DF0F90039401FC69\r
+:1021B0009058E6E9F1E0A4C057FD9058440F551F30\r
+:1021C00059F05F3F71F04795880F97FB991F61F0B9\r
+:1021D0009F3F79F087950895121613061406551F30\r
+:1021E000F2CF4695F1DF08C0161617061806991F9C\r
+:1021F000F1CF86957105610508940895E894BB2791\r
+:1022000066277727CB0197F9089551DF08F48FEF00\r
+:1022100008950BD0AFCF78DF28F07DDF18F095233D\r
+:1022200009F069CF6ECF1124EACFC6DFA0F3959FE6\r
+:10223000D1F3950F50E0551F629FF001729FBB27AD\r
+:10224000F00DB11D639FAA27F00DB11DAA1F649F59\r
+:102250006627B00DA11D661F829F2227B00DA11D0C\r
+:10226000621F739FB00DA11D621F839FA00D611D92\r
+:10227000221F749F3327A00D611D231F849F600DB3\r
+:10228000211D822F762F6A2F11249F5750408AF0EC\r
+:10229000E1F088234AF0EE0FFF1FBB1F661F771F78\r
+:1022A000881F91505040A9F79E3F510570F023CFF1\r
+:1022B000A6CF5F3FECF3983EDCF386957795679564\r
+:1022C000B795F795E7959F5FC1F7FE2B880F911D96\r
+:1022D0009695879597F908959F9325DF0F9007FCB2\r
+:1022E000EE5F59CF9F3F31F0915020F4879577955D\r
+:1022F0006795B795880F911D9695879597F90895DD\r
+:102300009F938F937F936F93FF93EF939B01AC0108\r
+:1023100080DFEF91FF9105D02F913F914F915F9119\r
+:1023200078CFDF93CF931F930F93FF92EF92DF92BB\r
+:102330007B018C01689405C0DA2EEF0176DFFE0187\r
+:10234000E894A5912591359145915591AEF3EF0112\r
+:102350007EDDFE019701A801DA9479F7DF90EF9016\r
+:10236000FF900F911F91CF91DF910895052E97FB5C\r
+:102370001EF400940E94CD1157FD07D00E94DB117E\r
+:1023800007FC03D04EF40C94CD1150954095309538\r
+:1023900021953F4F4F4F5F4F0895909580957095D1\r
+:1023A00061957F4F8F4F9F4F0895EE0FFF1F059050\r
+:1023B000F491E02D0994A1E21A2EAA1BBB1BFD018A\r
+:1023C0000DC0AA1FBB1FEE1FFF1FA217B307E40714\r
+:1023D000F50720F0A21BB30BE40BF50B661F771F6C\r
+:1023E000881F991F1A9469F760957095809590954C\r
+:1023F0009B01AC01BD01CF010895FC0105900616BB\r
+:1024000021F00020D9F7C00108953197CF01089538\r
+:102410000F931F93CF93DF93EC018B01009731F45F\r
+:102420006115710519F480E090E038C06EE070E04D\r
+:1024300081E090E00E941013FC010097A1F380E876\r
+:1024400083830115110571F01387028781E8838367\r
+:1024500080915E0190915F01892B21F4F0935F01DF\r
+:10246000E0935E012097C9F0D187C08783818260A5\r
+:1024700083838091600190916101892B71F4F093C5\r
+:102480006101E09360018091620190916301892B69\r
+:1024900021F4F0936301E0936201CF01DF91CF91CA\r
+:1024A0001F910F9108950F931F93CF93DF93182FD0\r
+:1024B000092FEB018B8181FD03C08FEF9FEF20C0BF\r
+:1024C00082FF10C04E815F812C813D8142175307EE\r
+:1024D0007CF4E881F9819F012F5F3F4F3983288386\r
+:1024E000108306C0E885F985812F0995892B29F786\r
+:1024F0002E813F812F5F3F4F3F832E83812F902F6F\r
+:10250000DF91CF911F910F9108950F931F93CF9358\r
+:10251000DF93E0916001F0916101238121FF1BC0F5\r
+:10252000EC0100E010E0899160916001709161011F\r
+:10253000DB011896ED91FC911997882331F00995EC\r
+:10254000892B89F30FEF1FEFEECF8AE00995892BD6\r
+:1025500011F4C80102C08FEF9FEFDF91CF911F915F\r
+:102560000F910895FA01AA27283051F1203181F105\r
+:10257000E8946F936E7F6E5F7F4F8F4F9F4FAF4F8B\r
+:10258000B1E03ED0B4E03CD0670F781F891F9A1F9E\r
+:10259000A11D680F791F8A1F911DA11D6A0F711D52\r
+:1025A000811D911DA11D20D009F468943F912AE05E\r
+:1025B000269F11243019305D3193DEF6CF01089546\r
+:1025C000462F4770405D4193B3E00FD0C9F7F6CF77\r
+:1025D000462F4F70405D4A3318F0495D31FD40523F\r
+:1025E000419302D0A9F7EACFB4E0A69597958795D5\r
+:1025F00077956795BA95C9F70097610571050895B4\r
+:102600009B01AC010A2E069457954795379527955F\r
+:10261000BA95C9F7620F731F841F951FA01D0895F7\r
+:102620000F931F93CF93DF93869F8001879F100D99\r
+:10263000969F100D1124C8010E942C13EC010097E5\r
+:1026400029F0A80160E070E00E945314CE01DF91F0\r
+:10265000CF911F910F910895CF93DF938230910511\r
+:1026600010F482E090E0E0916601F091670120E0D3\r
+:1026700030E0A0E0B0E0309739F140815181481757\r
+:102680005907B8F04817590771F482819381109760\r
+:1026900029F013969C938E9312972CC09093670108\r
+:1026A0008093660127C02115310531F04217530789\r
+:1026B00018F0A901DB0101C0EF019A01BD01DF01A2\r
+:1026C0000280F381E02DD7CF21153105F9F0281BC9\r
+:1026D000390B2430310580F48A819B8161157105A5\r
+:1026E00021F0FB019383828304C090936701809360\r
+:1026F0006601FE01329644C0FE01E20FF31F819392\r
+:10270000919322503109398328833AC02091640182\r
+:1027100030916501232B41F420916C0030916D00C4\r
+:10272000309365012093640120916A0030916B0021\r
+:102730002115310541F42DB73EB740916E005091FF\r
+:102740006F00241B350BE0916401F0916501E217E5\r
+:10275000F307A0F42E1B3F0B2817390778F0AC01C4\r
+:102760004E5F5F4F2417350748F04E0F5F1F5093A1\r
+:102770006501409364018193919302C0E0E0F0E031\r
+:10278000CF01DF91CF910895CF93DF93009709F4A4\r
+:1027900087C0FC01329713821282C0916601D091EA\r
+:1027A0006701209781F420813181280F391F8091A2\r
+:1027B0006401909165018217930779F5F0936501A3\r
+:1027C000E09364016DC0DE0120E030E0AE17BF078A\r
+:1027D00050F412964D915C9113979D01411551054E\r
+:1027E00009F1DA01F3CFB383A28340815181840FD1\r
+:1027F000951F8A179B0771F48D919C911197840FF7\r
+:10280000951F02969183808312968D919C911397C8\r
+:10281000938382832115310529F4F0936701E093B6\r
+:1028200066013EC0D9011396FC93EE9312974D9129\r
+:102830005D91A40FB51FEA17FB0779F480819181A0\r
+:10284000840F951F0296D90111969C938E938281D5\r
+:10285000938113969C938E931297E0E0F0E08A8127\r
+:102860009B81009719F0FE01EC01F9CFCE01029691\r
+:1028700028813981820F931F209164013091650175\r
+:102880002817390769F4309729F4109267011092DC\r
+:10289000660102C013821282D0936501C093640165\r
+:1028A000DF91CF910895DC0101C06D9341505040FC\r
+:0828B000E0F70895F894FFCF52\r
+:1028B8000080008000800080010100006801200085\r
+:0A28C8000D0A53746172740D0000D4\r
 :00000001FF\r
index a5978b0..3d1c972 100755 (executable)
@@ -68,7 +68,7 @@ class MoveBase:
                self.handicap_last = (-1, -1)
                self.pStripe = LPD8806(1, 0, 12)
                rospy.Subscriber("cmd_vel_out", Twist, self.cmdVelReceived)
-               rospy.Subscriber("imu", Imu, self.imuReceived)
+               #rospy.Subscriber("imu", Imu, self.imuReceived)
                rospy.Subscriber("led_stripe", LedStripe, self.led_stripe_received)
                self.run()
        
@@ -80,7 +80,7 @@ class MoveBase:
                i = 0
                while not rospy.is_shutdown():
                        #print struct.unpack(">B", i2c_read_reg(0x50, 0xA2, 1))[0] # count test
-                       self.get_tle_err()
+                       self.get_motor_err()
                        self.get_odom()
                        self.get_voltage()
                        if i % 2:
@@ -141,7 +141,7 @@ class MoveBase:
                return reset
 
 
-       def get_tle_err(self):
+       def get_motor_err(self):
                err = struct.unpack(">B", i2c_read_reg(0x50, 0xA1, 1))[0]
                
                msg = DiagnosticArray()
@@ -151,10 +151,16 @@ class MoveBase:
                stat.level = DiagnosticStatus.ERROR if err else DiagnosticStatus.OK
                stat.message = "0x%02x" % err
 
-               stat.values.append(KeyValue("aft left", str(bool(err & (1 << 0)))))
-               stat.values.append(KeyValue("front left", str(bool(err & (1 << 1)))))
-               stat.values.append(KeyValue("front right", str(bool(err & (1 << 2)))))
-               stat.values.append(KeyValue("aft right", str(bool(err & (1 << 3)))))
+               # Diag
+               stat.values.append(KeyValue("aft left diag", str(bool(err & (1 << 0)))))
+               stat.values.append(KeyValue("front left diag", str(bool(err & (1 << 1)))))
+               stat.values.append(KeyValue("aft right diag", str(bool(err & (1 << 2)))))
+               stat.values.append(KeyValue("front right diag", str(bool(err & (1 << 3)))))
+               # Stall
+               stat.values.append(KeyValue("aft left stall", str(bool(err & (1 << 4)))))
+               stat.values.append(KeyValue("front left stall", str(bool(err & (1 << 5)))))
+               stat.values.append(KeyValue("aft right stall", str(bool(err & (1 << 6)))))
+               stat.values.append(KeyValue("front right stall", str(bool(err & (1 << 7)))))
 
                msg.status.append(stat)
                self.pub_diag.publish(msg)