Professional Documents
Culture Documents
생체공학 TP 2018271172 김연수
생체공학 TP 2018271172 김연수
1. 개요(Introduction)
보행이란 인간이나 동물이 지면을 따라 이동하는 과정을 말한다. 이 과정에서 몸의 다양한 부위들이 협력하여
일어난다.
보행맥락(Gait Context): 보행은 단순히 물리적 이동 이상의 의미를 가지며, 사회적, 문화적 맥락에서도
중요한 역할을 한다. 예를 들어, 걸어다님의 속도나 방식은 개인의 연령, 건강 상태, 문화적 관행 등에 따라
달라질 수 있다.
포스 플레이트(Pressure Plates):
2. 실험 방법(Method)
% 링크의 길이
L1 = 1; % 링크 1 의 길이
L2 = 1; % 링크 2 의 길이
% 관절 질량
m1 = 1; % 링크 1 의 질량 (kg)
m2 = 1; % 링크 2 의 질량 (kg)
% 중력 가속도
g = 9.81; % 중력 가속도 (m/s^2)
% Inverse Dynamics 계산
for i = 1:length(tau1)
% 관절 2 에서의 토크 (모멘트)
tau2_temp = tau2(i);
% 관절 1 에서의 토크 (모멘트)
tau1_temp = tau1(i);
% 각 관절의 각가속도 계산
alpha2(i) = (tau2_temp - m2*g*L2*sin(theta1(i) + theta2(i))) / (m2*L2^2);
alpha1(i) = (tau1_temp - m1*g*L1*sin(theta1(i)) - m2*g*(L1*sin(theta1(i)) +
L2*sin(theta1(i) + theta2(i)))) / (m1*L1^2 + m2*(L1^2 + L2^2 + 2*L1*L2*cos(theta2(i))));
% 각 관절의 각도 계산 (적분)
if i > 1
theta2(i) = theta2(i-1) + omega2(i) * (time(i) - time(i-1));
theta1(i) = theta1(i-1) + omega1(i) * (time(i) - time(i-1));
end
end
% 결과 출력
figure;
subplot(3,1,1);
plot(time, theta1, 'b', 'LineWidth', 2);
ylabel('각도 \theta_1 (rad)');
title('각도, 각속도, 각가속도');
grid on;
subplot(3,1,2);
plot(time, omega1, 'g', 'LineWidth', 2);
ylabel('각속도 \omega_1 (rad/s)');
grid on;
subplot(3,1,3);
plot(time, alpha1, 'r', 'LineWidth', 2);
ylabel('각가속도 \alpha_1 (rad/s^2)');
xlabel('시간 (s)');
grid on;
figure;
subplot(3,1,1);
plot(time, theta2, 'b', 'LineWidth', 2);
ylabel('각도 \theta_2 (rad)');
title('각도, 각속도, 각가속도');
grid on;
subplot(3,1,2);
plot(time, omega2, 'g', 'LineWidth', 2);
ylabel('각속도 \omega_2 (rad/s)');
grid on;
subplot(3,1,3);
plot(time, alpha2, 'r', 'LineWidth', 2);
ylabel('각가속도 \alpha_2 (rad/s^2)');
xlabel('시간 (s)');
grid on;
코드 설명
1. 링크의 길이, 관절 토크, 질량, 중력 가속도 초기화: 링크 길이, 관절에서의 토크(모멘트), 질량, 중력 가속
도 등의 초기값을 설정한다.
2. 각 관절의 각도, 각속도, 각가속도 초기화: 각 관절의 각도, 각속도, 각가속도를 저장할 변수를 초기화한다.
3. Inverse Dynamics 계산: 주어진 토크(모멘트)와 관절에서의 중력 효과를 바탕으로 각 관절의 각가속도를
계산한다. 이후 각속도와 각도를 적분하여 시간에 따른 변화를 계산한다.
4. 결과 출력: 시간에 따른 각 관절의 각도, 각속도, 각가속도를 그래프로 출력한다. 각도는 첫 번째 figure에
서, 각속도와 각가속도는 두 번째 figure에서 표시된다.
3. 실험 결과(Result)
각 관절의 각도와 각속도를 다양한 평면(Plane)에서 표시하려면, 각 관절의 각도와 각속도를 3차원 공간의 각 축
으로 투영하여 표현할 수 있다.
% xy 평면에서의 표시
figure;
subplot(3, 1, 1);
plot(hip_angle, knee_angle, 'b');
xlabel('고관절 각도 (rad)');
ylabel('무릎 각도 (rad)');
title('xy 평면');
subplot(3, 1, 2);
plot(knee_angle, ankle_angle, 'g');
xlabel('무릎 각도 (rad)');
ylabel('발목 각도 (rad)');
subplot(3, 1, 3);
plot(ankle_angle, hip_angle, 'r');
xlabel('발목 각도 (rad)');
ylabel('고관절 각도 (rad)');
% yz 평면에서의 표시
figure;
subplot(3, 1, 1);
plot(knee_angle, knee_angular_acc, 'b');
xlabel('무릎 각도 (rad)');
ylabel('무릎 각가속도 (rad/s^2)');
title('yz 평면');
subplot(3, 1, 2);
plot(ankle_angle, ankle_angular_acc, 'g');
xlabel('발목 각도 (rad)');
ylabel('발목 각가속도 (rad/s^2)');
subplot(3, 1, 3);
plot(hip_angle, hip_angular_acc, 'r');
xlabel('고관절 각도 (rad)');
ylabel('고관절 각가속도 (rad/s^2)');
% zx 평면에서의 표시
figure;
subplot(3, 1, 1);
plot(ankle_angle, hip_angle, 'b');
xlabel('발목 각도 (rad)');
ylabel('고관절 각도 (rad)');
title('zx 평면');
subplot(3, 1, 2);
plot(hip_angle, knee_angle, 'g');
xlabel('고관절 각도 (rad)');
ylabel('무릎 각도 (rad)');
subplot(3, 1, 3);
plot(knee_angle, ankle_angle, 'r');
xlabel('무릎 각도 (rad)');
ylabel('발목 각도 (rad)');
4. 결론(Conclusion)
5. 참고문헌(References)