camera tilt and pan, auto reset camera position
This commit is contained in:
parent
85e30d3d43
commit
00499a4f1c
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
KEYBOARD /dev/input/event2
|
KEYBOARD /dev/input/event2
|
||||||
JOYSTICK /dev/input/js0
|
JOYSTICK /dev/input/js0
|
||||||
FRAME_US 100000
|
FRAME_US 100000
|
||||||
SERVER 10.8.212.200:32000
|
SERVER 10.8.245.47:32000
|
||||||
TIMEOUT 250
|
TIMEOUT 250
|
||||||
CLINBR 0
|
CLINBR 0
|
||||||
|
|
57
main.c
57
main.c
|
@ -86,6 +86,8 @@ void *keyboard_thread_fcn(void * arg)
|
||||||
args->frame = data2frame(event2data(&args->hl, ev));
|
args->frame = data2frame(event2data(&args->hl, ev));
|
||||||
args->outtty.motor_r = (2*0b01111 - args->hl.velocity - args->hl.direction)*40;
|
args->outtty.motor_r = (2*0b01111 - args->hl.velocity - args->hl.direction)*40;
|
||||||
args->outtty.motor_l = (- args->hl.velocity + args->hl.direction)*40;
|
args->outtty.motor_l = (- args->hl.velocity + args->hl.direction)*40;
|
||||||
|
|
||||||
|
/*
|
||||||
args->outtty.servo_pan += args->hl.pan_left - args->hl.pan_right;
|
args->outtty.servo_pan += args->hl.pan_left - args->hl.pan_right;
|
||||||
if(args->outtty.servo_pan>50) args->outtty.servo_pan = 50;
|
if(args->outtty.servo_pan>50) args->outtty.servo_pan = 50;
|
||||||
if(args->outtty.servo_pan<-50) args->outtty.servo_pan = -50;
|
if(args->outtty.servo_pan<-50) args->outtty.servo_pan = -50;
|
||||||
|
@ -96,6 +98,9 @@ void *keyboard_thread_fcn(void * arg)
|
||||||
args->outtty.servo_pan = 0;
|
args->outtty.servo_pan = 0;
|
||||||
args->outtty.servo_tilt= 0;
|
args->outtty.servo_tilt= 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// quit
|
// quit
|
||||||
if(16==ev.code && 1==ev.value) break;
|
if(16==ev.code && 1==ev.value) break;
|
||||||
|
@ -148,7 +153,7 @@ void *joystick_thread_fcn(void * arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(JS_EVENT_AXIS == ev.type){
|
if(JS_EVENT_AXIS == ev.type){
|
||||||
//printf("%d %d %d\n", ev.type, ev.value, ev.number);
|
printf("%d %d %d\n", ev.type, ev.value, ev.number);
|
||||||
if(0==ev.number){
|
if(0==ev.number){
|
||||||
jsdata.x = ev.value;
|
jsdata.x = ev.value;
|
||||||
}
|
}
|
||||||
|
@ -158,6 +163,38 @@ void *joystick_thread_fcn(void * arg)
|
||||||
jsdata.y = +32767;
|
jsdata.y = +32767;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(2==ev.number){
|
||||||
|
outttyloc.servo_tilt = 0;
|
||||||
|
if(-30000 > ev.value){
|
||||||
|
outttyloc.servo_tilt = -1;
|
||||||
|
args->hl.tilt_down = 1;
|
||||||
|
args->hl.tilt_up = 0;
|
||||||
|
}else{
|
||||||
|
args->hl.tilt_down = 0;
|
||||||
|
if(+5000>ev.value){
|
||||||
|
args->hl.tilt_up = 1;
|
||||||
|
outttyloc.servo_tilt = +1;
|
||||||
|
}else{
|
||||||
|
args->hl.tilt_up = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(3==ev.number){
|
||||||
|
outttyloc.servo_pan = 0;
|
||||||
|
if(-30000 > ev.value){
|
||||||
|
args->hl.pan_left = 1;
|
||||||
|
args->hl.pan_right = 0;
|
||||||
|
outttyloc.servo_pan = -1;
|
||||||
|
}else{
|
||||||
|
args->hl.pan_left = 0;
|
||||||
|
if(+5000>ev.value){
|
||||||
|
args->hl.pan_right = 1;
|
||||||
|
outttyloc.servo_pan = +1;
|
||||||
|
}else{
|
||||||
|
args->hl.pan_right = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
outttyloc.motor_r = jsdata.y/30 - jsdata.x/30;
|
outttyloc.motor_r = jsdata.y/30 - jsdata.x/30;
|
||||||
outttyloc.motor_l = jsdata.y/30 + jsdata.x/30 ;
|
outttyloc.motor_l = jsdata.y/30 + jsdata.x/30 ;
|
||||||
|
@ -167,6 +204,7 @@ void *joystick_thread_fcn(void * arg)
|
||||||
if(-1022>outttyloc.motor_l) outttyloc.motor_l = -1023;
|
if(-1022>outttyloc.motor_l) outttyloc.motor_l = -1023;
|
||||||
|
|
||||||
args->outtty = outttyloc;
|
args->outtty = outttyloc;
|
||||||
|
args->hl.ignation = (1 & (jsdata.buttons >> 2));
|
||||||
|
|
||||||
printf("%6d %6d %4x\n", jsdata.x, jsdata.y, jsdata.buttons);
|
printf("%6d %6d %4x\n", jsdata.x, jsdata.y, jsdata.buttons);
|
||||||
}
|
}
|
||||||
|
@ -338,6 +376,8 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
memset(refl_thread_args.timestamps, 0, 256*sizeof(uint64_t));
|
memset(refl_thread_args.timestamps, 0, 256*sizeof(uint64_t));
|
||||||
frame_nbr = 0;
|
frame_nbr = 0;
|
||||||
|
senddata.outtty.servo_pan = 0;
|
||||||
|
senddata.outtty.servo_tilt = 0;
|
||||||
while(1){
|
while(1){
|
||||||
usleep(conf.frame_us);
|
usleep(conf.frame_us);
|
||||||
|
|
||||||
|
@ -358,14 +398,25 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
senddata.outtty.motor_l = keyboard_thread_args.outtty.motor_l + joystick_thread_args.outtty.motor_l;
|
senddata.outtty.motor_l = keyboard_thread_args.outtty.motor_l + joystick_thread_args.outtty.motor_l;
|
||||||
senddata.outtty.motor_r = keyboard_thread_args.outtty.motor_r + joystick_thread_args.outtty.motor_r;
|
senddata.outtty.motor_r = keyboard_thread_args.outtty.motor_r + joystick_thread_args.outtty.motor_r;
|
||||||
senddata.outtty.servo_pan = keyboard_thread_args.outtty.servo_pan + joystick_thread_args.outtty.servo_pan;
|
senddata.outtty.servo_pan += keyboard_thread_args.hl.pan_right - keyboard_thread_args.hl.pan_left + joystick_thread_args.hl.pan_right - joystick_thread_args.hl.pan_left;
|
||||||
senddata.outtty.servo_tilt = keyboard_thread_args.outtty.servo_tilt + joystick_thread_args.outtty.servo_tilt;
|
senddata.outtty.servo_tilt += keyboard_thread_args.hl.tilt_up - keyboard_thread_args.hl.tilt_down + joystick_thread_args.hl.tilt_up - joystick_thread_args.hl.tilt_down;
|
||||||
|
|
||||||
|
if(keyboard_thread_args.hl.ignation | joystick_thread_args.hl.ignation){
|
||||||
|
senddata.outtty.servo_pan = 0;
|
||||||
|
senddata.outtty.servo_tilt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(1022<senddata.outtty.motor_l) senddata.outtty.motor_l = 1023;
|
if(1022<senddata.outtty.motor_l) senddata.outtty.motor_l = 1023;
|
||||||
if(-1022>senddata.outtty.motor_l) senddata.outtty.motor_l = -1023;
|
if(-1022>senddata.outtty.motor_l) senddata.outtty.motor_l = -1023;
|
||||||
if(1022<senddata.outtty.motor_r) senddata.outtty.motor_r = 1023;
|
if(1022<senddata.outtty.motor_r) senddata.outtty.motor_r = 1023;
|
||||||
if(-1022>senddata.outtty.motor_r) senddata.outtty.motor_r = -1023;
|
if(-1022>senddata.outtty.motor_r) senddata.outtty.motor_r = -1023;
|
||||||
|
|
||||||
|
if(senddata.outtty.servo_pan>50) senddata.outtty.servo_pan = 50;
|
||||||
|
if(senddata.outtty.servo_pan<-50) senddata.outtty.servo_pan = -50;
|
||||||
|
if(senddata.outtty.servo_tilt>50) senddata.outtty.servo_tilt = 50;
|
||||||
|
if(senddata.outtty.servo_tilt<-50) senddata.outtty.servo_tilt = -50;
|
||||||
|
|
||||||
|
|
||||||
n_send = sendto(sockfd, &senddata, sizeof(senddata), 0, (struct sockaddr *)&servaddr, sizeof(servaddr));
|
n_send = sendto(sockfd, &senddata, sizeof(senddata), 0, (struct sockaddr *)&servaddr, sizeof(servaddr));
|
||||||
|
|
||||||
printf("SEND FRAME -- FRM_NBR: %5d, BYTES send: %3d, SEND_FRM: %#x, CLINBR: %d, CLISEL: %d, SERVOFF: %d\n", frame_nbr, n_send, frame, senddata.clinbr, senddata.clisel, senddata.servoff);
|
printf("SEND FRAME -- FRM_NBR: %5d, BYTES send: %3d, SEND_FRM: %#x, CLINBR: %d, CLISEL: %d, SERVOFF: %d\n", frame_nbr, n_send, frame, senddata.clinbr, senddata.clisel, senddata.servoff);
|
||||||
|
|
BIN
obj/Debug/main.o
BIN
obj/Debug/main.o
Binary file not shown.
Loading…
Reference in New Issue