рд▓реЗрдЧреЛ рд╕реЗрдЧреНрд╡реЗ рдХрд╛ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВред рдпрд╣ рд▓реЗрдЦ рд╡рд┐рд╖рдп рдХреЗ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ habrahabr.ru/post/178103 ред
рд╣рдо рдЙрд╕ рдХреНрд╖рдг рд╕реЗ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЧреЛ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдореВрд▓реНрдп рд╣реИрдВ, рдФрд░ рд╣рдо рд░реЛрдмреЛрдЯ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЪрд▓реЛ Segway рдкрд░ рд░рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореИрдВ рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рджреЗрддрд╛ рд╣реВрдВред




рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд░реЛрдмреЛрдЯ рдХреЗ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓ рдХреА рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЪреБрдирддреЗ рд╣реИрдВ:

рдЬрдбрд╝рддрд╛ рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдФрд░ рдЧрддрд┐ рдХреЗ рд╕рднреА рдкрджрдирд╛рдо рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд░реЛрдмреЛрдЯ рдХреЗрд╡рд▓ рдПрдХ XOZ рд╡рд┐рдорд╛рди рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реЗрдЧрд╡реЗ рдкрд░ рдПрдХ рдЕрднрд┐рдиреНрди рдИрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЗрдВрдЬрди рдФрд░ рдкрд╣рд┐рдпреЛрдВ рдХреА рдЬрдбрд╝рддрд╛ рдХреЗ рдХреНрд╖рдгреЛрдВ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрдгрдирд╛ рдХрд┐рдП рдмрд┐рдирд╛ред
рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рдореАрдХрд░рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдЕрдм рд╢рд╛рдВрддрд┐ рд╕реЗ Lagrangian рдХреЗ рд▓рд┐рдП рд╕рдореАрдХрд░рдг рд▓рд┐рдЦреЗрдВ:


рдЧрдгрдирд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореИрдХреНрд╕рд┐рдорд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдЧрдгрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдЗрд╕рдХреЗ WxMaxima рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджрд░реНрдЬ рдХрд░реЗрдВ:

V:expand( trigsimp( ((diff(integrate(R*diff(Theta(t),t),t)+L*sin(Psi(t)),t))^2+ (diff(R+L*cos(Psi(t)),t))^2)*M/2 +J2*(diff(Psi(t),t))^2/2-M*g*(R+L*cos(Psi(t))) ) ); tex(V); 


рдХрдорд╛рдВрдб \ рдХреНрд░рд┐рдпрд╛ | trigsimp | рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рднрд╛рд╡реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ \ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ | рдХреЛрд╖реНрдардХ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдЯреАрдо \ рдХреНрд░рд┐рдпрд╛ | рдЯреЗрдХреНрд╕ | рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЯреЗрдХреНрд╕-рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЯреЗрдХреНрд╕-рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдпрд╛ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╣рдо рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд░реВрдк рдореЗрдВ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


рдФрд░ рд╣рдо Lagrange рд╕рдореАрдХрд░рдг рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдореИрдХреНрд╕рд┐рдорд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо:

 U:expand(diff(diff(V,diff(Ttheta(t),t)),t)-diff(V,Theta(t))); Y:expand(diff(diff(V,diff(Psi(t),t)),t)-diff(V,Psi(t))); tex(U); tex(Y); 


рд╕рдВрдХреЗрдд рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:






рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ Segway рдХреЗ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореАрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ habrahabr.ru/post/178103 рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:







рдЪреВрдВрдХрд┐ рд╡рд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЗрдВрдбрдХреНрд╢рди рдмреЗрд╣рдж рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП L = 0 рдбрд╛рд▓реЗрдВ:



рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:



рдЕрдм рд╣рдо рдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдмрд░рд╛рдмрд░реА рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ:


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧреБрдгрд╛рдВрдХ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдореАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдореЙрдбрд▓ рдХреЛ рд░реИрдЦрд┐рдХ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реАрдорд╛, рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ ред рд╣рдо рд╢реЗрд╖ рдЕрд╕рдорд╛рдирддрд╛рдУрдВ рдХреА рднреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ:

