Files
balance/u2can/__pycache__/motor_interface.cpython-313.pyc

60 lines
6.5 KiB
Plaintext
Raw Normal View History

new file: .vscode/settings.json new file: Legs_controller.py modified: README.md new file: __pycache__/Legs_controller.cpython-310.pyc new file: __pycache__/Legs_controller.cpython-313.pyc new file: __pycache__/balance.cpython-310.pyc new file: __pycache__/gradio.cpython-310.pyc new file: __pycache__/gradio.cpython-313.pyc new file: app_ui.py new file: balance.py new file: build/.cmake/api/v1/query/client-vscode/query.json new file: build/.cmake/api/v1/reply/cache-v2-ae4a9db768b4bbb36baa.json new file: build/.cmake/api/v1/reply/cmakeFiles-v1-389eb8769a8295e7571d.json new file: build/.cmake/api/v1/reply/codemodel-v2-5ea8cfc0b9263cbe5ae5.json new file: build/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file: build/.cmake/api/v1/reply/index-2025-09-11T04-53-20-0515.json new file: build/.cmake/api/v1/reply/target-imu_py-Debug-3913d741f2156d7faae9.json new file: build/.cmake/api/v1/reply/toolchains-v1-3105704d088db7adbfb5.json new file: build/CMakeCache.txt new file: build/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake new file: build/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin new file: build/CMakeFiles/3.22.1/CMakeSystem.cmake new file: build/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file: build/CMakeFiles/3.22.1/CompilerIdCXX/a.out new file: build/CMakeFiles/CMakeDirectoryInformation.cmake new file: build/CMakeFiles/CMakeOutput.log new file: build/CMakeFiles/Makefile.cmake new file: build/CMakeFiles/Makefile2 new file: build/CMakeFiles/TargetDirectories.txt new file: build/CMakeFiles/cmake.check_cache new file: build/CMakeFiles/imu_py.dir/DependInfo.cmake new file: build/CMakeFiles/imu_py.dir/build.make new file: build/CMakeFiles/imu_py.dir/cmake_clean.cmake new file: build/CMakeFiles/imu_py.dir/compiler_depend.make new file: build/CMakeFiles/imu_py.dir/compiler_depend.ts new file: build/CMakeFiles/imu_py.dir/depend.make new file: build/CMakeFiles/imu_py.dir/flags.make new file: build/CMakeFiles/imu_py.dir/link.txt new file: build/CMakeFiles/imu_py.dir/progress.make new file: build/CMakeFiles/progress.marks new file: build/Makefile new file: build/cmake_install.cmake new file: build/compile_commands.json new file: dm_imu/bsp_crc.cpp new file: dm_imu/bsp_crc.h new file: dm_imu/imu_data.csv new file: dm_imu/imu_driver.cpp new file: dm_imu/imu_driver.h new file: dm_imu/imu_plot.png new file: dm_imu/plot_imu.py new file: dm_imu/test_imu.cpp new file: imu_data.csv new file: pybind_imu/CMakeLists.txt new file: pybind_imu/README.md new file: pybind_imu/build/CMakeCache.txt new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeSystem.cmake new file: pybind_imu/build/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file: pybind_imu/build/CMakeFiles/3.22.1/CompilerIdCXX/a.out new file: pybind_imu/build/CMakeFiles/CMakeDirectoryInformation.cmake new file: pybind_imu/build/CMakeFiles/CMakeOutput.log new file: pybind_imu/build/CMakeFiles/Makefile.cmake new file: pybind_imu/build/CMakeFiles/Makefile2 new file: pybind_imu/build/CMakeFiles/TargetDirectories.txt new file: pybind_imu/build/CMakeFiles/cmake.check_cache new file: pybind_imu/build/CMakeFiles/imu_py.dir/DependInfo.cmake new file: pybind_imu/build/CMakeFiles/imu_py.dir/build.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/cmake_clean.cmake new file: pybind_imu/build/CMakeFiles/imu_py.dir/compiler_depend.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/compiler_depend.ts new file: pybind_imu/build/CMakeFiles/imu_py.dir/depend.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/flags.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/bsp_crc.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/bsp_crc.cpp.o.d new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/imu_driver.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/imu_driver.cpp.o.d new file: pybind_imu/build/CMakeFiles/imu_py.dir/link.txt new file: pybind_imu/build/CMakeFiles/imu_py.dir/progress.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/pybind_imu.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/pybind_imu.cpp.o.d new file: pybind_imu/build/CMakeFiles/progress.marks new file: pybind_imu/build/Makefile new file: pybind_imu/build/cmake_install.cmake new file: pybind_imu/build/imu_py.cpython-310-aarch64-linux-gnu.so new file: pybind_imu/example.py new file: pybind_imu/pybind_imu.cpp new file: src/example.py new file: test_imu new file: u2can/DM_CAN.py new file: u2can/DM_Motor_Test.py new file: u2can/LICENSE new file: u2can/README.md new file: u2can/__pycache__/DM_CAN.cpython-310.pyc new file: u2can/__pycache__/DM_CAN.cpython-312.pyc new file: u2can/__pycache__/DM_CAN.cpython-313.pyc new file: u2can/__pycache__/gradio.cpython-313.pyc new file: u2can/__pycache__/motor_interface.cpython-313.pyc new file: u2can/motor_interface.py new file: u2can/requirements.txt new file: ui.log
2025-12-06 22:47:57 +08:00
<EFBFBD>
<11>h<EFBFBD><00><00><><00>SSKrSSKrSSKrSSKrSSKJrJrJr SSK J
r
Sq Sq Sq 0q/r/r/rSrSrSrS S\S \4S
jjrg) <0C>N<>)<03>Motor<6F> MotorControl<6F> DM_Motor_Type)<01> CPGController<65>c<00><><00>URU5 [U5[:<3A>aURS5 [ [
R "U55$)u/将 new_value 加入窗口并返回窗口均值r)<07>append<6E>len<65> _WINDOW_SIZE<5A>pop<6F>float<61>np<6E>mean)<02>window<6F> new_values <20>0/home/allenyuan/balance/u2can/motor_interface.py<70>_moving_averagers8<00><00>
<EFBFBD>M<EFBFBD>M<EFBFBD>)<29><1C>
<EFBFBD>6<EFBFBD>{<7B>\<5C>!<21><0E>
<EFBFBD>
<EFBFBD>1<EFBFBD> <0A> <10><12><17><17><16><1F> !<21>!<21>c<00><><00>[R"SSSS9q[R"SS5q[
R 5 [[5q[[RSS5n[[RSS 5n[[RS
S 5n[[RS S 5n[RU5 [RU5 [RU5 [RU5 [RU5 [RU5 [RU5 [RU5 UUUUS.qg)u<>
初始化真实硬件:
- 串口用于 CAN 总线
- IMUpybind_imu提供陀螺仪角速度
- 四条腿电机对象并使能
z /dev/ttyACM1i<00><00>?)<01>timeoutz /dev/ttyACM0r<00><00><00><00><00><00><00><00><04>Motor1<72>Motor2<72>Motor3<72>Motor4N)<0F>serial<61>Serial<61>
serial_dev<EFBFBD>imu_py<70>DmImu<6D>imu<6D>startr<00>
motor_ctrlrr<00>DM4340<34>addMotor<6F>enable<6C>motorsr s r<00>_init_hardwarer1s<00><00><18><1D><1D>~<7E>v<EFBFBD>s<EFBFBD>C<>J<EFBFBD> <11>,<2C>,<2C>~<7E>v<EFBFBD>
.<2E>C<EFBFBD><07>I<EFBFBD>I<EFBFBD>K<EFBFBD><1E>j<EFBFBD>)<29>J<EFBFBD><13>=<3D>'<27>'<27><14>t<EFBFBD> 4<>F<EFBFBD> <12>=<3D>'<27>'<27><14>t<EFBFBD> 4<>F<EFBFBD> <12>=<3D>'<27>'<27><14>t<EFBFBD> 4<>F<EFBFBD> <12>=<3D>'<27>'<27><14>t<EFBFBD> 4<>F<EFBFBD><0F><17><17><06><1F><0E><17><17><06><1F><0E><17><17><06><1F><0E><17><17><06><1F><0E><15><15>f<EFBFBD><1D><0E><15><15>f<EFBFBD><1D><0E><15><15>f<EFBFBD><1D><0E><15><15>f<EFBFBD><1D><19><18><18><18> <06>Fr<00>duration<6F>dtc<00>(<00>[b[b[c
[5 [ SSSSS9nSnSnSnSnSn[ SUS S
SS S US S US SUS SUS 3 5 [R [SUS5 [R [SUS5 [R [SUS5 [R [SUS5 [R"S5 [R"5nURS- Ul [R"5U-
U:Gaw[R5n U RSS5n
U RSS5n U RSS5n [[U
5n [[ U 5n[["U 5n[ SU S SUS SUS 35 UR%X<>U5nUR'5nSnSnSnU*U -UU--
UU--
nUU -UU--UU--nUU -UU--
UU--nU*U -UU--UU--
n[(R*"SUUS --U-SS5n[(R*"SUUS!--U-SS5n[(R*"SUUS"--U-SS5n[(R*"SUUS#--U-SS5n[R"5U-
n[ SUS S
US S US S US SUS SUS 3 5 [R [SUS5 [R [SUS5 [R [SUS5 [R [SUS5 [R"U5 [R"5U-
U:aGMw[R-5Hn[R/U5 M [(a[R15 [(a[R35 gg)$u<>
运行四足平衡控制,使用真实 IMU 数据。
:param duration: 运行时长(秒)
:param dt: 控制循环时间步长(秒)
Ngg@g333333<33>?g@)<04> base_height<68> base_period<6F> amplitude<64> stable_rangeg333333<33><33>zt=z.2fz s deviation=z.3fz h1=z h2=z h3=z h4=r!<00> r"r#r$rr<00>gyroy<6F>gyroz<6F>gyroxzIMU data: pitch_rate=z , yaw_rate=z , roll_rate=g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><1E><>Q<EFBFBD><51>?<3F>FL<46>FR<46>RL<52>RR)r'r*r,r1r<00>print<6E>control_Pos_Velr0<00>time<6D>sleepr6<00>t<>getData<74>getr<00> _pitch_window<6F> _yaw_window<6F> _roll_window<6F>step<65>get_leg_heightsr<00>clip<69>values<65>disable<6C>close<73>stop)r2r3<00>
controller<EFBFBD>h1<68>h2<68>h3<68>h4rE<00>
start_time<EFBFBD>data<74> pitch_raw<61>yaw_raw<61>roll_raw<61>
pitch_rate<EFBFBD>yaw_rate<74> roll_rate<74> deviation<6F>heights<74>
factor_cpg<EFBFBD>
factor_imu<EFBFBD> factor_roll<6C>imu_correction_1<5F>imu_correction_2<5F>imu_correction_3<5F>imu_correction_4<5F>ms r<00>runriLs <00><00><12><19>S<EFBFBD>[<5B>J<EFBFBD>,><3E><16><18><1F>3<EFBFBD>*-<2D>(,<2C>+.<2E>0<>J<EFBFBD>
<0F>B<EFBFBD> <0A>B<EFBFBD> <0A>B<EFBFBD> <0E>B<EFBFBD> <0B>A<EFBFBD> <09>B<EFBFBD>q<EFBFBD><13>g<EFBFBD>\<5C>#<23>c<EFBFBD><19>+<10><12>3<EFBFBD>x<EFBFBD>t<EFBFBD>B<EFBFBD>s<EFBFBD>8<EFBFBD>4<EFBFBD><02>3<EFBFBD>x<EFBFBD>t<EFBFBD>B<EFBFBD>s<EFBFBD>8<EFBFBD> =<3D>><3E><0E><1E><1E>v<EFBFBD>h<EFBFBD>/<2F><12>R<EFBFBD>8<><0E><1E><1E>v<EFBFBD>h<EFBFBD>/<2F><12>R<EFBFBD>8<><0E><1E><1E>v<EFBFBD>h<EFBFBD>/<2F><12>R<EFBFBD>8<><0E><1E><1E>v<EFBFBD>h<EFBFBD>/<2F><12>R<EFBFBD>8<> <09>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD><16><19><19><1B>J<EFBFBD><1D>)<29>)<29>A<EFBFBD>-<2D>J<EFBFBD>L<EFBFBD>
<0E>)<29>)<29>+<2B>
<EFBFBD>
"<22>X<EFBFBD>
-<2D><12>{<7B>{<7B>}<7D><04><18>H<EFBFBD>H<EFBFBD>W<EFBFBD>c<EFBFBD>*<2A> <09><18>H<EFBFBD>H<EFBFBD>W<EFBFBD>c<EFBFBD>*<2A><07><18>H<EFBFBD>H<EFBFBD>W<EFBFBD>c<EFBFBD>*<2A><08>%<25>]<5D>I<EFBFBD>><3E>
<EFBFBD>$<24>[<5B>G<EFBFBD><<3C><08>$<24>\<5C>H<EFBFBD>=<3D> <09> <0A>%<25>j<EFBFBD><13>%5<>[<5B><18>#<23><0E>l<EFBFBD>[d<>eh<65>Zi<5A>j<>k<><1F>O<EFBFBD>O<EFBFBD>J<EFBFBD>"<22>=<3D> <09><1D>,<2C>,<2C>.<2E><07><19>
<EFBFBD><19>
<EFBFBD><1A> <0B>'<27>;<3B><1A>3<>j<EFBFBD>8<EFBFBD>6K<36>K<>k<EFBFBD>\e<>Ne<4E>e<><18>&<26><1A>3<>j<EFBFBD>8<EFBFBD>6K<36>K<>k<EFBFBD>\e<>Ne<4E>e<><18>&<26><1A>3<>j<EFBFBD>8<EFBFBD>6K<36>K<>k<EFBFBD>\e<>Ne<4E>e<><18>&<26>;<3B><1A>3<>j<EFBFBD>8<EFBFBD>6K<36>K<>k<EFBFBD>\e<>Ne<4E>e<><18><10>W<EFBFBD>W<EFBFBD>U<EFBFBD>Z<EFBFBD>'<27>$<24>-<2D>7<>7<>:J<>J<>E<EFBFBD>SV<53> W<><02> <0F>W<EFBFBD>W<EFBFBD>d<EFBFBD>Z<EFBFBD>'<27>$<24>-<2D>7<>7<>:J<>J<>C<EFBFBD>QU<51> V<><02> <0F>W<EFBFBD>W<EFBFBD>d<EFBFBD>Z<EFBFBD>'<27>$<24>-<2D>7<>7<>:J<>J<>C<EFBFBD>QU<51> V<><02> <0F>W<EFBFBD>W<EFBFBD>U<EFBFBD>Z<EFBFBD>'<27>$<24>-<2D>7<>7<>:J<>J<>E<EFBFBD>SV<53> W<><02> <11>I<EFBFBD>I<EFBFBD>K<EFBFBD>*<2A> $<24><01> <0A><02>1<EFBFBD>S<EFBFBD>'<27><1C>i<EFBFBD><03>_<EFBFBD>5<14><16>s<EFBFBD>8<EFBFBD>4<EFBFBD><02>3<EFBFBD>x<EFBFBD>t<EFBFBD>B<EFBFBD>s<EFBFBD>8<EFBFBD>4<EFBFBD><02>3<EFBFBD>x<EFBFBD>A<01> B<01> <13>"<22>"<22>6<EFBFBD>(<28>#3<>R<EFBFBD><12><<3C><12>"<22>"<22>6<EFBFBD>(<28>#3<>R<EFBFBD><12><<3C><12>"<22>"<22>6<EFBFBD>(<28>#3<>R<EFBFBD><12><<3C><12>"<22>"<22>6<EFBFBD>(<28>#3<>R<EFBFBD><12><<3C> <0A>
<EFBFBD>
<EFBFBD>2<EFBFBD><0E>k <0F>)<29>)<29>+<2B>
<EFBFBD>
"<22>X<EFBFBD>
-<2D>p<14>]<5D>]<5D>_<EFBFBD><01><12><1A><1A>1<EFBFBD><1D><1D><11>z<EFBFBD><12><18><18><1A>
<EFBFBD>s<EFBFBD> <0B><08><08>
<EFBFBD> r)gN@g{<14>G<EFBFBD>z<EFBFBD>?)rC<00>numpyrr%r(<00>DM_CANrrr<00>cpgrr'r*r,r0rHrIrJr rr1rri<00>rr<00><module>rnsg<00><01> <0B><12> <0A> <0A>6<>6<><1D>
<12>
<EFBFBD>
<EFBFBD><03> <11>
<EFBFBD> <0B><06><13> <0A><10> <0B><11> <0C><10> <0C>"<22>*<06>^b<13>%<25>b<13>E<EFBFBD>br