diff --git a/src/teleop_franka_node.cpp b/src/teleop_franka_node.cpp deleted file mode 100644 index 1f63143..0000000 --- a/src/teleop_franka_node.cpp +++ /dev/null @@ -1,235 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include -//#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "franka_ros_interface.h" -#include - - -std::string config_vfi_path = "/home/moonshot/Documents/git/franka_emika/real_franka_developments/real_franka_developments/cfg/vfi_constraints.yaml"; - - - -int main(int argc, char **argv) -{ - ros::init(argc, argv, "teleop_franka_node"); - auto nodehandle = ros::NodeHandle(); - sas::RobotKinematicsProvider pose1_provider(nodehandle, "/arm1_kinematics"); - - //auto franka1_ros = FrankaRosInterface(nodehandle, 50, "/franka_1"); - sas::RobotDriverInterface franka1_ros(nodehandle, "/franka_1"); - //########################################################################################## - - DQ_VrepInterface vi; - vi.connect("10.198.113.159", 19997,100,10); - std::cout << "Starting V-REP simulation..." << std::endl; - vi.start_simulation(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - - auto franka_sim = FrankaEmikaPandaVrepRobot("Franka", std::make_shared(vi)); - auto robot = franka_sim.kinematics(); - DQ xoffset = (1 + E_*0.5*0.21*k_)*(cos((M_PI/4)/2)-k_*sin((M_PI/4)/2)); - robot.set_effector(xoffset); - - - - //########################################################################################### - auto manager = RobotConstraintsManager(std::make_shared(vi), - (std::static_pointer_cast(std::make_shared(robot))), - (std::static_pointer_cast(std::make_shared(franka_sim))), - config_vfi_path, - RobotConstraintsManager::ORDER::FIRST_ORDER); - //########################################################################################## - //#######------------------------Controller------------------------------------------####### - DQ_QPOASESSolver solver; - DQ_ClassicQPController controller - (std::static_pointer_cast(std::make_shared(robot)), - std::static_pointer_cast(std::make_shared(solver))); - controller.set_gain(20.0); - controller.set_damping(0.01); - controller.set_control_objective(DQ_robotics::Translation); //DistanceToPlane Translation - controller.set_stability_threshold(0.0001); - //########################################################################################## - - //######################################################################################### - DQ xd; - DQ x; - MatrixXd A; - VectorXd b; - VectorXd u; - VectorXd q_u = VectorXd::Zero(7); - VectorXd q; - - VectorXd q_dot_initial = VectorXd::Zero(7); - VectorXd q_dot = VectorXd::Zero(7); - - - - while (ros::ok()) { - if (franka1_ros.is_enabled()) - { - q = franka1_ros.get_joint_positions(); - break; - - } - ros::spinOnce(); - } - - - q_u = q; - - franka_sim.set_target_configuration_space_positions(q); - vi.set_object_pose("xd", robot.fkm(q)); - - /* - DQ_QPOASESSolver solver2; - MatrixXd H = MatrixXd::Identity(7, 7); - VectorXd f ; - VectorXd qvrep; - MatrixXd A_; - VectorXd b_; - - for (int i=0;i<3000;i++) - { - qvrep = franka_sim.get_configuration_space_positions(); - f = 2*0.1*(qvrep-q); - auto u_ = solver2.solve_quadratic_program(H, f, A_, b_, A_, b_); - franka_sim.set_target_configuration_space_velocities(u_); - std::cout<<"initialiazing..."<compute_new_configuration_velocities(u, T); - //franka_sim.set_target_configuration_space_velocities(new_u); - //franka1_ros.send_target_joint_positions(new_u); - - //auto new_u = trajectory_generator_sptr_->compute_new_configuration_velocities(u, T); - //franka1_ros.send_target_joint_positions(q); - franka1_ros.send_target_joint_velocities(u); - - - - - - } - - ros::spinOnce(); - } - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - std::cout << "Stopping V-REP simulation..." << std::endl; - vi.stop_simulation(); - vi.disconnect(); - - return 0; - } - catch (const std::exception& e) { - vi.stop_simulation(); - vi.disconnect(); - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - std::cout << e.what() << std::endl; - return -1; - } -}