From c04c20542b6e5c55c834eb18640e1e927aa8948b Mon Sep 17 00:00:00 2001 From: Juancho Date: Tue, 27 Jun 2023 14:45:57 +0900 Subject: [PATCH] Updated the headers and the cmake. --- CMakeLists.txt | 8 +++- include/robot_interface_franka.h | 34 +++++++++++++++++ include/sas_robot_driver_franka.h | 51 +++++++++++++++++++++----- qt/configuration_window/main.cpp | 31 ++++++++++++++++ qt/configuration_window/mainwindow.cpp | 31 ++++++++++++++++ src/robot_interface_franka.cpp | 47 +++++++++++++++++++++--- src/sas_robot_driver_franka.cpp | 41 +++++++++++++++++++-- src/sas_robot_driver_franka_node.cpp | 34 ++++++++++++++++- 8 files changed, 254 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 79910df..0f1787e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,13 +61,19 @@ target_link_libraries(QuadraticProgramMotionGenerator dqrobotics ConstraintsManager) +add_library(CustomMotionGeneration src/custom_motion_generation.cpp) +target_link_libraries(CustomMotionGeneration + qpOASES + dqrobotics + ConstraintsManager) add_library(robot_interface_franka src/robot_interface_franka.cpp) target_link_libraries(robot_interface_franka Franka::Franka dqrobotics MotionGenerator - QuadraticProgramMotionGenerator) + QuadraticProgramMotionGenerator + CustomMotionGeneration) diff --git a/include/robot_interface_franka.h b/include/robot_interface_franka.h index ccd9a77..2bfda17 100644 --- a/include/robot_interface_franka.h +++ b/include/robot_interface_franka.h @@ -1,3 +1,35 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Original implementation +# +# ################################################################ +*/ + + #pragma once #include @@ -13,6 +45,7 @@ #include "quadratic_program_motion_generator.h" #include #include +#include "custom_motion_generation.h" using namespace DQ_robotics; using namespace Eigen; @@ -63,6 +96,7 @@ private: std::shared_ptr robot_sptr_; std::shared_ptr gripper_sptr_; std::unique_ptr trajectory_generator_sptr_; + std::unique_ptr custom_generator_sptr_; void _setDefaultRobotBehavior(); //bool hand_enabled_ = false; diff --git a/include/sas_robot_driver_franka.h b/include/sas_robot_driver_franka.h index e4662b2..7e9a302 100644 --- a/include/sas_robot_driver_franka.h +++ b/include/sas_robot_driver_franka.h @@ -1,6 +1,37 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Adapted from sas_robot_driver_denso.cpp +# (https://github.com/SmartArmStack/sas_robot_driver_denso/blob/master/src/sas_robot_driver_denso.cpp) +# +# ################################################################ +*/ + + #pragma once - - #include #include #include @@ -38,16 +69,16 @@ private: //Joint positions VectorXd joint_positions_; //VectorXd joint_velocities_; - VectorXd end_effector_pose_; - std::vector joint_positions_buffer_; - std::vector end_effector_pose_euler_buffer_; - std::vector end_effector_pose_homogenous_transformation_buffer_; + //VectorXd end_effector_pose_; + //std::vector joint_positions_buffer_; + //std::vector end_effector_pose_euler_buffer_; + //std::vector end_effector_pose_homogenous_transformation_buffer_; public: - const static int SLAVE_MODE_JOINT_CONTROL; - const static int SLAVE_MODE_END_EFFECTOR_CONTROL; + //const static int SLAVE_MODE_JOINT_CONTROL; + //const static int SLAVE_MODE_END_EFFECTOR_CONTROL; RobotDriverFranka(const RobotDriverFranka&)=delete; RobotDriverFranka()=delete; @@ -70,8 +101,8 @@ public: void initialize() override; void deinitialize() override; - bool set_end_effector_pose_dq(const DQ& pose); - DQ get_end_effector_pose_dq(); + //bool set_end_effector_pose_dq(const DQ& pose); + //DQ get_end_effector_pose_dq(); }; } diff --git a/qt/configuration_window/main.cpp b/qt/configuration_window/main.cpp index d49f7d9..fa5346d 100644 --- a/qt/configuration_window/main.cpp +++ b/qt/configuration_window/main.cpp @@ -1,3 +1,34 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Original implementation. +# +# ################################################################ +*/ + #include "mainwindow.h" #include diff --git a/qt/configuration_window/mainwindow.cpp b/qt/configuration_window/mainwindow.cpp index d126298..6e1bd2d 100644 --- a/qt/configuration_window/mainwindow.cpp +++ b/qt/configuration_window/mainwindow.cpp @@ -1,3 +1,34 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Original implementation. +# +# ################################################################ +*/ + #include "mainwindow.h" #include "./ui_mainwindow.h" #include diff --git a/src/robot_interface_franka.cpp b/src/robot_interface_franka.cpp index 830b4b6..0e285e6 100644 --- a/src/robot_interface_franka.cpp +++ b/src/robot_interface_franka.cpp @@ -1,3 +1,35 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Original implementation +# +# ################################################################ +*/ + + #include "robot_interface_franka.h" @@ -364,6 +396,8 @@ void RobotInterfaceFranka::_start_joint_position_control_mode() VectorXd q_dot = VectorXd::Zero(7); _update_status_message("Starting joint position control mode EXPERIMENTAL",verbose_); + + /* trajectory_generator_sptr_ = std::make_unique(1.0, q, q_dot, q); @@ -372,12 +406,13 @@ void RobotInterfaceFranka::_start_joint_position_control_mode() VectorXd K2 = (VectorXd(7)<set_diagonal_gains(K1, K2); + */ + + custom_generator_sptr_ = std::make_unique(0.9, q, q_dot, q); + custom_generator_sptr_->set_proportional_gain(1.0); finish_motion_ = false; - int retry_counter = 0; - int TIMEOUT_IN_MILISECONDS = 5000; - try { robot_sptr_->control( //------------------------------------------------------------ [&initial_position, &time, this](const franka::RobotState& robot_state, @@ -385,7 +420,7 @@ void RobotInterfaceFranka::_start_joint_position_control_mode() time += period.toSec(); double T = period.toSec(); - auto new_q = trajectory_generator_sptr_->compute_new_configuration(desired_joint_positions_, T); + auto new_q = custom_generator_sptr_->compute_new_configuration(desired_joint_positions_, T); if (time == 0.0) { @@ -420,8 +455,8 @@ void RobotInterfaceFranka::_start_joint_position_control_mode() std::cout << e.what() << std::endl; } - std::this_thread::sleep_for(std::chrono::milliseconds(TIMEOUT_IN_MILISECONDS)); - retry_counter++; + + } diff --git a/src/sas_robot_driver_franka.cpp b/src/sas_robot_driver_franka.cpp index 9fb7118..620871a 100644 --- a/src/sas_robot_driver_franka.cpp +++ b/src/sas_robot_driver_franka.cpp @@ -1,3 +1,36 @@ +/* +# Copyright (c) 2023 Juan Jose Quiroz Omana +# +# This file is part of sas_robot_driver_franka. +# +# sas_robot_driver_franka 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. +# +# sas_robot_driver_franka 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 sas_robot_driver. If not, see . +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Adapted from sas_robot_driver_denso.cpp +# (https://github.com/SmartArmStack/sas_robot_driver_denso/blob/master/src/sas_robot_driver_denso.cpp) +# +# ################################################################ +*/ + + #include "sas_robot_driver_franka.h" #include "sas_clock/sas_clock.h" #include @@ -11,10 +44,10 @@ namespace sas joint_positions_.resize(7); joint_velocities_.resize(7); joint_forces_.resize(7); - end_effector_pose_.resize(7); - joint_positions_buffer_.resize(8,0); - end_effector_pose_euler_buffer_.resize(7,0); - end_effector_pose_homogenous_transformation_buffer_.resize(10,0); + //end_effector_pose_.resize(7); + //joint_positions_buffer_.resize(8,0); + //end_effector_pose_euler_buffer_.resize(7,0); + //end_effector_pose_homogenous_transformation_buffer_.resize(10,0); std::cout<. +# +# ################################################################ +# +# Author: Juan Jose Quiroz Omana, email: juanjqogm@gmail.com +# +# ################################################################ +# +# Contributors: +# 1. Juan Jose Quiroz Omana (juanjqogm@gmail.com) +# - Adapted from sas_robot_driver_denso_node.cpp +# (https://github.com/SmartArmStack/sas_robot_driver_denso/blob/master/src/sas_robot_driver_denso_node.cpp) +# +# ################################################################ +*/ + #include