Example that shows how to control Reflex Takktile 2 hand from Right Hand Robotics.
#include <string>
#include <iostream>
#include <visp3/robot/vpReflexTakktile2.h>
int main(int argc, char *argv[])
{
std::string opt_network_interface = "eth0";
std::string opt_finger_file_name = "yaml/finger_calibrate.yaml";
std::string opt_tactile_file_name = "yaml/tactile_calibrate.yaml";
std::string opt_motor_file_name = "yaml/motor_constants.yaml";
for (int i = 0; i < argc; i++) {
if (std::string(argv[i]) == "--network")
opt_network_interface = std::string(argv[i + 1]);
else if (std::string(argv[i]) == "--finger")
opt_finger_file_name = std::string(argv[i + 1]);
else if (std::string(argv[i]) == "--tactile")
opt_tactile_file_name = atoi(argv[i + 1]);
else if (std::string(argv[i]) == "--motor")
opt_motor_file_name = atoi(argv[i + 1]);
else if (std::string(argv[i]) == "--help" || std::string(argv[i]) == "-h") {
std::cout << "\nUsage: " << argv[0]
<< " [--network <interface name>] "
" [--finger <calib file name>]"
" [--tactile <calib file name>]"
" [--motor <constants file name>]"
" [--help] [-h]\n"
<< std::endl;
std::cout << "Options:" << std::endl;
std::cout << " --network <interface name>" << std::endl;
std::cout << "\tNetwork interface name. Default: " << opt_network_interface << std::endl << std::endl;
std::cout << " --finger <calib file name>" << std::endl;
std::cout << "\tFinger calibration file name. Default: " << opt_finger_file_name << std::endl << std::endl;
std::cout << " --tactile <calib file name>" << std::endl;
std::cout << "\tTactile calibration file name. Default: " << opt_tactile_file_name << std::endl << std::endl;
std::cout << " --motor <constants file name>" << std::endl;
std::cout << "\tMotor constants file name. Default: " << opt_motor_file_name << std::endl << std::endl;
std::cout << " --help, -h" << std::endl;
std::cout << "\tPrint this helper." << std::endl;
return 0;
}
}
#ifdef VISP_HAVE_TAKKTILE2
std::cout << "Calibration complete" << std::endl;
std::cout << "Moving fingers..." << std::endl;
std::vector<vpColVector> finger_positions = {
{0.0, 0.0, 0.0, 0.0}, {0.5, 0.5, 0.5, 0.0}, {1.0, 1.0, 1.0, 0.0}, {0.5, 0.5, 0.5, 0.0}, {0.0, 0.0, 0.0, 0.0}};
for (size_t i = 0; i < finger_positions.size(); i++) {
}
std::cout << "Finger movement complete" << std::endl;
std::cout << "Moving preshape joint..." << std::endl;
std::vector<vpColVector> preshape_positions = {
{0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.5}, {0.0, 0.0, 0.0, 1.5}, {0.0, 0.0, 0.0, 0.5}, {0.0, 0.0, 0.0, 0.0}};
for (size_t i = 0; i < preshape_positions.size(); i++) {
}
std::cout << "Preshape movement complete" << std::endl;
std::cout << "Changing to faster speed..." << std::endl;
for (size_t i = 0; i < finger_positions.size(); i++) {
}
std::cout << "Changing to slower speed..." << std::endl;
for (size_t i = 0; i < finger_positions.size(); i++) {
}
std::cout << "Done changing speeds" << std::endl;
std::cout << "Starting blended control..." << std::endl;
for (int i = 0; i < 5; i++) {
}
std::cout << "Blended control complete" << std::endl;
std::cout << "Starting tactile feedback..." << std::endl
<< "All fingers will stop moving when any one makes contact" << std::endl;
std::cout << "Now each finger will only stop moving once it makes contact" << std::endl;
std::vector<int> thresholds = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30};
std::cout << "All torques disabled" << std::endl;
std::cout << "The end" << std::endl;
#else
std::cout << "ViSP is not built to support Right Hand Reflex Takktile2 hand" << std::endl;
#endif
return EXIT_SUCCESS;
}