2014-12-15 4 views
0

2D 환경에서 가상 포텐셜 필드를 사용하여 로봇 그룹의 움직임을 제어하고 있습니다. 위치는 x 및 y 좌표의 행렬로 표시됩니다. 가상 포텐셜 필드는 여러 변수에 따라 달라지며 그 중 하나는 로봇 간 거리입니다. 내 코드의 짧은 (심하게 단순화 된) 예제가 아래에 나와 있습니다. 나는 경사 값을 적용 할 수 있도록기호 계산에 diff 또는 gradient 사용?

x = sym('x',[4 2]);    % four robots with x and y coordinates 
xd = sym('xd',[1 2]);   % a single destination 

F = sym(ones(4,1));   % one potential function for each robot 

for i=1:size(x,1) 
    for j=1:size(x,1) 
     if i~=j 
      F(i) = F(i)/norm(x(i,:)-x(j,:))^2;  % infinite potential when any two robots collide 
     end 
    end 
    F(i) = F(i) * norm(x(i,:)-xd)^2;     % add an attraction force to the goal 
end 

그래서 지금은 가능성이 분야에 대한 상징적 인 표현을 만들었으므로, 나는 그들의 유도체를 찾을 필요가있다. 이제 궁금 하군요 : 그것은 기능을 사용하여 gradient 또는 diff 여부에 상관없이 위치에 관해서 파생물을 얻을 수 있습니까? 명확히하기 : 로봇의 경우 ixi_1xi_2과 관련하여 미분을 취하고 싶습니다.

답변

1

귀하의 질문은 언급 한 바와 같이 프로그래밍보다는 수학에 접해 있습니다. gradient은 파생 상품을 여러 차원으로 일반화 한 것입니다. 예, 2 차원 평면에서 이동하려면 sym/gradient을 사용하는 것이 좋습니다. the documentation states으로, 두 번째 인수에 대해 스칼라 만 지정하면 sym/gradientsym/diff과 같습니다. 2D 그라디언트를 올바르게 계산하려면 두 번째 인수가 두 요소 벡터 여야합니다 (예 : [xi_1 xi_2]).