рдЕрдм рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╕рдореАрдХрд░рдгреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ :





рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рд╣рдореЗрдВ рджреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕, рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░рд╛рдЬреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреЛрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЬреНрдп рдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдПрдХ рдФрд░ рд╕рдореАрдХрд░рдг рдЬреЛрдбрд╝рдХрд░:





рдЕрдм, рд╣рдореЗрдВ рдПрдХ рддреАрд╕рд░рд╛-рдСрд░реНрдбрд░ рд╕рд┐рд╕реНрдЯрдо рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рд╣рдо рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдЯрди рджреНрд╡рд┐рдкрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ ред рдпрд╣рд╛рдВ рд╕рдВрджрд░реНрдн рдореЙрдбрд▓ рдХреЗ рд╕рдВрдХреНрд░рдордг рд╕рдордп рдХрд╛ рд╕рд╛рд░рдгреАрдорд╛рди рдореВрд▓реНрдп, рд╣рдорд╛рд░реЗ рд░реЛрдмреЛрдЯ рдХреЗ рдореЙрдбрд▓ рдХрд╛ рд╕рдВрдХреНрд░рдордг рд╕рдордп, рдЬрд┐рд╕реЗ рд╣рдордиреЗ 0.3 рд╕реЗрдХрдВрдб рдХреЗ рдмрд░рд╛рдмрд░ рд▓рд┐рдпрд╛ред рдПрдХ рд╕рдВрджрд░реНрдн рдореЙрдбрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рдЖрдЗрдЬрдирд╡реЗрд▓реНрдпреВрдЬрд╝ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ , рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧреБрдгрд╛рдВрдХ рдПрдХрд░рдореИрди рдХреЗ рд╕реВрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:







рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗред рдкреНрд░рд╛рдкреНрдд рдЧреБрдгрд╛рдВрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдирд┐рдпрдВрддреНрд░рдг рд╡реЛрд▓реНрдЯреЗрдЬ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ 7 [рд╡реА] рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдореЙрдбрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреЗрдВрдбреБрд▓рдо рдХреЗ рдХреЛрдгреАрдп рд╡реЗрдЧ рдФрд░ рд░реЛрдмреЛрдЯ рдХреЗ рдкрд╣рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╛рдВрдХ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рд░реЗрдЦрд╛ рдУрд╡рд░рд╢реВрдЯ рдФрд░ рд╕рдВрдХреНрд░рдордг рд╕рдордп рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧреАред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИред
 #define GYRO_PORT IN_1 #define LEFT_MOTOR OUT_C #define RIGHT_MOTOR OUT_B #define BOTH_MOTORS OUT_BC #define WAIT_TIME 8.0 #define KGYROANGLE 0.487 #define KSPEED 0.024 #define KGYROSPEED 0.153 #define KPOS 0 task main(){ float time = WAIT_TIME * 0.001; float segway_angle = 0; float segway_speed; float wheel_angle = 0, last_wheel_angle; float wheel_speed; float max_voltage; int u; SetSensorHTGyro(GYRO_PORT); Wait(50); while(true) { max_voltage = BatteryLevel() / 1000; segway_speed = (SensorHTGyro(GYRO_PORT) + 2); segway_angle += segway_speed * time; last_wheel_angle = wheel_angle; wheel_angle = (MotorRotationCount(LEFT_MOTOR) + MotorRotationCount(RIGHT_MOTOR)) / 2; wheel_speed = (wheel_angle - last_wheel_angle) / time; u = KGYROANGLE * segway_angle + KSPEED * wheel_speed + KGYROSPEED * segway_speed + KPOS * wheel_angle; u = u * 100 / max_voltage; if (abs(u) > 100){ u = sign(u) * 100; } OnFwd(BOTH_MOTORS, u); Wait(WAIT_TIME); } } 

Source: https://habr.com/ru/post/In193272/


All Articles