Files
balance/__pycache__/balance.cpython-312.pyc

35 lines
7.9 KiB
Plaintext
Raw Normal View History

<EFBFBD>
+8i<38><00><00><00>ddlZddlmZddlmZGd<04>d<05>Zedk(r`e<05>Zej<00>ejddddd<08> <09>ejd
<EFBFBD>ej<00>ej<00>yy) <0B>N)<01>imu_py)<01>LegsControllerc<00>L<00>eZdZdZd d<02>Zd<03>Zd<04>Zd<05>Zd d<06>Zd<07>Z d<08>Z
dd <09>Z d
<EFBFBD>Z y )<0F>BalanceControlleru<72>
BalanceController 将原 balance.py 的平衡控制逻辑封装为类,
复用 LegsController 中已实现的电机初始化、使能、失能、扭矩读取
与位置控制等接口,保持脚本仍可直接运行。
c<00><><00> t|<03><01>|_ t j ||<02>|_|jj<00>d|_ y#t$r/}td|<04><00><02>t ddi<00><00>|_Yd}~<04>qd}~wwxYw#t$r5}td|<04><00><02>Gd<06>d<07>}|<05>|_Yd}~d|_ yd}~wwxYw) N)<01>portu!初始化 LegsController 失败: <20> DummyLegs<67>u初始化 IMU 失败: c<00><00>eZdZd<01>Zy)<03>,BalanceController.__init__.<locals>.DummyImuc<00><00>dddd<02>S)N<>)<03>roll<6C>pitch<63>yawr
<00><01>selfs <20>#/Users/liuhaiyan/balance/balance.py<70>getDataz4BalanceController.__init__.<locals>.DummyImu.getDatas<00><00>$'<27>#<23>c<EFBFBD>B<>B<>N)<04>__name__<5F>
__module__<EFBFBD> __qualname__rr
rr<00>DummyImur s<00><00>CrrF)
r<00>legs<67> Exception<6F>print<6E>typer<00>DmImu<6D>imu<6D>start<72>_running)r<00>imu_port<72>imu_baud<75>leg_port<72>ers r<00>__init__zBalanceController.__init__ s<><00><00> 4<>&<26>H<EFBFBD>5<>D<EFBFBD>I<EFBFBD> "<22><1D>|<7C>|<7C>H<EFBFBD>h<EFBFBD>7<>D<EFBFBD>H<EFBFBD> <10>H<EFBFBD>H<EFBFBD>N<EFBFBD>N<EFBFBD> <1C><1E><04> <0A><>!<19> 4<> <11>5<>a<EFBFBD>S<EFBFBD>9<> :<3A>1<><04>[<5B>"<22>b<EFBFBD>1<>3<>D<EFBFBD>I<EFBFBD>I<EFBFBD><49> 4<><34><19> "<22> <11>*<2A>1<EFBFBD>#<23>.<2E> /<2F> C<01> C<01> <20>z<EFBFBD>D<EFBFBD>H<EFBFBD>H<EFBFBD><1D><04> <0A><> "<22>s.<00>A<00>5B <00> B <03>%B<03>B <03> C
<03>$C<03>C
c<00><><00>t|jdd<02>r5|jj<00>|jj<00>yt d<03>y)u'使能四条腿和四个轮子电机。<E69CBA>mcNuG警告: LegsController 未成功初始化串口,跳过使能步骤。)<05>getattrr<00> enable_legs<67> enable_wheelsrrs r<00>
enable_allzBalanceController.enable_all$s;<00><00> <12>4<EFBFBD>9<EFBFBD>9<EFBFBD>d<EFBFBD>D<EFBFBD> )<29> <10>I<EFBFBD>I<EFBFBD> !<21> !<21> #<23> <10>I<EFBFBD>I<EFBFBD> #<23> #<23> %<25> <11>[<5B> \rc<00>~<00>t|jdd<02>r|jj<00>ytd<03>y)u.一次性失能所有电机(腿+轮子。r)NuG警告: LegsController 未成功初始化串口,跳过失能步骤。)r*r<00> disable_allrrs rr/zBalanceController.disable_all,s+<00><00> <12>4<EFBFBD>9<EFBFBD>9<EFBFBD>d<EFBFBD>D<EFBFBD> )<29> <10>I<EFBFBD>I<EFBFBD> !<21> !<21> #<23> <11>[<5B> \rc<00>~<00>t|jdd<02>r|jj<00>Std<03>gS)u'返回四条腿电机的扭矩列表。r)NuD警告: LegsController 未成功初始化串口,返回空列表。)r*r<00>get_legs_torquerrs rr1z!BalanceController.get_legs_torque4s3<00><00> <12>4<EFBFBD>9<EFBFBD>9<EFBFBD>d<EFBFBD>D<EFBFBD> )<29><17>9<EFBFBD>9<EFBFBD>,<2C>,<2C>.<2E> .<2E> <11>X<> Y<><15>Irc<00><><00>t|jdd<02>r |jj|||||<05>ytd<03>y)u:使用 LegsController 的位置速度控制四条腿。r)NuG警告: LegsController 未成功初始化串口,跳过位置控制。)r*r<00>control_legs_posr)r<00>pos1<73>pos2<73>pos3<73>pos4<73>vels rr3z"BalanceController.control_legs_pos=s5<00><00> <12>4<EFBFBD>9<EFBFBD>9<EFBFBD>d<EFBFBD>D<EFBFBD> )<29> <10>I<EFBFBD>I<EFBFBD> &<26> &<26>t<EFBFBD>T<EFBFBD>4<EFBFBD><14>s<EFBFBD> C<> <11>[<5B> \rc<00>.<00>tt|d<01>d<02>S)u"将偏置限制在 0~0.5 之间。r<00><00>?)<02>min<69>max)r<00>offss r<00>_limit_offsetsz BalanceController._limit_offsetsEs<00><00><12>3<EFBFBD>t<EFBFBD>S<EFBFBD>><3E>3<EFBFBD>'<27>'rc<00><><00>gd<01>}|ddkDrB|dd|dzt|dd<06>zz|d<|dd|dzt|dd<06>zz|d<|ddkrF|d d|d zt|d d<06>zz|d <|d
d|d zt|d d<06>zz|d
<|d dkrF|dd|d  zt|d  d<06>zz|d<|d
d|d  zt|d  d<06>zz|d
<|d dkDrB|dd|d zt|d d<06>zz|d<|d d|d zt|d d<06>zz|d <t|<03>}|D<00>cgc]}||z
<00><02> }}|D<00>cgc]}|j|<05><00><02>}}|Scc}wcc}w) N<>rrrrrg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?rg-C<1C><>6?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><00>r)<03>powr;r>)r<00>data<74>dtr=<00>min_off<66>os r<00>_update_offsetsz!BalanceController._update_offsetsIs<><00><00> <1E><04> <0F><07>=<3D><13> <1C><18><11>G<EFBFBD>F<EFBFBD>D<EFBFBD><17>M<EFBFBD>2<>3<EFBFBD>t<EFBFBD>G<EFBFBD>}<7D>S<EFBFBD>3I<33>I<>I<>D<EFBFBD><11>G<EFBFBD><18><11>G<EFBFBD>F<EFBFBD>D<EFBFBD><17>M<EFBFBD>2<>3<EFBFBD>t<EFBFBD>G<EFBFBD>}<7D>S<EFBFBD>3I<33>I<>I<>D<EFBFBD><11>G<EFBFBD> <0F><07>=<3D><14> <1D><18><11>G<EFBFBD>F<EFBFBD>T<EFBFBD>'<27>]<5D>N<EFBFBD>3<>C<EFBFBD><14>g<EFBFBD><1D><0E>s<EFBFBD>4K<34>K<>K<>D<EFBFBD><11>G<EFBFBD><18><11>G<EFBFBD>F<EFBFBD>T<EFBFBD>'<27>]<5D>N<EFBFBD>3<>C<EFBFBD><14>g<EFBFBD><1D><0E>s<EFBFBD>4K<34>K<>K<>D<EFBFBD><11>G<EFBFBD> <0F><06><<3C><04> <1C><18><11>G<EFBFBD>F<EFBFBD>T<EFBFBD>&<26>\<5C>M<EFBFBD>2<>3<EFBFBD><04>V<EFBFBD> <0C>}<7D>S<EFBFBD>3I<33>I<>I<>D<EFBFBD><11>G<EFBFBD><18><11>G<EFBFBD>F<EFBFBD>T<EFBFBD>&<26>\<5C>M<EFBFBD>2<>3<EFBFBD><04>V<EFBFBD> <0C>}<7D>S<EFBFBD>3I<33>I<>I<>D<EFBFBD><11>G<EFBFBD> <0F><06><<3C><03> <1B><18><11>G<EFBFBD>F<EFBFBD>D<EFBFBD><16>L<EFBFBD>1<>#<23>d<EFBFBD>6<EFBFBD>l<EFBFBD>3<EFBFBD>2G<32>G<>G<>D<EFBFBD><11>G<EFBFBD><18><11>G<EFBFBD>F<EFBFBD>D<EFBFBD><16>L<EFBFBD>1<>#<23>d<EFBFBD>6<EFBFBD>l<EFBFBD>3<EFBFBD>2G<32>G<>G<>D<EFBFBD><11>G<EFBFBD><16>d<EFBFBD>)<29><07>%)<29>*<2A>T<EFBFBD><01><01>G<EFBFBD> <0B>T<EFBFBD><04>*<2A>04<30>5<><04>1<EFBFBD><04>#<23>#<23>A<EFBFBD>&<26><04><04>5<><13> <0B><>+<2B><>5s <00> E2<04>E7c<00>B<00>d|_gd<02>}tj<00>}|jr<> tj<00>}||z
}|dkrd}|}|jj<00>}|j ||<05>}t |j dd<00>r;td|<01>}|jd|dz
d|dz
d|d z
d|d
z
|<07> <0B>n td |<02>tjd <0A>|jr<01><>yy#t$r}td|<08><00><02>Yd}~yd}~wwxYw)NTr@rg<><67><EFBFBD><EFBFBD><EFBFBD>ư>r)<00><00>?<3F>333333<33>?rArBrC<00>r8u调试: 偏置计算结果g<E69E9C><67><EFBFBD><EFBFBD>MbP?u(平衡循环内部异常, 退出循环: ) r"<00>timer rrIr*rr;r3r<00>sleepr) r<00>max_velr=<00> prev_time<6D>cur_timerFrEr8r&s r<00>run_balance_loopz"BalanceController.run_balance_loop`s<00><00><1C><04> <0A>#<23><04><18>I<EFBFBD>I<EFBFBD>K<EFBFBD> <09><12>m<EFBFBD>m<EFBFBD> <16><1F>9<EFBFBD>9<EFBFBD>;<3B><08><1D> <09>)<29><02><15><11>7<EFBFBD><1D>B<EFBFBD>$<24> <09><1B>x<EFBFBD>x<EFBFBD>'<27>'<27>)<29><04><1B>+<2B>+<2B>D<EFBFBD>"<22>5<><04><1A>4<EFBFBD>9<EFBFBD>9<EFBFBD>d<EFBFBD>D<EFBFBD>1<><1D>c<EFBFBD>7<EFBFBD>+<2B>C<EFBFBD><18>)<29>)<29><1C>t<EFBFBD>A<EFBFBD>w<EFBFBD><0E><1C>t<EFBFBD>A<EFBFBD>w<EFBFBD><0E><1C>t<EFBFBD>A<EFBFBD>w<EFBFBD><0E><1C>t<EFBFBD>A<EFBFBD>w<EFBFBD><0E><1F> *<2A><16><1A>6<><04>=<3D><15>
<EFBFBD>
<EFBFBD>5<EFBFBD>!<21>3<13>m<EFBFBD>m<EFBFBD><6D>4<1D> <16><15>@<40><11><03>D<>E<><15><> <16>s<00>CC=<00>= D<03>D<03>Dc<00><><00>d|_|j<00>t|jdd<03>r |jj <00>yy#t
$r}t d|<01><00><02>Yd}~yd}~wwxYw)u@关闭所有资源:失能电机、关闭串口、停止 IMU。F<E38082> close_serialNu关闭串口时出现异常: )r"r/r*rrUrr)rr&s r<00>shutdownzBalanceController.shutdown<77>sf<00><00><1E><04> <0A> <0C><18><18><1A> <12>4<EFBFBD>9<EFBFBD>9<EFBFBD>n<EFBFBD>d<EFBFBD> 3<> ;<3B><14> <09> <09>&<26>&<26>(<28> 4<><34><1D> ;<3B><15>5<>a<EFBFBD>S<EFBFBD>9<>:<3A>:<3A><> ;<3B>s<00>A <00> A-<03>A(<03>(A-N)z /dev/dm-imuiz /dev/dm-u2can)r:)rK) rrr<00>__doc__r'r-r/r1r3r>rIrSrVr
rrrrs8<00><00><08> <1E>0]<01>]<01><16>]<01>(<28><14>.!<16>H
;rr<00>__main__rLr:rM<00>) rN<00>
dm_imu_pkgr<00>Legs_controllerrrr<00>
controllerr-r3rOrSrVr
rr<00><module>r]s|<00><01> <0B><1D>*<2A>I;<3B>I;<3B>\ <0C>z<EFBFBD><19>"<22>$<24>J<EFBFBD><0E><19><19><1B><0E><1F><1F><04>d<EFBFBD>D<EFBFBD>$<24>C<EFBFBD><1F>@<40><0E>D<EFBFBD>J<EFBFBD>J<EFBFBD>q<EFBFBD>M<EFBFBD><0E><1F><1F>!<21><0E><17><17><19>r