43 #include <visp3/robot/vpRobotFranka.h>
45 #if defined(VISP_HAVE_FRANKA)
57 int main(
int argc,
char **argv)
59 std::string opt_robot_ip =
"192.168.1.1";
60 double opt_grasping_width = 0.;
61 GripperState_t opt_gripper_state = Gripper_None;
63 for (
int i = 1; i < argc; i++) {
64 if (std::string(argv[i]) ==
"--ip" && i + 1 < argc) {
65 opt_robot_ip = std::string(argv[i + 1]);
66 }
else if (std::string(argv[i]) ==
"--home") {
67 opt_gripper_state = Gripper_Home;
68 }
else if (std::string(argv[i]) ==
"--open") {
69 opt_gripper_state = Gripper_Open;
70 }
else if (std::string(argv[i]) ==
"--close") {
71 opt_gripper_state = Gripper_Close;
72 }
else if (std::string(argv[i]) ==
"--grasp" && i + 1 < argc) {
73 opt_gripper_state = Gripper_Grasp;
74 opt_grasping_width = std::atof(argv[i + 1]);
75 }
else if (std::string(argv[i]) ==
"--test" && i + 1 < argc) {
76 opt_gripper_state = Gripper_Test;
77 opt_grasping_width = std::atof(argv[i + 1]);
78 }
else if (std::string(argv[i]) ==
"--help" || std::string(argv[i]) ==
"-h") {
79 std::cout <<
"Control Panda gripper." << std::endl;
80 std::cout << argv[0] <<
" [--ip <default " << opt_robot_ip
81 <<
">] [--home] [--open] [--close] [--grasp <object width in meter>] [--release] [--test <object width "
82 "in meter>] [--help] [-h]\n"
84 std::cout <<
"Example to grasp a 4cm width object by first opening the gripper, then grasping the object :\n"
85 << argv[0] <<
" --ip 192.168.100.1 --open\n"
86 << argv[0] <<
" --ip 192.168.100.1 --grasp 0.04\n"
93 if (opt_gripper_state == Gripper_None) {
94 std::cout <<
"Specify which action you want to achieve. Run \"" << argv[0]
95 <<
" --help\" to see how to use this binary." << std::endl;
97 }
else if ((opt_gripper_state == Gripper_Grasp || opt_gripper_state == Gripper_Test) && opt_grasping_width <= 0) {
98 std::cout <<
"Object with in meter should be > 0. Run \"" << argv[0] <<
" --help\" to see how to use this binary."
106 robot.connect(opt_robot_ip);
108 if (opt_gripper_state == Gripper_Home) {
109 std::cout <<
"Gripper homing..." << std::endl;
110 robot.gripperHoming();
111 }
else if (opt_gripper_state == Gripper_Close) {
112 std::cout <<
"Gripper closing..." << std::endl;
113 robot.gripperClose();
114 }
else if (opt_gripper_state == Gripper_Open) {
115 std::cout <<
"Gripper opening..." << std::endl;
117 }
else if (opt_gripper_state == Gripper_Grasp) {
118 std::cout <<
"Gripper grasp " << opt_grasping_width <<
"m object width..." << std::endl;
119 robot.gripperGrasp(opt_grasping_width);
120 }
else if (opt_gripper_state == Gripper_Release) {
121 std::cout <<
"Gripper release object..." << std::endl;
122 robot.gripperRelease();
123 }
else if (opt_gripper_state == Gripper_Test) {
124 std::cout <<
"Test gripper performing the following actions:" << std::endl;
125 std::cout <<
"- Gripper homing..." << std::endl;
126 robot.gripperHoming();
128 std::cout <<
"- Gripper closing..." << std::endl;
129 robot.gripperClose();
131 std::cout <<
"- Gripper open 5cm..." << std::endl;
132 robot.gripperMove(0.05);
134 std::cout <<
"- Gripper opening..." << std::endl;
137 std::cout <<
"- Gripper grasp " << opt_grasping_width <<
"m object width..." << std::endl;
138 robot.gripperGrasp(opt_grasping_width);
140 std::cout <<
"- Gripper release object..." << std::endl;
141 robot.gripperRelease();
143 std::cout <<
"The end!" << std::endl;
145 std::cout <<
"ViSP exception: " << e.
what() << std::endl;
147 }
catch (
const franka::NetworkException &e) {
148 std::cout <<
"Franka network exception: " << e.what() << std::endl;
149 std::cout <<
"Check if you are connected to the Franka robot"
150 <<
" or if you specified the right IP using --ip command line option set by default to 192.168.1.1. "
153 }
catch (
const std::exception &e) {
154 std::cout <<
"Franka exception: " << e.what() << std::endl;
163 #if !defined(VISP_HAVE_FRANKA)
164 std::cout <<
"Install libfranka 3rd party, configure and build again ViSP to use this example..." << std::endl;
error that can be emitted by ViSP classes.
const char * what() const
VISP_EXPORT void sleepMs(double t)