亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? orc_arm_lib.c

?? 卡內基梅隆大學(CMU)開發的移動機器人控制開發軟件包。可對多種機器人進行控制
?? C
?? 第 1 頁 / 共 3 頁
字號:
    right_delta_tick = right_delta_tick - 2*SHRT_MAX;  if (right_delta_tick < -SHRT_MAX/2)    right_delta_tick = right_delta_tick + 2*SHRT_MAX;  left_last_tick = left_tick;  right_last_tick = right_tick;  right_delta_tick = -right_delta_tick;  left_displacement = delta_tick_to_metres(left_delta_tick);  right_displacement = delta_tick_to_metres(right_delta_tick);  // velezj: For RssII Arm  shoulder_pwm = buffer[ORC_SHOULDER_MOTOR_ACTUAL_PWM];  elbow_pwm = buffer[ORC_ELBOW_MOTOR_ACTUAL_PWM];  shoulder_dir = ((buffer[ORC_SHOULDER_MOTOR_DIR] & 0x0f) ) & 0x03;  elbow_dir = ((buffer[ORC_ELBOW_MOTOR_DIR] & 0x0f) ) & 0x03;  if (shoulder_dir == ORC_BACKWARD)    shoulder_pwm = -shoulder_pwm;  if (elbow_dir == ORC_BACKWARD)    elbow_pwm = -elbow_pwm;  shoulder_tick = ((buffer[ORC_SHOULDER_MOTOR_ENCODER]&0x00ff)<<8)+    (buffer[ORC_SHOULDER_MOTOR_ENCODER+1]&0x00ff);  shoulder_delta_tick = shoulder_tick - shoulder_last_tick;  if (shoulder_delta_tick > SHRT_MAX/2)    shoulder_delta_tick = shoulder_delta_tick - 2*SHRT_MAX;  if (shoulder_delta_tick < -SHRT_MAX/2)    shoulder_delta_tick = shoulder_delta_tick + 2*SHRT_MAX;  elbow_tick = ((buffer[ORC_ELBOW_MOTOR_ENCODER]&0x00ff)<<8)+    (buffer[ORC_ELBOW_MOTOR_ENCODER+1]&0x00ff);  elbow_delta_tick = elbow_tick - elbow_last_tick;  if (elbow_delta_tick > SHRT_MAX/2)    elbow_delta_tick = elbow_delta_tick - 2*SHRT_MAX;  if (elbow_delta_tick < -SHRT_MAX/2)    elbow_delta_tick = elbow_delta_tick + 2*SHRT_MAX;  shoulder_last_tick = shoulder_tick;  elbow_last_tick = elbow_tick;  //elbow_delta_tick = -elbow_delta_tick;  shoulder_angle_change = delta_ticks_to_angle(shoulder_delta_tick);  elbow_angle_change = delta_ticks_to_angle(elbow_delta_tick);  if( fabs( shoulder_desired_theta - shoulder_theta ) > 0.01 ) {    printf( "shoulder_delta_theta: %f  (%d)\n", shoulder_angle_change, shoulder_delta_tick );  }  if( fabs( elbow_desired_theta - elbow_theta ) > 0.01 ) {    printf( "elbow_delta_theta: %f  (%d)\n", elbow_angle_change, elbow_delta_tick );  }  time_ticks = ((buffer[ORC_SLAVE_TIME]&0x00ff)<<8)+    (buffer[ORC_SLAVE_TIME+1]&0x00ff);  delta_slave_ticks = time_ticks - last_slave_ticks;  last_slave_ticks = time_ticks;  if (delta_slave_ticks > SHRT_MAX/2)    delta_slave_ticks -= 2*SHRT_MAX;  if (delta_slave_ticks < -SHRT_MAX/2)    delta_slave_ticks += 2*SHRT_MAX;  delta_slave_time = delta_slave_ticks/4000.0;  displacement = (left_displacement+right_displacement)/2;  rotation = atan2(right_displacement-left_displacement, ORC_WHEEL_BASE);  left_velocity = left_displacement/delta_slave_time;  right_velocity = right_displacement/delta_slave_time;  x = x+cos(theta);  y = y+sin(theta);  theta = carmen_normalize_theta(theta+rotation);  // velezj: For RssII Arm  shoulder_theta = shoulder_theta + shoulder_angle_change;  elbow_theta = elbow_theta + elbow_angle_change;  // since elbow relative to shoulder and when the shoulder moves to elbow angle  // in fact does NOT change with it, so we must update our elbow angle even when  // only the shoulder moves  //elbow_theta -= shoulder_angle_change;   shoulder_angular_velocity = shoulder_angle_change / delta_slave_time;  elbow_angular_velocity = elbow_angle_change / delta_slave_time;  if( fabs( shoulder_desired_theta - shoulder_theta ) > 0.01 || fabs( elbow_desired_theta - elbow_theta ) > 0.01 ) {    printf( "shoulder_theta: %f  (av = %f)\n", shoulder_theta, shoulder_angular_velocity );    printf( "elbow_theta:    %f  (av = %f)\n", elbow_theta, elbow_angular_velocity  );  }  time_since_last_command = carmen_get_time() - last_command_time;  last_command_time = carmen_get_time();  command_velocity(left_desired_velocity, left_velocity, left_pwm,       ORC_LEFT_MOTOR);  command_velocity(right_desired_velocity, right_velocity, right_pwm,       ORC_RIGHT_MOTOR);}int carmen_arm_direct_reset(void){  printf("carmen_arm_direct_reset\n");  initialized = 0;  return 0;}int carmen_arm_direct_initialize(char *model __attribute__ ((unused)), char *dev){  int result;  unsigned char buffer[5];  result = carmen_serial_connect(&serial_fd, dev);  if(result == -1) {    serial_fd = -1;    return -1;  }  if (strstr(dev, "USB") == NULL) {    carmen_warn("This doesn't look like a USB port. Setting linespeed to 115200\n");    carmen_serial_configure(serial_fd, 115200, "8N1");  } else {    carmen_warn("This looks like a USB port. Setting linespeed to 500000\n");    carmen_serial_configure(serial_fd, 500000, "8N1");  }  fprintf(stderr, "Clearing input buffer...");  carmen_serial_ClearInputBuffer(serial_fd);  carmen_arm_direct_update_status();  carmen_arm_direct_update_status();  carmen_serial_ClearInputBuffer(serial_fd);  fprintf(stderr, " ok.\n");  buffer[0] = 'C';  buffer[1] = 0; // Motor Encoder 0  buffer[2] = 14; // Quad Phase Fast  fprintf(stderr, "Setting motor encoder 0 into quad phase fast mode... ");  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok.\n");  buffer[1] = 1; // Motor Encoder 0  fprintf(stderr, "Setting motor encoder 1 into quad phase fast mode... ");  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 2; // Motor Encoder 1  fprintf(stderr, "Setting motor encoder 2 into quad phase fast mode... ");  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 3; // Motor Encoder 1  fprintf(stderr, "Setting motor encoder 3 into quad phase fast mode... ");  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[0] = 'W';  buffer[1] = ORC_LEFT_MOTOR;   buffer[2] = 10;             // Quad Phase Fast  fprintf(stderr, "Setting left motor slew to %d... ", buffer[2]);  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = ORC_RIGHT_MOTOR;   fprintf(stderr, "Setting right motor slew to %d... ", buffer[2]);  if (send_packet_and_ack(buffer, 3, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");    //Edsinger: added servo   buffer[0] = 'C';  buffer[1] = 0; // Servo0  buffer[2] = ORC_SERVO_PIN; //Servo  fprintf(stderr, "Setting servo pin 0 into servo mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 1; // Servo1  buffer[2] = ORC_SERVO_PIN; //Servo  fprintf(stderr, "Setting servo pin 1 into servo mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 2; // Servo2  buffer[2] = ORC_SERVO_PIN; //Servo  fprintf(stderr, "Setting servo pin 2 into servo mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 3; // Servo3  buffer[2] = ORC_SERVO_PIN; //Servo  fprintf(stderr, "Setting servo pin 3 into servo mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 10; // Bumper  buffer[2] = ORC_DIGITAL_IN_PULL_UP;  fprintf(stderr, "Setting bumper 0 into digital pull-up mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 11; // Bumper  buffer[2] = ORC_DIGITAL_IN_PULL_UP;  fprintf(stderr, "Setting bumper 1 into digital pull-up mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 12; // Bumper  buffer[2] = ORC_DIGITAL_IN_PULL_UP;  fprintf(stderr, "Setting bumper 2 into digital pull-up mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = 13; // Bumper  buffer[2] = ORC_DIGITAL_IN_PULL_UP;  fprintf(stderr, "Setting bumper 3 into digital pull-up mode... ");  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  fprintf(stderr, "Setting gripper into digital pull-up mode... ");  buffer[1] = 12; // Gripper  buffer[2] = ORC_DIGITAL_IN_PULL_UP;  if (send_packet_and_ack(buffer, 3, ORC_MASTER) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[0] = 0x4D;  buffer[1] = ORC_LEFT_MOTOR;  buffer[2] = 0;  buffer[3] = 0;  fprintf(stderr, "Zeroing left motor velocity ... ");  if (send_packet_and_ack(buffer, 4, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  buffer[1] = ORC_RIGHT_MOTOR;  fprintf(stderr, "Zeroing right motor velocity... ");  if (send_packet_and_ack(buffer, 4, ORC_SLAVE) < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  fprintf(stderr, "Checking board status... ");  if (carmen_arm_direct_update_status() < 0) {    fprintf(stderr, "%sfailed%s.\n", carmen_red_code, carmen_normal_code);    return -1;  }  fprintf(stderr, "ok\n");  return 0;}int carmen_arm_direct_shutdown(void){  unsigned char buffer[5];  buffer[0] = 0x4D;  buffer[1] = ORC_LEFT_MOTOR;  buffer[2] = ORC_FORWARD;  buffer[3] = 0;  send_packet_and_ack(buffer, 4, ORC_SLAVE);  buffer[0] = 0x4D;  buffer[1] = ORC_RIGHT_MOTOR;  buffer[2] = ORC_FORWARD;  buffer[3] = 0;  send_packet_and_ack(buffer, 4, ORC_SLAVE);  close(serial_fd);  return 0;}static unsigned char *get_status_packet(unsigned char where){  unsigned char byte;  unsigned char *buffer = NULL;  unsigned char routing = 0;  int count;  byte = ORC_STATUS;  count = 0;  do {    send_packet(&byte, 1, where);    buffer = read_packet();    if (buffer != NULL) {      byte = buffer[2];      routing = byte >> 6;      if (buffer[3] == ORC_STATUS && routing == where) {	return buffer;      } else {	carmen_warn("Out of order packet %c %d %d %d\n", buffer[3],		    buffer[3], routing, where);	free(buffer);	buffer = NULL;      }    }    if (!buffer || buffer[0] != 0xED || buffer[3] != 0)      count++;    //    carmen_warn("Count %d\n", count);  } while (count < 10);    return buffer;}int carmen_arm_direct_update_status(void){  unsigned char *buffer;  double start_time = carmen_get_time();  buffer = get_status_packet(ORC_MASTER);  if (buffer == NULL)    return -1;  unpack_master_packet(buffer);  free(buffer);  if(0)    carmen_warn("time to update: %.2f\n", carmen_get_time() -		start_time);  buffer = get_status_packet(ORC_SLAVE);  if (buffer == NULL)    return -1;  unpack_slave_packet(buffer);  free(buffer);  if(0)  carmen_warn("time to update: %.2f\n", carmen_get_time() -	      start_time);  return 0;}/* void carmen_arm_direct_set(double servos[], int num_servos) *//* { *//*   unsigned char buffer[4]; *//*   unsigned short pwm; *//*   int i; */  /* if (num_servos > 4) { *//*     carmen_warn("orc_lib.c only supports 4 servos (%d sent)\n" *//*                 "Returning only 4\n", num_servos); *//*     num_servos = 4; *//*   } *//*  for (i=0;i<num_servos;i++) *//*    {  *//*      int nservo=(int)servos[i]; *//*     pwm = nservo; *//*     buffer[0] = 0x53; *//*     buffer[1] = i; *//*     buffer[2] = pwm >> 8; *//*     buffer[3] = pwm & 0x00ff; *//*     send_packet(buffer, 4, ORC_MASTER); *//*   } *//* } *//* void carmen_arm_direct_get(double servos[], int num_servos, *//* 			   double *currents, int *gripper) *//* { *//*   int i; */  /*   if (num_servos > 4) { *//*     carmen_warn("orc_lib.c only supports 4 servos (%d requested)\n" *//*                 "Returning only 4\n", num_servos); *//*     num_servos = 4; *//*   } */ /*   for (i = 0; i < num_servos; i++) { *//*     servos[i] = servo_state[i]; *//*   } *//*   if (currents && num_servos > 0) { *//*     currents[0] = servo_current[0]; *//*     if (num_servos > 1) *//*       currents[1] = servo_current[1]; *//*   } *//*   if (gripper) *//*     *gripper = gripper_state; *//* } */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品久久久蜜桃| 91网站黄www| 色菇凉天天综合网| 欧美一区二区久久久| 中文字幕一区二区三区色视频| 偷拍日韩校园综合在线| 国产成人99久久亚洲综合精品| 欧美高清精品3d| 国产精品久久三区| 久久国产精品99久久久久久老狼| 91黄视频在线观看| 亚洲欧美中日韩| 成人小视频免费观看| 欧美一区二区黄| 亚洲小少妇裸体bbw| 色综合天天综合色综合av | 91亚洲精品一区二区乱码| 日韩欧美成人激情| 天涯成人国产亚洲精品一区av| 99这里只有久久精品视频| 2021中文字幕一区亚洲| 美女视频免费一区| 在线播放91灌醉迷j高跟美女| 亚洲精品网站在线观看| 懂色av一区二区三区蜜臀| 精品欧美乱码久久久久久1区2区| 婷婷综合五月天| 欧美三级午夜理伦三级中视频| 成人免费一区二区三区视频 | 国产精品色婷婷久久58| 国产在线不卡一区| 精品久久久久久久人人人人传媒| 日韩专区一卡二卡| 91麻豆精品91久久久久久清纯| 一区二区三区欧美日韩| 色综合久久天天综合网| 一区二区在线观看视频| 一本色道久久综合亚洲精品按摩 | 成人一区在线观看| 国产精品全国免费观看高清 | 欧美老女人第四色| 日韩精品视频网站| 日韩欧美一区在线观看| 国内精品自线一区二区三区视频| 欧美成人aa大片| 激情文学综合网| 欧美国产视频在线| 91在线播放网址| 亚洲精品成人悠悠色影视| 欧美私人免费视频| 日韩极品在线观看| 久久只精品国产| 成人午夜视频福利| 亚洲国产另类av| 日韩欧美一二三四区| 东方欧美亚洲色图在线| 一区二区三区在线视频观看58| 欧美视频三区在线播放| 日韩精品一二三| 中文字幕av一区 二区| 欧洲激情一区二区| 无吗不卡中文字幕| 国产丝袜在线精品| 色又黄又爽网站www久久| 日本vs亚洲vs韩国一区三区 | 日韩免费一区二区三区在线播放| 国产一区二区三区免费| 亚洲女人小视频在线观看| 91麻豆精品国产91久久久久久| 国内外成人在线视频| 一区二区三区四区视频精品免费| 91精品国产欧美一区二区| 不卡的av电影| 石原莉奈在线亚洲三区| 国产网红主播福利一区二区| 在线亚洲+欧美+日本专区| 卡一卡二国产精品| 一区二区理论电影在线观看| 日韩精品一区二区三区swag| 色哟哟国产精品| 久久99这里只有精品| 亚洲你懂的在线视频| 久久久久久久电影| 欧美精三区欧美精三区| 成人高清免费在线播放| 乱一区二区av| 亚洲一线二线三线视频| 国产欧美一区二区精品忘忧草| 欧美日本免费一区二区三区| 成人性生交大片免费看视频在线| 日韩在线一区二区三区| 中文字幕中文字幕一区二区| 欧美美女直播网站| 91色|porny| 国产毛片一区二区| 日本大胆欧美人术艺术动态| 亚洲蜜桃精久久久久久久| 国产精品色婷婷久久58| 精品福利二区三区| 7777精品伊人久久久大香线蕉 | 91丨porny丨首页| 国产成人av在线影院| 免播放器亚洲一区| 三级亚洲高清视频| 亚洲成a人片在线观看中文| 国产精品久久久久久久久快鸭 | 一本一道久久a久久精品综合蜜臀| 国产精品亚洲第一区在线暖暖韩国 | 免费在线看一区| 日韩av一区二区三区| 图片区小说区国产精品视频| 婷婷中文字幕一区三区| 亚洲一级二级三级在线免费观看| 亚洲精品视频自拍| 一区二区成人在线| 亚洲已满18点击进入久久| 亚洲欧洲制服丝袜| 亚洲九九爱视频| 亚洲综合成人在线视频| 亚洲午夜激情网站| 蜜桃传媒麻豆第一区在线观看| 一区二区欧美视频| 亚洲午夜久久久久久久久电影院| 亚洲激情中文1区| 亚洲一本大道在线| 日韩va亚洲va欧美va久久| 日韩国产一二三区| 久久精品国产久精国产| 国产一区欧美二区| 99综合电影在线视频| 91福利小视频| 51久久夜色精品国产麻豆| 精品精品国产高清一毛片一天堂| 欧美tickling挠脚心丨vk| 国产性做久久久久久| 中文字幕一区二区不卡| 亚洲成在人线免费| 日产欧产美韩系列久久99| 国产在线精品免费| 91蜜桃网址入口| 欧美精品久久久久久久多人混战| 日韩欧美国产1| 国产农村妇女毛片精品久久麻豆| 亚洲欧美色图小说| 日本女优在线视频一区二区| 国产在线精品国自产拍免费| av在线综合网| 欧美日韩一区二区在线视频| 欧美va在线播放| 亚洲欧美成aⅴ人在线观看| 午夜视频一区二区| 国产精品白丝av| 在线视频国内一区二区| 精品国产乱码久久久久久久| 国产精品毛片久久久久久| 亚洲一区二区精品视频| 国产精品中文有码| 欧美性受xxxx| 欧美激情艳妇裸体舞| 五月婷婷激情综合网| 福利一区二区在线观看| 欧美日韩国产一级片| 国产欧美日韩视频在线观看| 亚洲图片欧美色图| 精久久久久久久久久久| 日本久久电影网| 久久婷婷国产综合精品青草| 亚洲一区二区3| 成人黄色国产精品网站大全在线免费观看| 欧美综合亚洲图片综合区| 久久这里只有精品首页| 日日噜噜夜夜狠狠视频欧美人| 99精品国产91久久久久久| 精品国产91乱码一区二区三区| 亚洲在线观看免费| 欧美精品免费视频| 亚洲免费在线视频| 国产精品中文欧美| 日韩精品一区二区三区蜜臀| 日韩精品欧美精品| 91九色最新地址| 亚洲欧洲美洲综合色网| 国产成人综合自拍| 久久新电视剧免费观看| 日本欧美肥老太交大片| 欧美人妇做爰xxxⅹ性高电影| 国产精品久久久久桃色tv| 国产成人精品亚洲日本在线桃色| 91精品国产综合久久精品性色| 有坂深雪av一区二区精品| 99精品国产99久久久久久白柏| 中文字幕av免费专区久久| 国产乱人伦偷精品视频不卡| 日韩欧美一二三区| 蜜桃一区二区三区四区| 88在线观看91蜜桃国自产| 亚洲成人综合视频| 欧美丝袜丝交足nylons图片| 伊人一区二区三区| 欧美午夜精品理论片a级按摩|