int main (int argc, char **argv){
  char *host = HOSTIP;
  int port = DEFAULTPORT;

  if (argc >= 2) { host = argv[1]; }
  if (argc >= 3) { port = atoi(argv[2]); }

  init_vision(host, port);
  //init_facedetect();

  while(1){
    //proc_vision();
    proc_jpg_vision();
    //detect_and_draw();

    /**** 処理結果(euslispのクライアントが受け取る情報)
          を取得して標準エラーに出力 ****/
    char result[8024];
    int n;
    write(client_sock, "result\n", 64);
    n = recv(client_sock, result, 8024, 0);
    result[n] =  '\0';
    fprintf(stderr, "result is %s", result);
    /**** 処理結果を取得(ここまで) ****/
    //if( (cvWaitKey(30) & 255) == 27 ) {
    //break;
    //}
  }

  return 0;
}
Exemple #2
0
void robot_class::TestInit() {
    std::printf("test init\n");
    stop_vision();
    driveTrain->SetSafetyEnabled(false);
    driveTrain->TankDrive(0.0f,0.0f);
    LEDring.Set(Relay::kForward);
    init_vision();
    std::printf("good\n");
    std::printf("engine: %p\n",engine);
    engine->startContinuous();
}
Exemple #3
0
void robot_class::AutonomousInit() {
    stop_vision();
    driveTrain->SetSafetyEnabled(false);
    unsigned int choice = 0;
    if(autoSwitch.Get())//determining pot angles
        choice = 1;
    std::printf("switch: %d\n",autoSwitch.Get());
    AUTO_ANGLE = AUTO_ANGLES[choice];/*choices are at the top*/
    shooter -> setAngle(AUTO_ANGLE); /*and deterined by autoSwitch*/
    shooter -> wheelForward = true;
    shooter -> setSpeed(AUTO_SPEED);
    init_vision();
}
Exemple #4
0
/* #########################################################################
Main
######################################################################### */
int main(int argc, char *argv[])
{
	struct sockaddr_in addr;
	int on = 1, disable_control_port = 0;
	pthread_t client, cam, cntrl, mind, uart_control;
	char *dev = "/dev/video0";
	int fps = 5, daemon = 0;


	cd.width = 640;
	cd.height = 480;

	cdata = &cd;
	cd.control_port = htons(8081);
	cd.stream_port = htons(8080);
	while (1) {
		int option_index = 0, c = 0;
		static struct option long_options[] = \
    {
			{"h", no_argument, 0, 0},
			{"help", no_argument, 0, 0},
			{"d", required_argument, 0, 0},
			{"device", required_argument, 0, 0},
			{"r", required_argument, 0, 0},
			{"resolution", required_argument, 0, 0},
			{"f", required_argument, 0, 0},
			{"fps", required_argument, 0, 0},
			{"p", required_argument, 0, 0},
			{"port", required_argument, 0, 0},
			{"v", no_argument, 0, 0},
			{"version", no_argument, 0, 0},
			{"b", no_argument, 0, 0},
			{"background", no_argument, 0, 0},
			{"c", required_argument, 0, 0},
			{"control_port", required_argument, 0, 0},
			{"disable_control", no_argument, 0, 0},
			{"C", no_argument, 0, 0},
			{"calibrate", no_argument, 0, 0},
			{0, 0, 0, 0}
		};

		c = getopt_long_only(argc, argv, "", long_options, &option_index);

		/* no more options to parse */
		if (c == -1) break;

		/* unrecognized option */
		if (c == '?') {
			help(argv[0]);
			return 0;
		}

		switch (option_index) {
			/* h, help */
		case 0:
		case 1:
			help(argv[0]);
			return 0;
			break;

			/* d, device */
		case 2:
		case 3:
			dev = strdup(optarg);
			break;

			/* r, resolution */
		case 4:
		case 5:
			if (strcmp("960x720", optarg) == 0) {
				cd.width = 960;
				cd.height = 720;
			} else if (strcmp("640x480", optarg) == 0) {
				cd.width = 640;
				cd.height = 480;
			} else if (strcmp("320x240", optarg) == 0) {
				cd.width = 320;
				cd.height = 240;
			} else if (strcmp("160x120", optarg) == 0) {
				cd.width = 160;
				cd.height = 120;
			} else {
				fprintf(stderr, "ignoring unsupported resolution\n");
			}
			break;

			/* f, fps */
		case 6:
		case 7:
			fps = atoi(optarg);
			break;

			/* p, port */
		case 8:
		case 9:
			cd.stream_port = htons(atoi(optarg));
			break;

			/* v, version */
		case 10:
		case 11:
			printf("UVC Streamer Version: %s\n" \
               "Compilation Date....: %s\n" \
               "Compilation Time....: %s\n", SOURCE_VERSION, __DATE__, __TIME__);
			return 0;
			break;

			/* v, version */
		case 12:
		case 13:
			daemon = 1;
			break;

			/* c, control_port */
		case 14:
		case 15:
			cd.control_port = htons(atoi(optarg));
			break;
			/* disable_control */
		case 16:
			disable_control_port = 1;
			break;
		case 17:
		case 18:
			disable_control_port = 1;
			break;
		default:
			help(argv[0]);
			return 0;
		}
	}

	/* ignore SIGPIPE (send if transmitting to closed sockets) */
	signal(SIGPIPE, SIG_IGN);
	if (signal(SIGINT, signal_handler) == SIG_ERR) {
		fprintf(stderr, "could not register signal handler\n");
		exit(1);
	}

	/* fork to the background */
	if (daemon) {
		daemon_mode();
	}

	/* allocate webcam datastructure */
	cd.videoIn = (struct vdIn *) calloc(1, sizeof(struct vdIn));

	fprintf(stderr, "Using V4L2 device.....: %s\n", dev);
	fprintf(stderr, "Resolution............: %i x %i\n", cdata->width, cdata->height);
	fprintf(stderr, "frames per second.....: %i\n", fps);
	fprintf(stderr, "TCP port..............: %i\n", ntohs(cd.stream_port));
	if (disable_control_port == 1) {
		fprintf(stderr, "motor control server..: disabled\n");
	} else {
		fprintf(stderr, "motor control TCP port: %i\n", ntohs(cd.control_port));
	}


	/* open video device and prepare data structure */
	cd.video_dev = init_videoIn(cd.videoIn, dev, cd.width, cd.height, fps, V4L2_PIX_FMT_MJPEG, 1);
	if (cd.video_dev < 0) {
		fprintf(stderr, "init_VideoIn failed\n");
		exit(1);
	}

	/* open socket for server */
	sd = socket(PF_INET, SOCK_STREAM, 0);
	if (sd < 0) {
		fprintf(stderr, "socket failed\n");
		exit(1);
	}

	/* ignore "socket already in use" errors */
	if (setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) {
		perror("setsockopt(SO_REUSEADDR) failed");
		exit(1);
	}

	/* configure server address to listen to all local IPs */
	memset(&addr, 0, sizeof(addr));
	addr.sin_family = AF_INET;
	addr.sin_port = cd.stream_port;
	addr.sin_addr.s_addr = htonl(INADDR_ANY);
	if (bind(sd, (struct sockaddr*) &addr, sizeof(addr)) != 0) {
		fprintf(stderr, "bind failed\n");
		perror("Bind");
		exit(1);
	}

	/* start listening on socket */
	if (listen(sd, 10) != 0) {
		fprintf(stderr, "listen failed\n");
		exit(1);
	}

	/* start to read the camera, push picture buffers into global buffer */
	cd.videoIn->tmpbuffer = (unsigned char *) calloc(1, (size_t) cd.videoIn->framesizeIn);
	g_buf = (unsigned char *) calloc(1, (size_t) cd.videoIn->framesizeIn);

	vision_control_init(); //must be first to call;

	pthread_create(&cam, 0, cam_thread, NULL);
	pthread_detach(cam);

	pthread_create(&mind, 0, mind_thread, NULL);
	pthread_detach(mind);

	init_vision();
	init_controller();

	pthread_create(&uart_control, 0, &uart_control_read, NULL);
	pthread_detach(uart_control);

	/* start control server */
	if (disable_control_port == 0) {
		pthread_create(&cntrl, NULL, &uvcstream_control, cdata);
		pthread_detach(cntrl);
	}

	/* create a child for every client that connects */
	while (1) {
		int *pfd = (int *) calloc(1, sizeof(int));
		*pfd = accept(sd, 0, 0);
		pthread_create(&client, NULL, &client_thread, pfd);
		pthread_detach(client);

	}

	return 0;
}