226class VISP_EXPORT vpRobotFranka :
public vpRobot
232 vpRobotFranka(
const vpRobotFranka &robot);
240 franka::Robot *m_handler;
241 franka::Gripper *m_gripper;
242 franka::Model *m_model;
243 double m_positioningVelocity;
246 std::thread m_velControlThread;
247 std::atomic_bool m_velControlThreadIsRunning;
248 std::atomic_bool m_velControlThreadStopAsked;
249 std::array<double, 7> m_dq_des;
253 std::thread m_ftControlThread;
254 std::atomic_bool m_ftControlThreadIsRunning;
255 std::atomic_bool m_ftControlThreadStopAsked;
256 std::array<double, 7> m_tau_J_des;
259 std::array<double, 7> m_q_min;
260 std::array<double, 7> m_q_max;
261 std::array<double, 7> m_dq_max;
262 std::array<double, 7> m_ddq_max;
264 franka::RobotState m_robot_state;
268 std::string m_log_folder;
269 std::string m_franka_address;
282 franka::RealtimeConfig realtime_config = franka::RealtimeConfig::kEnforce);
283 vpRobotFranka(
const std::string &franka_address, vpRealtimeConfig realtime_config);
287 void connect(
const std::string &franka_address,
288 franka::RealtimeConfig realtime_config = franka::RealtimeConfig::kEnforce);
289 void connect(
const std::string &franka_address, vpRealtimeConfig realtime_config);
305 franka::RobotState getRobotInternalState();
346 int gripperGrasp(
double grasping_width,
double force = 60.);
347 int gripperGrasp(
double grasping_width,
double speed,
double force);
348 void gripperHoming();
349 int gripperMove(
double width);
351 void gripperRelease();
353 void move(
const std::string &filename,
double velocity_percentage = 10.);
355 bool readPosFile(
const std::string &filename,
vpColVector &q);
356 bool savePosFile(
const std::string &filename,
const vpColVector &q);
360 const bool &activate_pi_controller =
false);
361 void setLogFolder(
const std::string &folder);
363 void setPositioningVelocity(
double velocity);
virtual void setPosition(const vpRobot::vpControlFrameType frame, const vpColVector &q)=0
Set a displacement (frame has to be specified) in position control.