## Copyright (C) 2023 borie
##
## This program is free software: you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see
## .
## -*- texinfo -*-
## @deftypefn {} {@var{retval} =} interJoint (@var{input1}, @var{input2})
##
## @seealso{}
## @end deftypefn
## Author: borie
## Created: 2023-01-20
##function [connectionMatrixJ] = interCartesian (n, L2, gap, points, q1, q2, d, a, alpha, jointNumber, Bmatrix)
##
## Task: Implement a code that check intersections with obstacle using the original position of
## the end effector in the joint-space
##
## Inputs: n
## L2, joint value
## gap, interval of sampling
## points, matrix containing joint and cartesian values
## q1 joint value
## q2 joint value
## d prismatic matrix in z
## a prismatic matrix in x
## alpha joint matrix in x
## jointNumber = number of joints
## Bmatrix
##
## Outputs: connectionMatrixC
##
function [connectionMatrixJ] = interJoint (n, L1, L2, gap, points, q1, q2, d, a, alpha, jointNumber, Bmatrix)
gap = 0.2;
connectionMatrixJ = [];
hold on
figure(2)
axis ([0 400 0 400]);
%getting y=ax+b values
for j=1:columns(points)-1
q1_stored = points(1,j);
q2_stored = points(2,j);
if q1_stored != q1
A = (q2_stored- q2)/(q1_stored - q1);
B = q2 - A * q1;
Q2 = @(Q1) A*Q1+B;
%getting the sampling direction
if q1 > q1_stored
gap = gap;
else
gap = -gap;
endif
connectionMatrixJ(j,n) = 0;
connectionMatrixJ(n,j) = 0;
%getting the sample points
for g=q1_stored:gap:q1
Q1test = g;
Q2test = Q2(g);
theta = [Q1test; Q2test];
jTee = dh2ForwardKinematics(theta, d, a, alpha, jointNumber);
b_P_ee = jTee*Bmatrix;
%Is the end effector colliding with obstacle
Xtest = b_P_ee(1);
Ytest = b_P_ee(2);
%filling the obstacle matrix
if(Ytest >= L1 || Ytest <= -L1 || (-L2<=Xtest && Xtest<=L2 && -L2<=Ytest && Ytest<=L2)) %verifie les obstacles
connectionMatrixJ(j,n) = 1;
connectionMatrixJ(n,j) = 1;
endif
endfor
if connectionMatrixJ(j, n) == 0 && n != j
Xplot = [q1, q1_stored];
Yplot = [q2, q2_stored];
title ("Points in Joint-Space");
plot(Xplot, Yplot, 'o-r', 'Color', 'b');
drawnow
endif
endif
endfor
endfunction