From b3a97f6413a2779e37bd381c4225944454193702 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Fri, 26 Jan 2024 15:29:07 +0000 Subject: [PATCH 01/32] Added the class 'DQ_SerialVrepRobot'. Also modified the class 'DQ_VrepRobot' as required by 'DQ_SerialVrepRobot'. --- interfaces/vrep/DQ_SerialVrepRobot.m | 236 +++++++++++++++++++++++++++ interfaces/vrep/DQ_VrepRobot.m | 16 +- 2 files changed, 248 insertions(+), 4 deletions(-) create mode 100644 interfaces/vrep/DQ_SerialVrepRobot.m diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m new file mode 100644 index 00000000..a6b92c71 --- /dev/null +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -0,0 +1,236 @@ +% CLASS DQ_SerialVrepRobot - Concrete class to interface with serial robots +% in VREP. +% +% Usage: +% 1) Drag-and-drop a serial robot to a VREP scene. For instance, a +% "LBR4p" robot. +% 2) Run +% >> vi = DQ_VrepInterface(); +% >> vi.connect('127.0.0.1',19997); +% >> vrep_robot = LBR4pVrepRobot("LBR4p", vi); +% >> vi.start_simulation(); +% >> robot.get_q_from_vrep(); +% >> pause(1); +% >> vi.stop_simulation(); +% >> vi.disconnect(); +% Note that the name of the robot should be EXACTLY the same as in +% VREP. For instance, if you drag-and-drop a second robot, its name +% will become "LBR4p#0", a third robot, "LBR4p#1", and so on. +% +% DQ_SerialVrepRobot Methods: +% send_q_to_vrep - Sends the joint configurations to VREP +% get_q_from_vrep - Obtains the joint configurations from VREP +% kinematics - Obtains the DQ_Kinematics implementation of this robot + +% (C) Copyright 2018-2023 DQ Robotics Developers +% +% This file is part of DQ Robotics. +% +% DQ Robotics is free software: you can redistribute it and/or modify +% it under the terms of the GNU Lesser General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% DQ Robotics 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 Lesser General Public License for more details. +% +% You should have received a copy of the GNU Lesser General Public License +% along with DQ Robotics. If not, see . +% +% DQ Robotics website: dqrobotics.github.io +% +% Contributors to this file: +% 1. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) +% - Responsible for the original implementation. + +classdef DQ_SerialVrepRobot < DQ_VrepRobot + properties + joint_names; + base_frame_name; + end + + methods + function obj = DQ_SerialVrepRobot(base_robot_name, robot_dof, robot_name, vrep_interface) + % This method constructs an instance of a DQ_SerialVrepRobot. + % Usage: + % DQ_SerialVrepRobot(base_robot_name, robot_dof, robot_name, vrep_interface); + % base_robot_name: The base name of the robot in the CoppeliaSim scene. + % robot_dof: The number of DoF of the robot in the CoppeliaSim scene. + % robot_name: The name of the robot in the CoppeliaSim scene. + % vrep_interface: The DQ_VrepInterface object connected to the CoppeliaSim scene. + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % + % Note that the name of the robot should be EXACTLY the same as in the CoppeliaSim + % scene. For instance, if you drag-and-drop a second robot, its name will become + % "my_robot#0", a third robot, "my_robot#1", and so on. + + obj.robot_name = robot_name; + obj.vrep_interface = vrep_interface; + + %% The use of 'initialize_joint_names_from_vrep()', as is done in the C++ implementation, is not supported on a constructor in MATLAB + % From the second copy of the robot and onward, VREP appends a + % #number in the robot's name. We check here if the robot is + % called by the correct name and assign an index that will be + % used to correctly infer the robot's joint labels. + splited_name = strsplit(obj.robot_name,'#'); + robot_label = splited_name{1}; + if ~strcmp(robot_label, base_robot_name) + error('Expected %s', base_robot_name) + end + if length(splited_name) > 1 + robot_index = splited_name{2}; + else + robot_index = ''; + end + + % Initialize joint names, link names, and base frame name + obj.joint_names = {}; + for i=1:robot_dof + current_joint_name = {robot_label,'_joint',int2str(i),'#',robot_index}; + obj.joint_names{i} = strjoin(current_joint_name,''); + + current_link_name = {robot_label,'_link',int2str(i+1),'#',robot_index}; + obj.link_names{i} = strjoin(current_link_name,''); + end + obj.base_frame_name = obj.joint_names{1}; + end + + function joint_names = get_joint_names(obj) + % This method gets the joint names of the robot in the CoppeliaSim scene. + % Usage: + % get_joint_names; + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % joint_names = vrep_robot.get_joint_names; + + joint_names = obj.joint_names; + end + + function set_configuration_space_positions(obj, q) + % This method sets the joint configurations to the robot in the CoppeliaSim scene. + % Usage: + % set_configuration_space_positions(q); + % q: The joint configurations of the robot in the CoppeliaSim scene. + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % q = zeros(7,1); + % vrep_robot.set_configuration_space_positions(q); + % + % Note that this calls "set_joint_positions" in the remoteAPI, meaning that it + % is only suitable for passive joints. + + obj.vrep_interface.set_joint_positions(obj.joint_names, q) + end + + function q = get_configuration_space_positions(obj) + % This method gets the joint configurations of the robot in the CoppeliaSim scene. + % Usage: + % get_configuration_space_positions; + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % q = vrep_robot.get_configuration_space_positions; + + q = obj.vrep_interface.get_joint_positions(obj.joint_names); + end + + function set_target_configuration_space_positions(obj, q_target) + % This method sets the joint configurations to the robot in the CoppeliaSim scene as a target configuration for the joint controllers. + % Usage: + % set_target_configuration_space_positions(q); + % q_target: The target joint configurations of the robot in the CoppeliaSim scene. + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % q_target = zeros(7,1); + % vrep_robot.set_target_configuration_space_positions(q_target); + % + % Note that this calls "set_joint_target_positions" in the remoteAPI, meaning that it + % is only suitable for active joints. + + obj.vrep_interface.set_joint_target_positions(obj.joint_names, q_target) + end + + function qd = get_configuration_space_velocities(obj) + % This method gets the joint velocities of the robot in the CoppeliaSim scene. + % Usage: + % get_configuration_space_velocities; + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % qd = vrep_robot.get_configuration_space_velocities; + + qd = obj.vrep_interface.get_joint_velocities(obj.joint_names); + end + + function set_target_configuration_space_velocities(obj, v_target) + % This method sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. + % Usage: + % set_target_configuration_space_positions(q); + % v_target: The target joint velocities of the robot in the CoppeliaSim scene. + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % v_target = zeros(7,1); + % vrep_robot.set_target_configuration_space_velocities(v_target); + % + % Note that this calls "set_joint_target_velocities" in the remoteAPI, meaning that it + % is only suitable for active joints. + + obj.vrep_interface.set_joint_target_velocities(obj.joint_names, v_target); + end + + function set_configuration_space_torques(obj,tau) + % This method sets the joint torques of the robot in the CoppeliaSim scene. + % Usage: + % set_target_configuration_space_positions(q); + % tau: The joint torques of the robot in the CoppeliaSim scene. + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % tau = zeros(7,1); + % vrep_robot.set_configuration_space_torques(tau); + % + % Note that this calls "set_joint_torques" in the remoteAPI, meaning that it + % is only suitable for active joints. + + obj.vrep_interface.set_joint_torques(obj.joint_names,tau) + end + + function tau = get_configuration_space_torques(obj) + % This method gets the joint torques of the robot in the CoppeliaSim scene. + % Usage: + % get_configuration_space_torques; + % + % Example: + % vi = DQ_VrepInterface(); + % vi.connect('127.0.0.1',19997); + % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); + % tau = vrep_robot.get_configuration_space_torques; + + tau = obj.vrep_interface.get_joint_torques(obj.joint_names); + end + end +end \ No newline at end of file diff --git a/interfaces/vrep/DQ_VrepRobot.m b/interfaces/vrep/DQ_VrepRobot.m index fe6334ed..93bf81b6 100644 --- a/interfaces/vrep/DQ_VrepRobot.m +++ b/interfaces/vrep/DQ_VrepRobot.m @@ -30,7 +30,16 @@ % DQ Robotics website: dqrobotics.sourceforge.net % % Contributors to this file: -% Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% 1. Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% - Responsible for the original implementation. +% 2. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) +% - Altered the names of the following methods to ensure +% compatibility with the C++ version of the class: +% - 'send_q_to_vrep' became 'set_configuration_space_positions' +% - 'get_q_from_vrep' became 'get_configuration_space_positions' +% - Removed the following methods to ensure compatibility with the +% C++ version of the class: +% - 'kinematics' classdef (Abstract) DQ_VrepRobot @@ -40,9 +49,8 @@ end methods (Abstract) - send_q_to_vrep(obj,q); - q = get_q_from_vrep(obj); - kin = kinematics(obj); + set_configuration_space_positions(obj,q); + q = get_configuration_space_positions(obj); end end From ace84afa2b2bc734d820351a3f138049200595d7 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Fri, 26 Jan 2024 15:52:54 +0000 Subject: [PATCH 02/32] Updated classes 'LBR4pVrepRobot' and 'YouBotVrepRobot' for compatibility with the class 'DQ_SerialVrepRobot'. --- interfaces/vrep/DQ_SerialVrepRobot.m | 3 -- interfaces/vrep/robots/LBR4pVrepRobot.m | 69 ++++-------------------- interfaces/vrep/robots/YouBotVrepRobot.m | 49 ++++++++--------- 3 files changed, 33 insertions(+), 88 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index a6b92c71..5b339a4c 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -94,9 +94,6 @@ for i=1:robot_dof current_joint_name = {robot_label,'_joint',int2str(i),'#',robot_index}; obj.joint_names{i} = strjoin(current_joint_name,''); - - current_link_name = {robot_label,'_link',int2str(i+1),'#',robot_index}; - obj.link_names{i} = strjoin(current_link_name,''); end obj.base_frame_name = obj.joint_names{1}; end diff --git a/interfaces/vrep/robots/LBR4pVrepRobot.m b/interfaces/vrep/robots/LBR4pVrepRobot.m index 6e1be7cc..d0b71d5b 100644 --- a/interfaces/vrep/robots/LBR4pVrepRobot.m +++ b/interfaces/vrep/robots/LBR4pVrepRobot.m @@ -41,67 +41,21 @@ % DQ Robotics website: dqrobotics.sourceforge.net % % Contributors to this file: -% Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% 1. Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% - Responsible for the original implementation +% 2. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) +% - Updated for compatibility with the DQ_SerialVrepRobot class. -classdef LBR4pVrepRobot < DQ_VrepRobot - - properties - joint_names; - base_frame_name; - end - +classdef LBR4pVrepRobot < DQ_SerialVrepRobot methods - function obj = LBR4pVrepRobot(robot_name,vrep_interface) - %% Constructs an instance of a LBR4pVrepRobot - % >> vi = VrepInterface() - % >> vi.connect('127.0.0.1',19997); - % >> robot = LBR4pVrepRobot("LBR4p", vi) - obj.robot_name = robot_name; - obj.vrep_interface = vrep_interface; - - % From the second copy of the robot and onward, VREP appends a - % #number in the robot's name. We check here if the robot is - % called by the correct name and assign an index that will be - % used to correctly infer the robot's joint labels. - splited_name = strsplit(robot_name,'#'); - robot_label = splited_name{1}; - if ~strcmp(robot_label,'LBR4p') - error('Expected LBR4p') - end - if length(splited_name) > 1 - robot_index = splited_name{2}; - else - robot_index = ''; - end - - % Initialize joint names and base frame - obj.joint_names = {}; - for i=1:7 - current_joint_name = {robot_label,'_joint',int2str(i),robot_index}; - obj.joint_names{i} = strjoin(current_joint_name,''); - end - obj.base_frame_name = obj.joint_names{1}; - end - - function send_q_to_vrep(obj,q) - %% Sends the joint configurations to VREP - % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi) - % >> q = zeros(7,1); - % >> vrep_robot.send_q_to_vrep(q) - obj.vrep_interface.set_joint_positions(obj.joint_names,q) + function obj = LBR4pVrepRobot(robot_name, vrep_interface) + obj@DQ_SerialVrepRobot("LBR4p", 7, robot_name, vrep_interface); end - - function q = get_q_from_vrep(obj) - %% Obtains the joint configurations from VREP - % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi) - % >> q = vrep_robot.get_q_from_vrep(q) - q = obj.vrep_interface.get_joint_positions(obj.joint_names); - end - + function kin = kinematics(obj) %% Obtains the DQ_SerialManipulator instance that represents this LBR4p robot. - % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi) - % >> robot_kinematics = vrep_robot.kinematics() + % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi); + % >> robot_kinematics = vrep_robot.kinematics(); LBR4p_DH_theta=[0, 0, 0, 0, 0, 0, 0]; LBR4p_DH_d = [0.200, 0, 0.4, 0, 0.39, 0, 0]; @@ -119,8 +73,7 @@ function send_q_to_vrep(obj,q) kin.set_reference_frame(obj.vrep_interface.get_object_pose(obj.base_frame_name)); kin.set_base_frame(obj.vrep_interface.get_object_pose(obj.base_frame_name)); kin.set_effector(1+0.5*DQ.E*DQ.k*0.07); - end - + end end end diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index c63b408a..829eff6d 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -17,8 +17,8 @@ % will become "youBot#0", a third robot, "youBot#1", and so on. % % YouBotVrepRobot Methods: -% send_q_to_vrep - Sends the joint configurations to VREP -% get_q_from_vrep - Obtains the joint configurations from VREP +% set_configuration_space_positions - Sends the joint configurations to VREP +% get_configuration_space_positions - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot % (C) Copyright 2020 DQ Robotics Developers @@ -41,28 +41,18 @@ % DQ Robotics website: dqrobotics.sourceforge.net % % Contributors to this file: -% Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% 1. Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp +% - Responsible for the original implementation +% 2. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) +% - Updated for compatibility with the DQ_SerialVrepRobot class. -classdef YouBotVrepRobot < DQ_VrepRobot - - properties - joint_names; - base_frame_name; - end - +classdef YouBotVrepRobot < DQ_SerialVrepRobot properties (Constant) adjust = ((cos(pi/2) + DQ.i*sin(pi/2)) * (cos(pi/4) + DQ.j*sin(pi/4)))*(1+0.5*DQ.E*-0.1*DQ.k); end - - methods - function obj = YouBotVrepRobot(robot_name,vrep_interface) - %% Constructs an instance of a YouBotVrepRobot - % >> vi = VrepInterface() - % >> vi.connect('127.0.0.1',19997); - % >> robot = YouBotVrepRobot("youBot", vi) - obj.robot_name = robot_name; - obj.vrep_interface = vrep_interface; - + + methods (Access = protected) + function set_names(robot_name) % From the second copy of the robot and onward, VREP appends a % #number in the robot's name. We check here if the robot is % called by the correct name and assign an index that will be @@ -84,14 +74,20 @@ current_joint_name = {robot_label,'ArmJoint',int2str(i-1),robot_index}; obj.joint_names{i} = strjoin(current_joint_name,''); end - obj.base_frame_name = robot_name; + end + end + + methods + function obj = YouBotVrepRobot(robot_name, vrep_interface) + obj@DQ_SerialVrepRobot("youBot", 7, robot_name, vrep_interface); + obj.set_names(robot_name); end - function send_q_to_vrep(obj,q) + function set_configuration_space_positions(obj,q) %% Sends the joint configurations to VREP % >> vrep_robot = YouBotVrepRobot("youBot", vi) % >> q = zeros(8,1); - % >> vrep_robot.send_q_to_vrep(q) + % >> vrep_robot.set_configuration_space_positions(q) x = q(1); y = q(2); phi = q(3); @@ -104,10 +100,10 @@ function send_q_to_vrep(obj,q) obj.vrep_interface.set_object_pose(obj.base_frame_name, pose * obj.adjust'); end - function q = get_q_from_vrep(obj) + function q = get_configuration_space_positions(obj) %% Obtains the joint configurations from VREP % >> vrep_robot = YouBotVrepRobot("youBot", vi) - % >> q = vrep_robot.get_q_from_vrep(q) + % >> q = vrep_robot.get_configuration_space_positions(q) base_x = obj.vrep_interface.get_object_pose(obj.base_frame_name) * obj.adjust; base_t = vec3(translation(base_x)); base_phi = rotation_angle(rotation(base_x)); @@ -150,8 +146,7 @@ function send_q_to_vrep(obj,q) effector = 1 + E_*0.5*0.3*k_; kin.set_effector(effector); - end - + end end end From 7afe99fd5d76543c32c9f6d180494fbfa3607b9d Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Fri, 26 Jan 2024 16:05:19 +0000 Subject: [PATCH 03/32] Fixed a problem with joint naming on the classes 'YouBotVrepRobot' and 'DQ_SerialVrepRobot'. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- interfaces/vrep/robots/YouBotVrepRobot.m | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 5b339a4c..1853a748 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -92,7 +92,7 @@ % Initialize joint names, link names, and base frame name obj.joint_names = {}; for i=1:robot_dof - current_joint_name = {robot_label,'_joint',int2str(i),'#',robot_index}; + current_joint_name = {robot_label,'_joint',int2str(i),robot_index}; obj.joint_names{i} = strjoin(current_joint_name,''); end obj.base_frame_name = obj.joint_names{1}; diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 829eff6d..8b48272d 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -50,9 +50,12 @@ properties (Constant) adjust = ((cos(pi/2) + DQ.i*sin(pi/2)) * (cos(pi/4) + DQ.j*sin(pi/4)))*(1+0.5*DQ.E*-0.1*DQ.k); end - - methods (Access = protected) - function set_names(robot_name) + + methods + function obj = YouBotVrepRobot(robot_name, vrep_interface) + obj@DQ_SerialVrepRobot("youBot", 7, robot_name, vrep_interface); + + %% youBot don't follow the standard name convention on CoppeliaSim. Also, the use of 'set_names()', as is done in the C++ implementation, is not supported on a constructor in MATLAB % From the second copy of the robot and onward, VREP appends a % #number in the robot's name. We check here if the robot is % called by the correct name and assign an index that will be @@ -75,13 +78,6 @@ function set_names(robot_name) obj.joint_names{i} = strjoin(current_joint_name,''); end end - end - - methods - function obj = YouBotVrepRobot(robot_name, vrep_interface) - obj@DQ_SerialVrepRobot("youBot", 7, robot_name, vrep_interface); - obj.set_names(robot_name); - end function set_configuration_space_positions(obj,q) %% Sends the joint configurations to VREP From 0588c2a1c620742ebef8be262a5c31e944eedb0b Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Wed, 3 Apr 2024 14:50:19 +0100 Subject: [PATCH 04/32] [DQ_SerialVrepRobot] Improved documentation of DQ_SerialVrepRobot's methods on the class header. --- interfaces/vrep/DQ_SerialVrepRobot.m | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 1853a748..5cb20db3 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -3,24 +3,31 @@ % % Usage: % 1) Drag-and-drop a serial robot to a VREP scene. For instance, a -% "LBR4p" robot. +% "my_robot" robot. % 2) Run % >> vi = DQ_VrepInterface(); % >> vi.connect('127.0.0.1',19997); -% >> vrep_robot = LBR4pVrepRobot("LBR4p", vi); +% >> vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot", vi); % >> vi.start_simulation(); -% >> robot.get_q_from_vrep(); +% >> vrep_robot.get_q_from_vrep(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); % Note that the name of the robot should be EXACTLY the same as in % VREP. For instance, if you drag-and-drop a second robot, its name -% will become "LBR4p#0", a third robot, "LBR4p#1", and so on. +% will become "my_robot#0", a third robot, "my_robot#1", and so on. % % DQ_SerialVrepRobot Methods: -% send_q_to_vrep - Sends the joint configurations to VREP -% get_q_from_vrep - Obtains the joint configurations from VREP -% kinematics - Obtains the DQ_Kinematics implementation of this robot +% get_joint_names - Gets the joint names of the robot in the CoppeliaSim scene. +% set_configuration_space_positions - Sets the joint configurations to the robot in the CoppeliaSim scene. +% get_configuration_space_positions - Gets the joint configurations of the robot in the CoppeliaSim scene. +% set_target_configuration_space_positions - Sets the joint configurations to the robot in the CoppeliaSim scene as a target configuration for the joint controllers. +% get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. +% set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. +% set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. +% get_configuration_space_torques - Gets the joint torques of the robot in the CoppeliaSim scene. +% DQ_SerialVrepRobot Methods (Protected): +% update_manipulator_dynamic_parameters - Updates the dynamic parameters of the serial robot in the CoppeliaSim scene % (C) Copyright 2018-2023 DQ Robotics Developers % From 0fd50ac04e454399a7b2d588758ee59b7cb2e533 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 13:37:25 +0100 Subject: [PATCH 05/32] [DQ_SerialVrepRobot.m] Removed old comment refering to 'get_q_from_vrep()' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 5cb20db3..ecd0e359 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -9,7 +9,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot", vi); % >> vi.start_simulation(); -% >> vrep_robot.get_q_from_vrep(); +% >> vrep_robot.get_configuration_space_positions(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); From ef3869349e089c0eed2b1147cb312e60bb413e87 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 13:40:12 +0100 Subject: [PATCH 06/32] [DQ_SerialVrepRobot.m] Updated copyright's year. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index ecd0e359..bff1cfbd 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -29,7 +29,7 @@ % DQ_SerialVrepRobot Methods (Protected): % update_manipulator_dynamic_parameters - Updates the dynamic parameters of the serial robot in the CoppeliaSim scene -% (C) Copyright 2018-2023 DQ Robotics Developers +% (C) Copyright 2018-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From 217f7cd0eb805b6b3cb79756f271f0f5979775f8 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 13:47:00 +0100 Subject: [PATCH 07/32] [DQ_SerialVrepRobot.m] Added reference to C++ version. --- interfaces/vrep/DQ_SerialVrepRobot.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index bff1cfbd..d89cd8f5 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -50,7 +50,9 @@ % % Contributors to this file: % 1. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) -% - Responsible for the original implementation. +% - Responsible for the original implementation, based on the C++ version: +% - DQ_VrepInterface.h: https://github.com/dqrobotics/cpp-interface-vrep/blob/master/include/dqrobotics/interfaces/vrep/DQ_VrepInterface.h +% - DQ_SerialVrepRobot.cpp: https://github.com/dqrobotics/cpp-interface-vrep/blob/master/src/dqrobotics/interfaces/vrep/DQ_SerialVrepRobot.cpp classdef DQ_SerialVrepRobot < DQ_VrepRobot properties From aa73594843477cc3a31225e2eea32d659d33df2f Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 13:53:19 +0100 Subject: [PATCH 08/32] [DQ_SerialVrepRobot.m] Text fixes in the 'set' methods comments. --- interfaces/vrep/DQ_SerialVrepRobot.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index d89cd8f5..5d7f3706 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -19,9 +19,9 @@ % % DQ_SerialVrepRobot Methods: % get_joint_names - Gets the joint names of the robot in the CoppeliaSim scene. -% set_configuration_space_positions - Sets the joint configurations to the robot in the CoppeliaSim scene. +% set_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene. % get_configuration_space_positions - Gets the joint configurations of the robot in the CoppeliaSim scene. -% set_target_configuration_space_positions - Sets the joint configurations to the robot in the CoppeliaSim scene as a target configuration for the joint controllers. +% set_target_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. % set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. @@ -122,7 +122,7 @@ end function set_configuration_space_positions(obj, q) - % This method sets the joint configurations to the robot in the CoppeliaSim scene. + % This method sets the joint configurations of the robot in the CoppeliaSim scene. % Usage: % set_configuration_space_positions(q); % q: The joint configurations of the robot in the CoppeliaSim scene. @@ -155,7 +155,7 @@ function set_configuration_space_positions(obj, q) end function set_target_configuration_space_positions(obj, q_target) - % This method sets the joint configurations to the robot in the CoppeliaSim scene as a target configuration for the joint controllers. + % This method sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % Usage: % set_target_configuration_space_positions(q); % q_target: The target joint configurations of the robot in the CoppeliaSim scene. From 3c4d66e9f1c4d12fd2d9ec61fb1274f7c845fed6 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 14:08:38 +0100 Subject: [PATCH 09/32] [DQ_SerialVrepRobot.m] Updated specifications of the joint modes in the methods's comments. --- interfaces/vrep/DQ_SerialVrepRobot.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 5d7f3706..a5ce3681 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -135,7 +135,7 @@ function set_configuration_space_positions(obj, q) % vrep_robot.set_configuration_space_positions(q); % % Note that this calls "set_joint_positions" in the remoteAPI, meaning that it - % is only suitable for passive joints. + % is only suitable for joints in kinematic mode. obj.vrep_interface.set_joint_positions(obj.joint_names, q) end @@ -168,7 +168,7 @@ function set_target_configuration_space_positions(obj, q_target) % vrep_robot.set_target_configuration_space_positions(q_target); % % Note that this calls "set_joint_target_positions" in the remoteAPI, meaning that it - % is only suitable for active joints. + % is only suitable for joints in dynamic mode with position control. obj.vrep_interface.set_joint_target_positions(obj.joint_names, q_target) end @@ -201,7 +201,7 @@ function set_target_configuration_space_velocities(obj, v_target) % vrep_robot.set_target_configuration_space_velocities(v_target); % % Note that this calls "set_joint_target_velocities" in the remoteAPI, meaning that it - % is only suitable for active joints. + % is only suitable for joints in dynamic mode with velocity control. obj.vrep_interface.set_joint_target_velocities(obj.joint_names, v_target); end @@ -220,7 +220,7 @@ function set_configuration_space_torques(obj,tau) % vrep_robot.set_configuration_space_torques(tau); % % Note that this calls "set_joint_torques" in the remoteAPI, meaning that it - % is only suitable for active joints. + % is only suitable for joints in dynamic mode with force/torque control. obj.vrep_interface.set_joint_torques(obj.joint_names,tau) end From e0f1a983b8813bc7a153e034f163b04f0c997ff5 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 14:19:55 +0100 Subject: [PATCH 10/32] [DQ_SerialVrepRobot.m] Fixed copy and paste gore in the methods' usage comments. --- interfaces/vrep/DQ_SerialVrepRobot.m | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index a5ce3681..aa481702 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -134,7 +134,7 @@ function set_configuration_space_positions(obj, q) % q = zeros(7,1); % vrep_robot.set_configuration_space_positions(q); % - % Note that this calls "set_joint_positions" in the remoteAPI, meaning that it + % Note that this calls "set_joint_positions" in DQ_VrepInterface, meaning that it % is only suitable for joints in kinematic mode. obj.vrep_interface.set_joint_positions(obj.joint_names, q) @@ -157,7 +157,7 @@ function set_configuration_space_positions(obj, q) function set_target_configuration_space_positions(obj, q_target) % This method sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % Usage: - % set_target_configuration_space_positions(q); + % set_target_configuration_space_positions(q_target); % q_target: The target joint configurations of the robot in the CoppeliaSim scene. % % Example: @@ -167,7 +167,7 @@ function set_target_configuration_space_positions(obj, q_target) % q_target = zeros(7,1); % vrep_robot.set_target_configuration_space_positions(q_target); % - % Note that this calls "set_joint_target_positions" in the remoteAPI, meaning that it + % Note that this calls "set_joint_target_positions" in DQ_VrepInterface, meaning that it % is only suitable for joints in dynamic mode with position control. obj.vrep_interface.set_joint_target_positions(obj.joint_names, q_target) @@ -190,7 +190,7 @@ function set_target_configuration_space_positions(obj, q_target) function set_target_configuration_space_velocities(obj, v_target) % This method sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % Usage: - % set_target_configuration_space_positions(q); + % set_target_configuration_space_velocities(v_target); % v_target: The target joint velocities of the robot in the CoppeliaSim scene. % % Example: @@ -200,7 +200,7 @@ function set_target_configuration_space_velocities(obj, v_target) % v_target = zeros(7,1); % vrep_robot.set_target_configuration_space_velocities(v_target); % - % Note that this calls "set_joint_target_velocities" in the remoteAPI, meaning that it + % Note that this calls "set_joint_target_velocities" in DQ_VrepInterface, meaning that it % is only suitable for joints in dynamic mode with velocity control. obj.vrep_interface.set_joint_target_velocities(obj.joint_names, v_target); @@ -209,7 +209,7 @@ function set_target_configuration_space_velocities(obj, v_target) function set_configuration_space_torques(obj,tau) % This method sets the joint torques of the robot in the CoppeliaSim scene. % Usage: - % set_target_configuration_space_positions(q); + % set_configuration_space_torques(tau); % tau: The joint torques of the robot in the CoppeliaSim scene. % % Example: @@ -219,7 +219,7 @@ function set_configuration_space_torques(obj,tau) % tau = zeros(7,1); % vrep_robot.set_configuration_space_torques(tau); % - % Note that this calls "set_joint_torques" in the remoteAPI, meaning that it + % Note that this calls "set_joint_torques" in DQ_VrepInterface, meaning that it % is only suitable for joints in dynamic mode with force/torque control. obj.vrep_interface.set_joint_torques(obj.joint_names,tau) From a02ad1ba01016269077e04b6465c43d803049bd1 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 14:52:16 +0100 Subject: [PATCH 11/32] [DQ_VrepRobot.m] Added backwards compatibility for methods 'send_q_to_vrep()' and 'get_q_from_vrep()'. --- interfaces/vrep/DQ_VrepRobot.m | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/interfaces/vrep/DQ_VrepRobot.m b/interfaces/vrep/DQ_VrepRobot.m index 93bf81b6..8e1e9911 100644 --- a/interfaces/vrep/DQ_VrepRobot.m +++ b/interfaces/vrep/DQ_VrepRobot.m @@ -33,10 +33,10 @@ % 1. Murilo Marques Marinho - murilo@nml.t.u-tokyo.ac.jp % - Responsible for the original implementation. % 2. Frederico Fernandes Afonso Silva (frederico.silva@ieee.org) -% - Altered the names of the following methods to ensure -% compatibility with the C++ version of the class: -% - 'send_q_to_vrep' became 'set_configuration_space_positions' -% - 'get_q_from_vrep' became 'get_configuration_space_positions' +% - Deprecated the following methods to ensure compatibility with the +% C++ version of the class: +% - 'send_q_to_vrep' +% - 'get_q_from_vrep' % - Removed the following methods to ensure compatibility with the % C++ version of the class: % - 'kinematics' @@ -52,5 +52,21 @@ set_configuration_space_positions(obj,q); q = get_configuration_space_positions(obj); end + + methods + function send_q_to_vrep(obj, q) + % For backwards compatibility only. Do not use this method. + + warning('Deprecated. Use set_configuration_space_positions() instead.') + obj.set_configuration_space_positions(q) + end + + function q = get_q_from_vrep(obj) + % For backwards compatibility only. Do not use this method. + + warning('Deprecated. Use get_configuration_space_positions() instead.') + q = obj.get_configuration_space_positions(); + end + end end From 33147dec4043ccd2f855c737389c16affd7ee7c7 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 15:06:56 +0100 Subject: [PATCH 12/32] [LBR4pVrepRobot.m] Updated usage and methods sections. Also updated copyright's year. --- interfaces/vrep/robots/LBR4pVrepRobot.m | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/interfaces/vrep/robots/LBR4pVrepRobot.m b/interfaces/vrep/robots/LBR4pVrepRobot.m index d0b71d5b..9c235aef 100644 --- a/interfaces/vrep/robots/LBR4pVrepRobot.m +++ b/interfaces/vrep/robots/LBR4pVrepRobot.m @@ -8,7 +8,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi); % >> vi.start_simulation(); -% >> robot.get_q_from_vrep(); +% >> robot.get_configuration_space_positions(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); @@ -17,8 +17,6 @@ % will become "LBR4p#0", a third robot, "LBR4p#1", and so on. % % LBR4pVrepRobot Methods: -% send_q_to_vrep - Sends the joint configurations to VREP -% get_q_from_vrep - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot % (C) Copyright 2020 DQ Robotics Developers From ec0901f1c6537dde2499ad218ae281938d45b662 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 15:11:34 +0100 Subject: [PATCH 13/32] [LBR4pVrepRobot.m] Updated copyright's year. --- interfaces/vrep/robots/LBR4pVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/LBR4pVrepRobot.m b/interfaces/vrep/robots/LBR4pVrepRobot.m index 9c235aef..ca9884bd 100644 --- a/interfaces/vrep/robots/LBR4pVrepRobot.m +++ b/interfaces/vrep/robots/LBR4pVrepRobot.m @@ -19,7 +19,7 @@ % LBR4pVrepRobot Methods: % kinematics - Obtains the DQ_Kinematics implementation of this robot -% (C) Copyright 2020 DQ Robotics Developers +% (C) Copyright 2018-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From de2dc64ea617b2860a97ac7c5aa278c72396371f Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 15:13:35 +0100 Subject: [PATCH 14/32] [YouBotVrepRobot.m] Updated usage section and copyright's year. --- interfaces/vrep/robots/YouBotVrepRobot.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 8b48272d..063e1e80 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -8,7 +8,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = YouBotVrepRobot("youBot", vi); % >> vi.start_simulation(); -% >> robot.get_q_from_vrep(); +% >> robot.get_configuration_space_positions(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); @@ -21,7 +21,7 @@ % get_configuration_space_positions - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot -% (C) Copyright 2020 DQ Robotics Developers +% (C) Copyright 2018-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From 1a2b7670fb62934ff21c42f1d482674cba0cae1d Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 23 Jul 2024 15:43:12 +0100 Subject: [PATCH 15/32] [DQ_VrepRobot.m] Updated methods section and copyright's year. --- interfaces/vrep/DQ_VrepRobot.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/interfaces/vrep/DQ_VrepRobot.m b/interfaces/vrep/DQ_VrepRobot.m index 8e1e9911..f10e8841 100644 --- a/interfaces/vrep/DQ_VrepRobot.m +++ b/interfaces/vrep/DQ_VrepRobot.m @@ -4,13 +4,11 @@ % Usage: % Inherit from this class and implement the abstract methods. % -% DQ_VrepRobot Methods: -% send_q_to_vrep - Sends the joint configurations to VREP -% get_q_from_vrep - Obtains the joint configurations from VREP -% kinematics - Obtains the DQ_Kinematics implementation of this -% robot +% DQ_VrepRobot Methods (Abstract): +% set_configuration_space_positions - Sends the joint configurations to VREP +% get_configuration_space_positions - Obtains the joint configurations from VREP -% (C) Copyright 2020 DQ Robotics Developers +% (C) Copyright 2018-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From fa35f1bd334ede9c8bd6aadb1fcc0d504edc1786 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Mon, 29 Jul 2024 11:14:19 +0100 Subject: [PATCH 16/32] [YouBotVrepRobot.m] Small text fix in the constructor's comments. --- interfaces/vrep/robots/YouBotVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 063e1e80..6415bb4c 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -55,7 +55,7 @@ function obj = YouBotVrepRobot(robot_name, vrep_interface) obj@DQ_SerialVrepRobot("youBot", 7, robot_name, vrep_interface); - %% youBot don't follow the standard name convention on CoppeliaSim. Also, the use of 'set_names()', as is done in the C++ implementation, is not supported on a constructor in MATLAB + %% youBot does not follow the standard naming convention in CoppeliaSim. Also, the use of 'set_names()', as is done in the C++ implementation, is not supported on a constructor in MATLAB % From the second copy of the robot and onward, VREP appends a % #number in the robot's name. We check here if the robot is % called by the correct name and assign an index that will be From 7e30416726d694d6726ef796ab09c02ef689dd18 Mon Sep 17 00:00:00 2001 From: Frederico Afonso Date: Tue, 6 Aug 2024 16:16:24 +0100 Subject: [PATCH 17/32] [YouBotVrepRobot.m] Fixed small wrong number of joints and missing custom 'base_frame_name' in the constructor. --- interfaces/vrep/robots/YouBotVrepRobot.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 6415bb4c..80cdbef2 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -53,7 +53,7 @@ methods function obj = YouBotVrepRobot(robot_name, vrep_interface) - obj@DQ_SerialVrepRobot("youBot", 7, robot_name, vrep_interface); + obj@DQ_SerialVrepRobot("youBot", 5, robot_name, vrep_interface); %% youBot does not follow the standard naming convention in CoppeliaSim. Also, the use of 'set_names()', as is done in the C++ implementation, is not supported on a constructor in MATLAB % From the second copy of the robot and onward, VREP appends a @@ -77,6 +77,7 @@ current_joint_name = {robot_label,'ArmJoint',int2str(i-1),robot_index}; obj.joint_names{i} = strjoin(current_joint_name,''); end + obj.base_frame_name = robot_name; end function set_configuration_space_positions(obj,q) From 107be2c48fde8a3670b5689d865f4825ae9929dc Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 18:05:54 +0100 Subject: [PATCH 18/32] [DQ_SerialVrepRobot.m] Updated copyright date. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index aa481702..20a66b9f 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -29,7 +29,7 @@ % DQ_SerialVrepRobot Methods (Protected): % update_manipulator_dynamic_parameters - Updates the dynamic parameters of the serial robot in the CoppeliaSim scene -% (C) Copyright 2018-2024 DQ Robotics Developers +% (C) Copyright 2011-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From c934c9cca0aed4d1327b7c9c18b07047b580702a Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:07:23 +0100 Subject: [PATCH 19/32] [DQ_SerialVrepRobot.m] Updated usage comments. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 20a66b9f..9cdcdb63 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -9,7 +9,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot", vi); % >> vi.start_simulation(); -% >> vrep_robot.get_configuration_space_positions(); +% >> vrep_robot.get_configuration(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); From bee94d72953ad73df020f6e2cec14cbb5b9542f2 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:19:29 +0100 Subject: [PATCH 20/32] [DQ_SerialVrepRobot.m] Updated comment describing 'get_configuration' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 9cdcdb63..92c1408d 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -20,7 +20,7 @@ % DQ_SerialVrepRobot Methods: % get_joint_names - Gets the joint names of the robot in the CoppeliaSim scene. % set_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene. -% get_configuration_space_positions - Gets the joint configurations of the robot in the CoppeliaSim scene. +% get_configuration - Gets the joint configurations of the robot in the CoppeliaSim scene. % set_target_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. % set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. From c9ef19e7688698726c03b5f13f5deb7aa16abcdc Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:20:40 +0100 Subject: [PATCH 21/32] [DQ_SerialVrepRobot.m] Updated comment describing 'set_configuration' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 92c1408d..3317dcf9 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -19,7 +19,7 @@ % % DQ_SerialVrepRobot Methods: % get_joint_names - Gets the joint names of the robot in the CoppeliaSim scene. -% set_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene. +% set_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene. % get_configuration - Gets the joint configurations of the robot in the CoppeliaSim scene. % set_target_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. From 5099cb7990f77938d21c512801e68df89673e48f Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:21:51 +0100 Subject: [PATCH 22/32] [DQ_SerialVrepRobot.m] Updated comment describing 'set_target_configuration' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 3317dcf9..4e616f98 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -21,7 +21,7 @@ % get_joint_names - Gets the joint names of the robot in the CoppeliaSim scene. % set_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene. % get_configuration - Gets the joint configurations of the robot in the CoppeliaSim scene. -% set_target_configuration_space_positions - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. +% set_target_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. % set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. From c3356aeb51058ab0faf8ce7a60f92f8d4c711c6a Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:23:51 +0100 Subject: [PATCH 23/32] [DQ_SerialVrepRobot.m] Updated comment describing 'get_configuration_velocities' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 4e616f98..22b1f1ec 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -22,7 +22,7 @@ % set_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene. % get_configuration - Gets the joint configurations of the robot in the CoppeliaSim scene. % set_target_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. -% get_configuration_space_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. +% get_configuration_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. % set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. % get_configuration_space_torques - Gets the joint torques of the robot in the CoppeliaSim scene. From 6ac8182b6c2686c95e05a1ad3b10b2878b3dfbaa Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:24:54 +0100 Subject: [PATCH 24/32] [DQ_SerialVrepRobot.m] Updated comment describing 'set_target_configuration_velocities' method. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 22b1f1ec..6ad3d823 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -23,7 +23,7 @@ % get_configuration - Gets the joint configurations of the robot in the CoppeliaSim scene. % set_target_configuration - Sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % get_configuration_velocities - Gets the joint velocities of the robot in the CoppeliaSim scene. -% set_target_configuration_space_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. +% set_target_configuration_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. % get_configuration_space_torques - Gets the joint torques of the robot in the CoppeliaSim scene. % DQ_SerialVrepRobot Methods (Protected): From be6a446285aac69379c796b2ba5da5b32f9d0a28 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:30:32 +0100 Subject: [PATCH 25/32] [DQ_SerialVrepRobot.m] Removed the comment describing a method not implemented in this pull request. --- interfaces/vrep/DQ_SerialVrepRobot.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index 6ad3d823..ccf8b075 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -26,8 +26,6 @@ % set_target_configuration_velocities - Sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % set_configuration_space_torques - Sets the joint torques of the robot in the CoppeliaSim scene. % get_configuration_space_torques - Gets the joint torques of the robot in the CoppeliaSim scene. -% DQ_SerialVrepRobot Methods (Protected): -% update_manipulator_dynamic_parameters - Updates the dynamic parameters of the serial robot in the CoppeliaSim scene % (C) Copyright 2011-2024 DQ Robotics Developers % From 8a60f03ab59b96016931954e1f8b119ee9bf1843 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:35:59 +0100 Subject: [PATCH 26/32] [DQ_SerialVrepRobot.m] Renamed methods' names as requested by Bruno. --- interfaces/vrep/DQ_SerialVrepRobot.m | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/interfaces/vrep/DQ_SerialVrepRobot.m b/interfaces/vrep/DQ_SerialVrepRobot.m index ccf8b075..df363a09 100644 --- a/interfaces/vrep/DQ_SerialVrepRobot.m +++ b/interfaces/vrep/DQ_SerialVrepRobot.m @@ -119,10 +119,10 @@ joint_names = obj.joint_names; end - function set_configuration_space_positions(obj, q) + function set_configuration(obj, q) % This method sets the joint configurations of the robot in the CoppeliaSim scene. % Usage: - % set_configuration_space_positions(q); + % set_configuration(q); % q: The joint configurations of the robot in the CoppeliaSim scene. % % Example: @@ -130,7 +130,7 @@ function set_configuration_space_positions(obj, q) % vi.connect('127.0.0.1',19997); % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); % q = zeros(7,1); - % vrep_robot.set_configuration_space_positions(q); + % vrep_robot.set_configuration(q); % % Note that this calls "set_joint_positions" in DQ_VrepInterface, meaning that it % is only suitable for joints in kinematic mode. @@ -138,24 +138,24 @@ function set_configuration_space_positions(obj, q) obj.vrep_interface.set_joint_positions(obj.joint_names, q) end - function q = get_configuration_space_positions(obj) + function q = get_configuration(obj) % This method gets the joint configurations of the robot in the CoppeliaSim scene. % Usage: - % get_configuration_space_positions; + % get_configuration; % % Example: % vi = DQ_VrepInterface(); % vi.connect('127.0.0.1',19997); % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); - % q = vrep_robot.get_configuration_space_positions; + % q = vrep_robot.get_configuration; q = obj.vrep_interface.get_joint_positions(obj.joint_names); end - function set_target_configuration_space_positions(obj, q_target) + function set_target_configuration(obj, q_target) % This method sets the joint configurations of the robot in the CoppeliaSim scene as a target configuration for the joint controllers. % Usage: - % set_target_configuration_space_positions(q_target); + % set_target_configuration(q_target); % q_target: The target joint configurations of the robot in the CoppeliaSim scene. % % Example: @@ -163,7 +163,7 @@ function set_target_configuration_space_positions(obj, q_target) % vi.connect('127.0.0.1',19997); % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); % q_target = zeros(7,1); - % vrep_robot.set_target_configuration_space_positions(q_target); + % vrep_robot.set_target_configuration(q_target); % % Note that this calls "set_joint_target_positions" in DQ_VrepInterface, meaning that it % is only suitable for joints in dynamic mode with position control. @@ -171,24 +171,24 @@ function set_target_configuration_space_positions(obj, q_target) obj.vrep_interface.set_joint_target_positions(obj.joint_names, q_target) end - function qd = get_configuration_space_velocities(obj) + function qd = get_configuration_velocities(obj) % This method gets the joint velocities of the robot in the CoppeliaSim scene. % Usage: - % get_configuration_space_velocities; + % get_configuration_velocities; % % Example: % vi = DQ_VrepInterface(); % vi.connect('127.0.0.1',19997); % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); - % qd = vrep_robot.get_configuration_space_velocities; + % qd = vrep_robot.get_configuration_velocities; qd = obj.vrep_interface.get_joint_velocities(obj.joint_names); end - function set_target_configuration_space_velocities(obj, v_target) + function set_target_configuration_velocities(obj, v_target) % This method sets the joint velocities of the robot in the CoppeliaSim scene as a target velocity for the joint controllers. % Usage: - % set_target_configuration_space_velocities(v_target); + % set_target_configuration_velocities(v_target); % v_target: The target joint velocities of the robot in the CoppeliaSim scene. % % Example: @@ -196,7 +196,7 @@ function set_target_configuration_space_velocities(obj, v_target) % vi.connect('127.0.0.1',19997); % vrep_robot = DQ_SerialVrepRobot("my_robot", 7, "my_robot#1", vi); % v_target = zeros(7,1); - % vrep_robot.set_target_configuration_space_velocities(v_target); + % vrep_robot.set_target_configuration_velocities(v_target); % % Note that this calls "set_joint_target_velocities" in DQ_VrepInterface, meaning that it % is only suitable for joints in dynamic mode with velocity control. From 0cf51a6b35c6a49f577d5aa3494ed10e7aa136f0 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:40:58 +0100 Subject: [PATCH 27/32] [DQ_VrepRobot.m] Renamed methods' as requested by Bruno. --- interfaces/vrep/DQ_VrepRobot.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interfaces/vrep/DQ_VrepRobot.m b/interfaces/vrep/DQ_VrepRobot.m index f10e8841..7c59b4a8 100644 --- a/interfaces/vrep/DQ_VrepRobot.m +++ b/interfaces/vrep/DQ_VrepRobot.m @@ -5,8 +5,8 @@ % Inherit from this class and implement the abstract methods. % % DQ_VrepRobot Methods (Abstract): -% set_configuration_space_positions - Sends the joint configurations to VREP -% get_configuration_space_positions - Obtains the joint configurations from VREP +% set_configuration - Sends the joint configurations to VREP +% get_configuration - Obtains the joint configurations from VREP % (C) Copyright 2018-2024 DQ Robotics Developers % @@ -47,23 +47,23 @@ end methods (Abstract) - set_configuration_space_positions(obj,q); - q = get_configuration_space_positions(obj); + set_configuration(obj,q); + q = get_configuration(obj); end methods function send_q_to_vrep(obj, q) % For backwards compatibility only. Do not use this method. - warning('Deprecated. Use set_configuration_space_positions() instead.') - obj.set_configuration_space_positions(q) + warning('Deprecated. Use set_configuration() instead.') + obj.set_configuration(q) end function q = get_q_from_vrep(obj) % For backwards compatibility only. Do not use this method. - warning('Deprecated. Use get_configuration_space_positions() instead.') - q = obj.get_configuration_space_positions(); + warning('Deprecated. Use get_configuration() instead.') + q = obj.get_configuration(); end end end From 17f45069b45f793c0e0a2408367c81a2723c54e8 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:43:21 +0100 Subject: [PATCH 28/32] [LBR4pVrepRobot.m] Updated copyright. --- interfaces/vrep/robots/LBR4pVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/LBR4pVrepRobot.m b/interfaces/vrep/robots/LBR4pVrepRobot.m index ca9884bd..7321fc9a 100644 --- a/interfaces/vrep/robots/LBR4pVrepRobot.m +++ b/interfaces/vrep/robots/LBR4pVrepRobot.m @@ -19,7 +19,7 @@ % LBR4pVrepRobot Methods: % kinematics - Obtains the DQ_Kinematics implementation of this robot -% (C) Copyright 2018-2024 DQ Robotics Developers +% (C) Copyright 2011-2024 DQ Robotics Developers % % This file is part of DQ Robotics. % From ecab5b5d6d0eacbe3a37633a3e48c4f877974075 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:44:55 +0100 Subject: [PATCH 29/32] [LBR4pVrepRobot.m] Updated usage comments. --- interfaces/vrep/robots/LBR4pVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/LBR4pVrepRobot.m b/interfaces/vrep/robots/LBR4pVrepRobot.m index 7321fc9a..b020dfad 100644 --- a/interfaces/vrep/robots/LBR4pVrepRobot.m +++ b/interfaces/vrep/robots/LBR4pVrepRobot.m @@ -8,7 +8,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = LBR4pVrepRobot("LBR4p", vi); % >> vi.start_simulation(); -% >> robot.get_configuration_space_positions(); +% >> robot.get_configuration(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); From 05873d58d643581beeb2140712c1e05b56cdc928 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:47:44 +0100 Subject: [PATCH 30/32] [YouBotVrepRobot.m] Renamed 'get_configuration_space_positions' to 'get_configuration'. --- interfaces/vrep/robots/YouBotVrepRobot.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 80cdbef2..86b41b93 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -8,7 +8,7 @@ % >> vi.connect('127.0.0.1',19997); % >> vrep_robot = YouBotVrepRobot("youBot", vi); % >> vi.start_simulation(); -% >> robot.get_configuration_space_positions(); +% >> robot.get_configuration(); % >> pause(1); % >> vi.stop_simulation(); % >> vi.disconnect(); @@ -18,7 +18,7 @@ % % YouBotVrepRobot Methods: % set_configuration_space_positions - Sends the joint configurations to VREP -% get_configuration_space_positions - Obtains the joint configurations from VREP +% get_configuration - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot % (C) Copyright 2018-2024 DQ Robotics Developers @@ -97,10 +97,10 @@ function set_configuration_space_positions(obj,q) obj.vrep_interface.set_object_pose(obj.base_frame_name, pose * obj.adjust'); end - function q = get_configuration_space_positions(obj) + function q = get_configuration(obj) %% Obtains the joint configurations from VREP % >> vrep_robot = YouBotVrepRobot("youBot", vi) - % >> q = vrep_robot.get_configuration_space_positions(q) + % >> q = vrep_robot.get_configuration(q) base_x = obj.vrep_interface.get_object_pose(obj.base_frame_name) * obj.adjust; base_t = vec3(translation(base_x)); base_phi = rotation_angle(rotation(base_x)); From 8b53f6ddc4ffc68d5f36e70b509d0ff269dd3330 Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:49:15 +0100 Subject: [PATCH 31/32] [YouBotVrepRobot.m] Renamed 'set_configuration_space_positions' to 'set_configuration'. --- interfaces/vrep/robots/YouBotVrepRobot.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 86b41b93..8795b96c 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -17,7 +17,7 @@ % will become "youBot#0", a third robot, "youBot#1", and so on. % % YouBotVrepRobot Methods: -% set_configuration_space_positions - Sends the joint configurations to VREP +% set_configuration - Sends the joint configurations to VREP % get_configuration - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot @@ -80,11 +80,11 @@ obj.base_frame_name = robot_name; end - function set_configuration_space_positions(obj,q) + function set_configuration(obj,q) %% Sends the joint configurations to VREP % >> vrep_robot = YouBotVrepRobot("youBot", vi) % >> q = zeros(8,1); - % >> vrep_robot.set_configuration_space_positions(q) + % >> vrep_robot.set_configuration(q) x = q(1); y = q(2); phi = q(3); From badb11aa7d5893182e154ae0c97da61740393e5b Mon Sep 17 00:00:00 2001 From: Frederico Fernandes Afonso Silva Date: Thu, 15 Aug 2024 22:50:30 +0100 Subject: [PATCH 32/32] [YouBotVrepRobot.m] Updated copyright. --- interfaces/vrep/robots/YouBotVrepRobot.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/vrep/robots/YouBotVrepRobot.m b/interfaces/vrep/robots/YouBotVrepRobot.m index 8795b96c..7ad10e34 100644 --- a/interfaces/vrep/robots/YouBotVrepRobot.m +++ b/interfaces/vrep/robots/YouBotVrepRobot.m @@ -21,7 +21,7 @@ % get_configuration - Obtains the joint configurations from VREP % kinematics - Obtains the DQ_Kinematics implementation of this robot -% (C) Copyright 2018-2024 DQ Robotics Developers +% (C) Copyright 2011-2024 DQ Robotics Developers % % This file is part of DQ Robotics. %