Mercurial > micro-tote
changeset 4:010d229c6d6d default tip
It walks
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Tue, 01 Dec 2015 11:47:18 +0100 |
| parents | 755951b7ec90 |
| children | |
| files | tote.hex tote.py |
| diffstat | 2 files changed, 166 insertions(+), 179 deletions(-) [+] |
line wrap: on
line diff
--- a/tote.hex Tue Dec 01 00:28:57 2015 +0100 +++ b/tote.hex Tue Dec 01 11:47:18 2015 +0100 @@ -11935,7 +11935,7 @@ :10E9B000910D0000C91F0100C52F01003D34010069 :04E9C000650D0000E1 :020000040003F7 -:10E000004D507B12696D706F7274206D6174680A77 +:10E000004D500112696D706F7274206D6174680AF1 :10E01000696D706F7274207374727563740A0A6626 :10E02000726F6D206D6963726F62697420696D70C3 :10E030006F7274206932630A696D706F7274206D3B @@ -12068,7 +12068,7 @@ :10E820000A636C61737320526F626F743A0A20201E :10E830002020646566205F5F696E69745F5F28737E :10E84000656C66293A0A202020202020202073654C -:10E850006C662E6C656773203D205B0A20202020AB +:10E850006C662E6C656773203D20280A20202020DE :10E8600020202020202020204C65672820322C20CA :10E8700020312C20302C202D312C202031292C0A25 :10E880002020202020202020202020204C656728C8 @@ -12078,7 +12078,7 @@ :10E8C000312C202D31292C0A20202020202020200E :10E8D000202020204C65672831312C2031302C201D :10E8E000392C2020312C202031292C0A20202020D6 -:10E8F000202020205D0A0A20202020646566206DEB +:10E8F00020202020290A0A20202020646566206D1F :10E900006F76655F62792873656C662C2064783D4C :10E91000302C2064793D302C20647A3D30293A0A2D :10E920002020202020202020666F72206C65672028 @@ -12086,150 +12086,143 @@ :10E94000202020202020202020206C65672E6D6F45 :10E9500076655F6279286478202A206C65672E7856 :10E960005F6469722C206479202A206C65672E7997 -:10E970005F6469722C20647A290A0A2020202064AE -:10E98000656620726F746174655F62792873656C67 -:10E99000662C2064656772656573293A0A20202019 -:10E9A0002020202020666F72206C656720696E2011 -:10E9B00073656C662E6C6567733A0A2020202020F0 -:10E9C000202020202020206C65672E726F746174D7 -:10E9D000655F62792864656772656573290A0A0A4A -:10E9E000636C6173732043726565703A0A2020205E -:10E9F000207370656564203D20310A20202020733B -:10EA00007472696465203D2031340A20202020730F -:10EA100068696674203D20380A20202020736869C8 -:10EA200066745F7374657073203D20320A20202065 -:10EA30002072616973655F6C6567203D2031300A23 -:10EA40002020202072616973655F73746570732084 -:10EA50003D20330A202020206E6578745F6C656746 -:10EA6000203D20280A202020202020202028322C71 -:10EA700020302C20332C2031292C202020232066EC -:10EA80006F72776172640A202020202020202028C5 -:10EA9000312C20332C20302C2032292C20202023F4 -:10EAA000206261636B776172640A2020202020203D -:10EAB000202028312C20322C20332C2030292C20CF -:10EAC00020202320636C6F636B776973650A2020B5 -:10EAD00020202020202028332C20302C20312C20D6 -:10EAE00032292C2020202320636F756E7465722DCF -:10EAF000636C6F636B776973650A20202020202088 -:10EB0000202028322C20332C20312C2030292C207E -:10EB1000202023206C6566740A20202020202020DD -:10EB20002028332C20322C20302C2031292C20205E -:10EB300020232072696768740A20202020290A0A8D -:10EB400020202020646566205F5F696E69745F5FC6 -:10EB50002873656C662C20726F626F74293A0A20E4 -:10EB60002020202020202073656C662E726F626F3B -:10EB700074203D20726F626F740A202020202020B4 -:10EB8000202073656C662E73686966745F78203D1B -:10EB900020300A202020202020202073656C662E43 -:10EBA00073686966745F79203D20300A2020202038 -:10EBB0002020202073656C662E6F6E5F67726F7504 -:10EBC0006E64203D206C69737428726F626F742EBE -:10EBD0006C656773290A202020202020202073657F -:10EBE0006C662E6478203D20300A202020202020D2 -:10EBF000202073656C662E6479203D20310A202028 -:10EC000020202020202073656C662E726F74617442 -:10EC1000696F6E203D20300A2020202020202020F7 -:10EC200073656C662E737072656164203D20300AD6 -:10EC300020202020202020206C6567203D20726F3E -:10EC4000626F742E6C6567735B305D0A2020202034 -:10EC50002020202073656C662E68656967687420C3 -:10EC60003D206C65672E74696269610A0A20202064 -:10EC700020646566206D6F76652873656C66293A39 -:10EC80000A2020202020202020666F72206C6567DB -:10EC900020696E2073656C662E6F6E5F67726F758C -:10ECA0006E643A0A202020202020202020202020CE -:10ECB0006C65672E6D6F76655F746F286C65672E67 -:10ECC00078202D2073656C662E6478202A206C6570 -:10ECD000672E785F646972202A2073656C662E73D4 -:10ECE000706565642C0A2020202020202020202010 -:10ECF00020202020202020202020202020206C6583 -:10ED0000672E79202D2073656C662E6479202A2069 -:10ED10006C65672E795F646972202A2073656C6662 -:10ED20002E73706565642C0A20202020202020206E -:10ED300020202020202020202020202020202020D3 -:10ED40002D73656C662E686569676874290A2020D2 -:10ED5000202020202020202020206C65672E726F2C -:10ED6000746174655F6279282D73656C662E726FAD -:10ED7000746174696F6E202A206C65672E785F64F9 -:10ED80006972202A206C65672E795F646972202F72 -:10ED90002032290A0A2020202064656620737465C9 -:10EDA000702873656C662C206C6567293A0A2020F0 -:10EDB0002020202020206478203D20286C65672EAC -:10EDC000785F646972202A2073656C662E736869A7 -:10EDD0006674202D2073656C662E73686966745F97 -:10EDE0007829202F2073656C662E73686966745FBE -:10EDF00073746570730A20202020202020206479FD -:10EE0000203D20286C65672E795F646972202A2076 -:10EE100073656C662E7368696674202D2073656C4B -:10EE2000662E73686966745F7929202F2073656C7C -:10EE3000662E73686966745F73746570730A202048 -:10EE4000202020202020666F722073746570206956 -:10EE50006E2072616E67652873656C662E736869D3 -:10EE600066745F7374657073293A0A20202020202D -:10EE700020202020202020726F626F742E6D6F760C -:10EE8000655F62792864782C2064792C2030290A07 -:10EE900020202020202020202020202073656C6648 -:10EEA0002E73686966745F78202B3D2064780A2091 -:10EEB000202020202020202020202073656C662E1A -:10EEC00073686966745F79202B3D2064790A20207D -:10EED000202020202020202020207969656C640AD1 -:10EEE000202020202020202073656C662E6F6E5F0E -:10EEF00067726F756E642E72656D6F7665286C65CE -:10EF000067290A2020202020202020666F7220738D -:10EF100074657020696E2072616E67652873656C18 -:10EF2000662E72616973655F7374657073293A0A3E -:10EF30002020202020202020202020206C65672EEB -:10EF40006D6F76655F627928302C20302C207365D8 -:10EF50006C662E72616973655F6C6567290A202093 -:10EF6000202020202020202020207969656C640A40 -:10EF700020202020202020206C65672E6D6F766574 -:10EF80005F746F280A2020202020202020202020AD -:10EF900020286C65672E686F6D65202B2073656C6B -:10EFA000662E73686966745F78202B2073656C66C3 -:10EFB0002E6478202A0A20202020202020202020B3 -:10EFC00020202073656C662E737472696465292035 -:10EFD0002A206C65672E785F646972202B20736528 -:10EFE0006C662E7370726561642C0A2020202020CC -:10EFF00020202020202020286C65672E686F6D65FA -:10F00000202B2073656C662E73686966745F7920A7 -:10F010002B2073656C662E6479202A0A202020201C -:10F0200020202020202020202073656C662E737401 -:10F030007269646529202A206C65672E795F64698E -:10F0400072202B2073656C662E7370726561642C60 -:10F050000A20202020202020202020202073656CE2 -:10F06000662E72616973655F6C6567202A2073651F -:10F070006C662E72616973655F7374657073202DA1 -:10F080002073656C662E6865696768740A202020A5 -:10F090002020202020290A20202020202020207924 -:10F0A00069656C640A202020202020202079696571 -:10F0B0006C640A2020202020202020666F7220739C -:10F0C00074657020696E2072616E67652873656C67 -:10F0D000662E72616973655F7374657073202D208D -:10F0E00031293A0A20202020202020202020202002 -:10F0F0006C65672E6D6F76655F627928302C2030E5 -:10F100002C202D73656C662E72616973655F6C656A -:10F1100067290A202020202020202020202020795C -:10F1200069656C640A202020202020202073656CF3 -:10F13000662E6F6E5F67726F756E642E617070659C -:10F140006E64286C6567290A20202020202020205A -:10F150007969656C640A0A20202020646566207243 -:10F16000756E2873656C662C207374657073293A0C -:10F170000A20202020202020206C65675F696E64B3 -:10F180006578203D20300A20202020202020206685 -:10F190006F72207374657020696E2072616E67658E -:10F1A000287374657073293A0A20202020202020BB -:10F1B00020202020206C6567203D20726F626F74D4 -:10F1C0002E6C6567735B6C65675F696E6465785DFF -:10F1D0000A202020202020202020202020666F725E -:10F1E000206672616D6520696E2073656C662E7392 -:10F1F000746570286C6567293A0A20202020202039 -:10F200002020202020202020202073656C662E6D79 -:10F210006F766528290A2020202020202020202009 -:10F220002020202020206D6963726F6269742E7324 -:10F230006C656570283230290A202020202020208B -:10F2400020202020206C65675F696E646578203D12 -:10F250002073656C662E6E6578745F6C65675B30D5 -:10F260005D5B6C65675F696E6465785D0A0A0A724A -:10F270006F626F74203D20526F626F7428290A00FC +:10E970005F6469722C20647A290A0A0A636C6173E5 +:10E98000732043726565703A0A20202020737065F9 +:10E990006564203D20302E37350A202020207374F6 +:10E9A00072696465203D2031340A2020202073687C +:10E9B000696674203D20380A20202020736869662B +:10E9C000745F7374657073203D20320A202020200C +:10E9D00072616973655F6C6567203D2031300A2084 +:10E9E00020202072616973655F7374657073203DC8 +:10E9F00020320A202020206E6578745F6C656720C5 +:10EA00003D20280A202020202020202028322C20D1 +:10EA1000302C20332C2031292C2020202320666FFD +:10EA200072776172640A2020202020202020283163 +:10EA30002C20332C20302C2032292C202020232065 +:10EA40006261636B776172640A202020202020209D +:10EA50002028312C20322C20332C2030292C20202F +:10EA6000202320636C6F636B776973650A20202015 +:10EA7000202020202028332C20302C20312C203224 +:10EA8000292C2020202320636F756E7465722D63FE +:10EA90006C6F636B776973650A202020202020202B +:10EAA0002028322C20332C20312C2030292C2020DF +:10EAB0002023206C6566740A20202020202020203E +:10EAC00028332C20322C20302C2031292C202020BF +:10EAD000232072696768740A20202020290A0A20EE +:10EAE000202020646566205F5F696E69745F5F281F +:10EAF00073656C662C20726F626F74293A0A20204D +:10EB000020202020202073656C662E726F626F7447 +:10EB1000203D20726F626F740A2020202020202068 +:10EB20002073656C662E73686966745F78203D207B +:10EB3000300A202020202020202073656C662E7350 +:10EB4000686966745F79203D20300A2020202020EB +:10EB500020202073656C662E6F6E5F67726F756E16 +:10EB600064203D206C69737428726F626F742E6C20 +:10EB7000656773290A202020202020202073656CDF +:10EB8000662E6478203D20300A202020202020207E +:10EB90002073656C662E6479203D20310A20202088 +:10EBA000202020202073656C662E726F746174695A +:10EBB0006F6E203D20300A2020202020202020734E +:10EBC000656C662E737072656164203D20300A208A +:10EBD000202020202020206C6567203D20726F625D +:10EBE0006F742E6C6567735B305D0A2020202020D7 +:10EBF00020202073656C662E686569676874203D07 +:10EC0000206C65672E74696269610A2020202020CB +:10EC100020202073656C662E6C6173745F6C656771 +:10EC2000203D20300A0A20202020646566206D6F78 +:10EC300076652873656C66293A0A202020202020FA +:10EC40002020666F72206C656720696E2073656C8A +:10EC5000662E6F6E5F67726F756E643A0A202020B1 +:10EC60002020202020202020206478203D20736553 +:10EC70006C662E6478202A206C65672E785F646944 +:10EC800072202A2073656C662E73706565640A2095 +:10EC900020202020202020202020206479203D20BA +:10ECA00073656C662E6479202A206C65672E795F07 +:10ECB000646972202A2073656C662E7370656564C2 +:10ECC0000A2020202020202020202020206C656782 +:10ECD0002E6D6F76655F746F286C65672E78202DBA +:10ECE0002064782C206C65672E79202D2064792C87 +:10ECF000202D73656C662E686569676874290A2023 +:10ED00002020202020202020202020236C65672E1A +:10ED1000726F746174655F6279282D73656C662EFD +:10ED2000726F746174696F6E202A206C65672E782B +:10ED30005F646972202A206C65672E795F6469724E +:10ED4000202F2032290A20202020202020206D6919 +:10ED500063726F6269742E736C6565702832352931 +:10ED60000A0A202020206465662073746570287369 +:10ED7000656C662C206C6567293A0A2020202020CB +:10ED80002020206478203D20286C65672E785F6401 +:10ED90006972202A2073656C662E73686966742018 +:10EDA0002D2073656C662E73686966745F78292000 +:10EDB0002F2073656C662E73686966745F73746563 +:10EDC00070730A20202020202020206479203D20FC +:10EDD000286C65672E795F646972202A2073656CE0 +:10EDE000662E7368696674202D2073656C662E73B9 +:10EDF000686966745F7929202F2073656C662E73AD +:10EE0000686966745F73746570730A20202020201F +:10EE1000202020666F72207374657020696E2072E6 +:10EE2000616E67652873656C662E73686966745FCA +:10EE30007374657073293A0A202020202020202036 +:10EE400020202020726F626F742E6D6F76655F6276 +:10EE5000792864782C2064792C2030290A202020FD +:10EE600020202020202020202073656C662E7368CF +:10EE70006966745F78202B3D2064780A202020206A +:10EE8000202020202020202073656C662E73686966 +:10EE900066745F79202B3D2064790A202020202091 +:10EEA0002020202020202073656C662E6D6F7665F3 +:10EEB00028290A202020202020202073656C662E1F +:10EEC0006F6E5F67726F756E642E72656D6F7665BB +:10EED000286C6567290A2020202020202020666FCA +:10EEE00072207374657020696E2072616E67652888 +:10EEF00073656C662E72616973655F737465707398 +:10EF0000293A0A2020202020202020202020206CA8 +:10EF100065672E6D6F76655F627928302C20302C06 +:10EF20002073656C662E72616973655F6C65672915 +:10EF30000A20202020202020202020202073656C03 +:10EF4000662E6D6F766528290A202020202020203B +:10EF5000206C65672E6D6F76655F746F280A2020C0 +:10EF6000202020202020202020206C65672E686F24 +:10EF70006D65202B202873656C662E736869667436 +:10EF80005F78202B2073656C662E6478202A0A2017 +:10EF90002020202020202020202020202020202071 +:10EFA0002020202020202073656C662E73747269E7 +:10EFB000646529202A206C65672E785F6469722059 +:10EFC0002B2073656C662E7370726561642C0A2049 +:10EFD00020202020202020202020206C65672E6803 +:10EFE0006F6D65202B202873656C662E73686966CB +:10EFF000745F79202B2073656C662E6479202A0A51 +:10F000002020202020202020202020202020202000 +:10F01000202020202020202073656C662E737472BF +:10F0200069646529202A206C65672E795F6469729E +:10F03000202B2073656C662E7370726561642C0AD8 +:10F0400020202020202020202020202073656C6696 +:10F050002E72616973655F6C6567202A2073656C29 +:10F06000662E72616973655F7374657073202D20FD +:10F0700073656C662E6865696768740A20202020B5 +:10F0800020202020290A20202020202020207365F5 +:10F090006C662E6D6F766528290A2020202020209E +:10F0A000202073656C662E6D6F766528290A2020F6 +:10F0B000202020202020666F7220737465702069E4 +:10F0C0006E2072616E67652873656C662E72616969 +:10F0D00073655F7374657073202D2031293A0A209F +:10F0E00020202020202020202020206C65672E6DED +:10F0F0006F76655F627928302C20302C202D736567 +:10F100006C662E72616973655F6C6567290A2020E1 +:10F110002020202020202020202073656C662E6D6A +:10F120006F766528290A2020202020202020736562 +:10F130006C662E6F6E5F67726F756E642E61707095 +:10F14000656E64286C6567290A2020202020202015 +:10F150002073656C662E6D6F766528290A0A0A721F +:10F160006F626F74203D20526F626F7428290A67A6 +:10F17000616974203D20437265657028726F626F0B +:10F1800074290A666F72207374657020696E20722C +:10F19000616E6765283136293A0A202020206C6587 +:10F1A00067203D20726F626F742E6C6567735B67BA +:10F1B0006169742E6C6173745F6C65675D0A2020F1 +:10F1C0002020676169742E73746570286C656729E7 +:10F1D0000A20202020676169742E6C6173745F6C53 +:10F1E0006567203D20676169742E6E6578745F6C79 +:10F1F00065675B305D5B676169742E6C6173745F1A +:10F200006C65675D0A00000000000000000000005F :0400000500011C6D6D :00000001FF
--- a/tote.py Tue Dec 01 00:28:57 2015 +0100 +++ b/tote.py Tue Dec 01 11:47:18 2015 +0100 @@ -66,29 +66,25 @@ class Robot: def __init__(self): - self.legs = [ + self.legs = ( Leg( 2, 1, 0, -1, 1), Leg( 5, 4, 3, -1, -1), Leg( 8, 7, 6, 1, -1), Leg(11, 10, 9, 1, 1), - ] + ) def move_by(self, dx=0, dy=0, dz=0): for leg in self.legs: leg.move_by(dx * leg.x_dir, dy * leg.y_dir, dz) - def rotate_by(self, degrees): - for leg in self.legs: - leg.rotate_by(degrees) - class Creep: - speed = 1 + speed = 0.75 stride = 14 shift = 8 shift_steps = 2 raise_leg = 10 - raise_steps = 3 + raise_steps = 2 next_leg = ( (2, 0, 3, 1), # forward (1, 3, 0, 2), # backward @@ -109,13 +105,15 @@ self.spread = 0 leg = robot.legs[0] self.height = leg.tibia + self.last_leg = 0 def move(self): for leg in self.on_ground: - leg.move_to(leg.x - self.dx * leg.x_dir * self.speed, - leg.y - self.dy * leg.y_dir * self.speed, - -self.height) - leg.rotate_by(-self.rotation * leg.x_dir * leg.y_dir / 2) + dx = self.dx * leg.x_dir * self.speed + dy = self.dy * leg.y_dir * self.speed + leg.move_to(leg.x - dx, leg.y - dy, -self.height) + #leg.rotate_by(-self.rotation * leg.x_dir * leg.y_dir / 2) + microbit.sleep(25) def step(self, leg): dx = (leg.x_dir * self.shift - self.shift_x) / self.shift_steps @@ -124,34 +122,30 @@ robot.move_by(dx, dy, 0) self.shift_x += dx self.shift_y += dy - yield + self.move() self.on_ground.remove(leg) for step in range(self.raise_steps): leg.move_by(0, 0, self.raise_leg) - yield + self.move() leg.move_to( - (leg.home + self.shift_x + self.dx * - self.stride) * leg.x_dir + self.spread, - (leg.home + self.shift_y + self.dy * - self.stride) * leg.y_dir + self.spread, + leg.home + (self.shift_x + self.dx * + self.stride) * leg.x_dir + self.spread, + leg.home + (self.shift_y + self.dy * + self.stride) * leg.y_dir + self.spread, self.raise_leg * self.raise_steps - self.height ) - yield - yield + self.move() + self.move() for step in range(self.raise_steps - 1): leg.move_by(0, 0, -self.raise_leg) - yield + self.move() self.on_ground.append(leg) - yield - - def run(self, steps): - leg_index = 0 - for step in range(steps): - leg = robot.legs[leg_index] - for frame in self.step(leg): - self.move() - microbit.sleep(20) - leg_index = self.next_leg[0][leg_index] + self.move() robot = Robot() +gait = Creep(robot) +for step in range(16): + leg = robot.legs[gait.last_leg] + gait.step(leg) + gait.last_leg = gait.next_leg[0][gait.last_leg]
