#include <iostream>
#include <visp3/core/vpConfig.h>
#if defined(VISP_HAVE_FRANKA)
#include <visp3/robot/vpRobotFranka.h>
int main(int argc, char **argv)
{
#ifdef ENABLE_VISP_NAMESPACE
#endif
std::string robot_ip = "192.168.1.1";
std::string log_folder;
for (int i = 1; i < argc; i++) {
if (std::string(argv[i]) == "--ip" && i + 1 < argc) {
robot_ip = std::string(argv[i + 1]);
}
else if (std::string(argv[i]) == "--log_folder" && i + 1 < argc) {
log_folder = std::string(argv[i + 1]);
}
else if (std::string(argv[i]) == "--help" || std::string(argv[i]) == "-h") {
std::cout << argv[0] << " [--ip 192.168.1.1] [--log_folder <folder>] [--help] [-h]"
<< "\n";
return EXIT_SUCCESS;
}
}
try {
robot.setLogFolder(log_folder);
std::cout << "WARNING: This example will move the robot! "
<< "Please make sure to have the user stop button at hand!" << std::endl
<< "Press Enter to continue..." << std::endl;
std::cin.ignore();
q[3] = -M_PI_2;
q[5] = M_PI_2;
q[6] = M_PI_4;
std::cout <<
"Move to joint position: " << q.
t() << std::endl;
robot.setPositioningVelocity(10.);
double delta_t = 4.0;
vc[2] = 0.04;
robot.set_eMc(eMc);
std::cout <<
"Apply cartesian vel in a loop for " << delta_t <<
" sec : " << vc.
t() << std::endl;
do {
vc[2] = -0.02;
std::cout <<
"Apply cartesian vel in a loop for " << delta_t <<
" sec : " << vc.
t() << std::endl;
do {
std::cout << "Ask to stop the robot " << std::endl;
}
std::cout << "ViSP exception: " << e.what() << std::endl;
return EXIT_FAILURE;
}
catch (const franka::NetworkException &e) {
std::cout << "Franka network exception: " << e.what() << std::endl;
std::cout << "Check if you are connected to the Franka robot"
<< " or if you specified the right IP using --ip command"
<< " line option set by default to 192.168.1.1. " << std::endl;
return EXIT_FAILURE;
}
catch (const std::exception &e) {
std::cout << "Franka exception: " << e.what() << std::endl;
return EXIT_FAILURE;
}
std::cout << "The end" << std::endl;
return EXIT_SUCCESS;
}
#else
int main() { std::cout << "ViSP is not build with libfranka..." << std::endl; }
#endif
Implementation of column vector and the associated operations.
error that can be emitted by ViSP classes.
Implementation of an homogeneous matrix and operations on such kind of matrices.
void connect(const std::string &franka_address, franka::RealtimeConfig realtime_config=franka::RealtimeConfig::kEnforce)
@ STATE_VELOCITY_CONTROL
Initialize the velocity controller.
@ STATE_STOP
Stops robot motion especially in velocity and acceleration control.
VISP_EXPORT int wait(double t0, double t)
VISP_EXPORT double measureTimeSecond()