Имам въпрос за домашна работа, на който не мога да отговоря. Ето подканата за въпрос:
- Дефинирайте ур. 8.3 и уравнение 8.4 във функция. Тази функция трябва да вземе вектор от ъгли на ставите (
и
) като вход и трябва да върне вектор на колона, съдържащ двете функции (
и
), оценени под тези ъгли. Функцията трябва да съдържа дължините на връзките и стойностите на
и
за изчисление. Включете вашия код във вашето решение.
Уравнения 8.3 и 8.4 са:
(8.3)
(8.4)
където
Ето функцията, която написах:
function F = rob_arm (alphag, betag)
F = (1).*cos(alphag)+ (1).*(cos(alphag+betag))-(1) ;
(1).*sin(alphag) + (1).*(sin(alphag+betag))-(1.1) ;
end
Тъй като alpha
и beta
са матрици с различни размери, използвах meshgrid
, за да създам alphag
и betag
, и използвах тези матрици, за да изчисля стойностите на rob_arm
. След четири часа бъркане с това, дори вече не съм сигурен какво задава въпросът, а TA в момента не отговарят на имейли. Написах следния код, за да опитам да принудя rob_arm
в една колона:
alpha = 0:pi/100:(pi/2); %define angle alpha
beta = 0:pi/100:pi; %define angle beta
[alphag, betag] = meshgrid (alpha, beta); %mesh grid alpha and beta b/c different matrix dimensions
arm_pos = rob_arm (alphag, betag);
for ii = 1:1:101
for k = 1:1:51
col_vec (1,1:1:5151) = arm_pos(ii,k);
end
end
Пренебрегвайки заявката за създаване на колонен вектор, полученият изход arm_pos
е добър изход. Мога да го начертая на графика и получавам много красива картина на всички възможни точки, които тази ръка на робота може да „достигне“.
Но тъй като съм тъп и опитвам това от много часове, той не записва последователни стойности на rob_arm
в col_vec
, а просто го замества всеки път и в крайна сметка получавам матрица 1x1. В крайна сметка целта ще бъде да се използва методът на Нютон-Рафсън за определяне на нулите на тази функция, но това е много далеч. Мисля си, че ако мога да събера всички стойности, изчислени от rob_arm
в една колона, тогава мога да отговоря на този въпрос.
Следващият въпрос е:
- Създайте отделна функция, която приема въвеждане на един ред вектор, съдържащ двойката ъгли
и < img src="https://chart.googleapis.com/chart?cht=tx&chl=%5Cbeta" alt="\beta">. Резултатът от функцията трябва да бъде Якобиан (матрица 2 на 2). Първо, изчислете производните на уравнения. 8.3 – 8.4 на ръка, след което ги поставете във вашата функция. Включете своя функционален код във вашето решение
За което ще трябва да помоля за пояснение, защото не разбирам как матрица 1 x 51 (alpha
) и матрица 1 x 102 (beta
) могат да бъдат приети в един ред вектор, който след това ще изведе матрица 2x2 . Знам какво е Якобиан и това са частичните производни на моите две функции, а не матрица от стойности.
Ако някой иска да ми помогне, това би било супер страхотно.
F = [ f1; f2 ]
със съответните изрази заf1
иf2
? - person Lutz Lehmann   schedule 30.03.2015function F = rob_arm (alphag, betag) F = [(1).*cos(alphag)+ (1).*(cos(alphag+betag))-(1) ; ... (1).*sin(alphag) + (1).*(sin(alphag+betag))-(1.1)]; end
- person Buck Thorn   schedule 30.03.2015