38 #ifndef WIN32_LEAN_AND_MEAN
39 #define WIN32_LEAN_AND_MEAN 1
50 #include <sys/types.h>
58 #include <MultiSense/MultiSenseChannel.hh>
59 #include <MultiSense/MultiSenseTypes.hh>
65 void usage(
const char *programNameP)
68 "USAGE: %s -f <rectified_focal_length> [<options>]\n",
70 fprintf(stderr,
"Where <options> are:\n");
71 fprintf(stderr,
"\t-a <ip_address> : ip address (default=10.66.171.21)\n");
72 fprintf(stderr,
"\t-s : set the rectified focal length (default is query)\n");
83 std::string ipAddress =
"10.66.171.21";
84 double rectifiedFocalLength = -1.0;
86 bool hasAuxCamera =
false;
87 double currentFocalLength = 0.0;
97 while(-1 != (c =
getopt(argc, argvPP,
"a:f:s")))
99 case 'a': ipAddress = std::string(
optarg);
break;
100 case 'f': rectifiedFocalLength = atof(
optarg);
break;
101 case 's': set =
true;
break;
102 default:
usage(*argvPP);
break;
109 if (rectifiedFocalLength < 200.0) {
110 fprintf(stderr,
"Invalid rectified focal length\n");
118 if (NULL == channelP) {
119 fprintf(stderr,
"Failed to establish communications with \"%s\"\n",
133 fprintf(stderr,
"Failed to query device info: %s\n",
147 fprintf(stderr,
"failed to query image calibration: %s\n",
152 currentFocalLength = calibration.
left.
P[0][0];
153 fprintf(stdout,
"updating focal length from %f to %f\n",
154 currentFocalLength, rectifiedFocalLength);
158 tx = calibration.
right.
P[0][3] / calibration.
right.
P[0][0];
160 calibration.
left.
P[0][0] =
static_cast<float> (rectifiedFocalLength);
161 calibration.
left.
P[1][1] =
static_cast<float> (rectifiedFocalLength);
162 calibration.
right.
P[0][0] =
static_cast<float> (rectifiedFocalLength);
163 calibration.
right.
P[1][1] =
static_cast<float> (rectifiedFocalLength);
164 calibration.
right.
P[0][3] =
static_cast<float> (rectifiedFocalLength * tx);
168 auxTx = calibration.
aux.
P[0][3] / calibration.
aux.
P[0][0];
169 auxTy = calibration.
aux.
P[1][3] / calibration.
aux.
P[1][1];
171 calibration.
aux.
P[0][0] =
static_cast<float> (rectifiedFocalLength);
172 calibration.
aux.
P[1][1] =
static_cast<float> (rectifiedFocalLength);
173 calibration.
aux.
P[0][3] =
static_cast<float> (rectifiedFocalLength * auxTx);
174 calibration.
aux.
P[1][3] =
static_cast<float> (rectifiedFocalLength * auxTy);
179 fprintf(stderr,
"failed to set image calibration: %s\n",
184 fprintf(stdout,
"Rectified focal length successfully updated to %f\n",
185 rectifiedFocalLength);
188 fprintf(stdout,
"Please specify -s to update the rectified focal length to %f\n",
189 rectifiedFocalLength);