#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";
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]) == "--help" || std::string(argv[i]) == "-h") {
std::cout << argv[0] << " [--ip 192.168.1.1] [--help] [-h]"
<< "\n";
return EXIT_SUCCESS;
}
}
try {
std::cout << "-- Start test 1/4" << std::endl;
for (unsigned i = 0; i < 10; i++) {
std::cout <<
"Joint position: " << q.
t() << std::endl;
}
std::cout <<
"fMe pose vector: " << fPe.
t() << 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;
}
try {
std::cout << "-- Start test 2/4" << std::endl;
franka::Robot *handler = robot.getHandler();
std::array<double, 16> pose = handler->readOnce().O_T_EE;
for (unsigned int i = 0; i < 4; i++) {
for (unsigned int j = 0; j < 4; j++) {
oMee[i][j] = pose[j * 4 + i];
}
}
std::cout << "oMee: \n" << oMee << std::endl;
pose = handler->readOnce().F_T_EE;
for (unsigned int i = 0; i < 4; i++) {
for (unsigned int j = 0; j < 4; j++) {
fMee[i][j] = pose[j * 4 + i];
}
}
std::cout << "fMee: \n" << fMee << std::endl;
pose = handler->readOnce().EE_T_K;
for (unsigned int i = 0; i < 4; i++) {
for (unsigned int j = 0; j < 4; j++) {
eeMk[i][j] = pose[j * 4 + i];
}
}
std::cout << "eeMk: \n" << eeMk << 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;
}
try {
std::cout << "-- Start test 3/4" << std::endl;
robot.getMass(mass);
std::cout << "Mass matrix:\n" << mass << std::endl;
robot.getGravity(gravity);
std::cout <<
"Gravity vector: " << gravity.
t() << std::endl;
robot.getCoriolis(coriolis);
std::cout <<
"Coriolis vector: " << coriolis.
t() << 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;
}
try {
std::cout << "-- Start test 4/4" << std::endl;
std::cout <<
"Joint position: " << q.
t() << std::endl;
robot.get_fJe(fJe);
std::cout << "Jacobian fJe:\n" << fJe << std::endl;
robot.get_fJe(q, fJe);
std::cout << "Jacobian fJe:\n" << fJe << std::endl;
robot.get_eJe(eJe);
std::cout << "Jacobian eJe:\n" << eJe << std::endl;
robot.get_eJe(q, eJe);
std::cout << "Jacobian eJe:\n" << eJe << 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.
Implementation of a matrix and operations on matrices.
Implementation of a pose vector and operations on poses.
void connect(const std::string &franka_address, franka::RealtimeConfig realtime_config=franka::RealtimeConfig::kEnforce)
VISP_EXPORT int wait(double t0, double t)