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

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

?? pioneer_lib.c

?? 卡內基梅隆大學(CMU)開發的移動機器人控制開發軟件包。可對多種機器人進行控制
?? C
?? 第 1 頁 / 共 2 頁
字號:
{  int i;  int pioneer_model;  int result;  int count;  pioneer_model = -1;  for (i = 0; carmen_pioneer_models[i][0] != 0; i++)   {    if (strlen(model) == strlen(carmen_pioneer_models[i]) &&        carmen_strncasecmp(model, carmen_pioneer_models[i],           strlen(carmen_pioneer_models[i])) == 0)    {      pioneer_model = i;      break;    }  }  if (pioneer_model == -1)     {      carmen_warn("Unknown pioneer model %s\nKnown models: ", model);      for (i = 0; carmen_pioneer_models[i][0] != 0; i++) 	{	  carmen_warn("%s ", carmen_pioneer_models[i]);	  if (i % 6 == 5)	    carmen_warn("\n");	  carmen_warn("To determine your pioneer model, read \n"		      "carmen/src/pioneer/README\n");	  return -1;	}    }  angle_conv_factor = carmen_pioneer_params[pioneer_model][0];  dist_conv_factor = carmen_pioneer_params[pioneer_model][1];  vel_conv_factor = carmen_pioneer_params[pioneer_model][2];  range_conv_factor = carmen_pioneer_params[pioneer_model][3];  diff_conv_factor = carmen_pioneer_params[pioneer_model][4];  vel2_divisor = carmen_pioneer_params[pioneer_model][5];  if (pioneer_model < 17)     pioneer_version = 2;  else    pioneer_version = 1;  if (carmen_serial_connect(&dev_fd, dev) < 0)     return -1;  count = 0;  do     {      result = pioneer_sync0();      if (result < 0 && count == 4)	return -1;      count++;    }  while (result < 0);  if (pioneer_sync1() < 0)    return -1;  if (pioneer_sync2() < 0)    return -1;  pioneer_send_command0(PIONEER_OPEN);  pioneer_sonar(0);  pioneer_send_command0(PIONEER_PULSE);  if (pioneer_version == 2)     pioneer_send_command1(PIONEER_ENABLE, PIONEER_ON);  return 0;}int carmen_base_direct_shutdown_robot(void) {  if (sonar_is_on) {    carmen_base_direct_sonar_off();    usleep(1000000);  }  pioneer_send_command0(PIONEER_CLOSE);  usleep(1000000);  close(dev_fd);  fprintf( stderr, "\nClosed\n" );  return(0);}int carmen_base_direct_set_acceleration(double acceleration){  acceleration = fabs(acceleration) * 1000;  return pioneer_send_command1(PIONEER_SETA, acceleration);}int carmen_base_direct_set_deceleration(double deceleration){  deceleration = -fabs(deceleration) * 1000;  return pioneer_send_command1(PIONEER_SETA, deceleration);}int carmen_base_direct_set_velocity(double tv, double rv){  /** Cyrill, 13.Jan.2004      Pioneer drives much nicer when using VEL2 instead      of VEL and RVEL commands.       ActiveMedia's strage dist_conf_factor comes from:      distBetweemLeftAndRightWheel = 0.002 / dist_conf_factor  */  int result = 0;  double vl = tv  - 0.001 * rv / diff_conv_factor;  double vr = tv  + 0.001 * rv / diff_conv_factor;  if (pioneer_version == 1)   {    vl *= PIONEER1_VEL2_CONVERSION_FACTOR;    vr *= PIONEER1_VEL2_CONVERSION_FACTOR;  }  else   {    vl *= PIONEER2_VEL2_CONVERSION_FACTOR;    vr *= PIONEER2_VEL2_CONVERSION_FACTOR;  }  result =  pioneer_vel2((int) rint(vl), (int) rint(vr));    if (result < 0)    return -1;  return 0;  /* The old method to send the velocities to the robot.     Pioneer Robots (can) drive quite poor if using     VEL and RVEL command, that's why I changed the     code to the  VEL2 command */  /*   int err;  *//*   int arg; *//*   arg = tv * 1000; *//*   err = pioneer_send_command1(PIONEER_VEL, arg); *//*   if (err < 0) *//*     return -1; */  /*   arg = carmen_radians_to_degrees(rv); *//*   err = pioneer_send_command1(PIONEER_RVEL, arg); *//*   if (err < 0) *//*     return -1; *//*   return 0; */}int carmen_base_direct_update_status(double* update_timestamp) {  int read = 0;  double packet_timestamp=0.;  pioneer_send_command0(PIONEER_PULSE);  memset(&raw_state, 0, sizeof(struct pioneer_raw_information_packet));  raw_state.motor_status = 0;  do     {      read = pioneer_read_string((unsigned char*) &raw_state, 				 PIONEER_SERIAL_TIMEOUT, &packet_timestamp);    }  while (carmen_serial_numChars(dev_fd) > 0);  if (raw_state.motor_status != PIONEER_MOTOR_NO_POWER &&      raw_state.motor_status != PIONEER_MOTOR_STOPPED &&      raw_state.motor_status != PIONEER_MOTOR_MOVING)     {      carmen_warn("\nTried to convert non-information packet.\n");      return -1;    }  if (update_timestamp){    *update_timestamp=packet_timestamp;  }  return 0;  //  return read;}intcarmen_base_direct_get_state(double *displacement, double *rotation,			     double *tv, double *rv){  double delta_x, delta_y, delta_theta, vl, vr;  static int initialised = 0;  static int    pioneer_prev_x, pioneer_prev_y;  int           pioneer_x, pioneer_y;  int           pioneer_delta_x, pioneer_delta_y;    static double prev_theta;  double theta;  if (raw_state.motor_status != PIONEER_MOTOR_NO_POWER &&      raw_state.motor_status != PIONEER_MOTOR_STOPPED &&      raw_state.motor_status != PIONEER_MOTOR_MOVING)     {      carmen_warn("\nTried to convert non-information packet.\n");      return -1;    }  pioneer_x = pioneer_buf_to_unsigned_int(raw_state.x);  pioneer_y = pioneer_buf_to_unsigned_int(raw_state.y);  theta =    pioneer_buf_to_unsigned_int(raw_state.orientation) * angle_conv_factor;  theta = carmen_normalize_theta(theta);  if (initialised)     {            pioneer_delta_x = pioneer_x - pioneer_prev_x;      pioneer_delta_y = pioneer_y - pioneer_prev_y;      // x and y roll-over by 0x7fff       if ( pioneer_delta_x > 0x3fff ) {	pioneer_delta_x -= 0x7fff;      } else if ( pioneer_delta_x < -0x3fff ) {	pioneer_delta_x += 0x7fff;      }      if ( pioneer_delta_y > 0x3fff ) {	pioneer_delta_y -= 0x7fff;      } else if ( pioneer_delta_y < -0x3fff ) {	pioneer_delta_y += 0x7fff;      }      delta_x = pioneer_delta_x * dist_conv_factor / 1000.0;      delta_y = pioneer_delta_y * dist_conv_factor / 1000.0;      delta_theta = theta - prev_theta;      if (theta < prev_theta && prev_theta - theta > M_PI)	delta_theta = (theta + M_PI) - (prev_theta - M_PI);      else if (theta > prev_theta && theta - prev_theta > M_PI)	delta_theta = (theta - M_PI) - (prev_theta + M_PI);      if (displacement) {	*displacement = hypot(delta_x, delta_y);      }      if (rotation)	*rotation = delta_theta;    }  else     {      initialised = 1;    }  pioneer_prev_x     = pioneer_x;  pioneer_prev_y     = pioneer_y;  prev_theta         = theta;  vl = pioneer_buf_to_int(raw_state.vl) * vel_conv_factor / 1000;  vr = pioneer_buf_to_int(raw_state.vr) * vel_conv_factor / 1000;  // We do this because the stupid ActivMedia controller returns non-zero  // values for wheel velocity when the robot is not moving.  if (fabs(vl) < .05)    vl = 0;  if (fabs(vr) < .05)    vr = 0;  if (tv)    *tv = (vl+vr)/2;  if (*tv<0.0 && *displacement )    *displacement *= -1;  /*   if (rv) *//*     *rv = (vr-vl) * diff_conv_factor; */  /** Cyrill, 13.Jan.2004      ActivMedia uses this strange diff_conv_factor to compute the       rotational velocity from the individual wheel speeds.      Mathematically it should be:      omega = (vRightWheel - vLeftWheel) / DistanceBetweenRightAndLeftWheel      That means ActivMedia's diff_conv_factor is computed by      diff_conv_factor = 0.002/DistanceBetweenRightAndLeftWheelInM      If we want to use ActivMedia's parameter, we must compute:      omega = (vRightWheel - vLeftWheel) * 500.0 * diff_conv_factor;  */  if (rv)    *rv = (vr-vl) * 500.0 * diff_conv_factor;    return 0;}intcarmen_base_direct_get_integrated_state(double *x, double *y, double *theta,					double *tv, double *rv){  double vl, vr;  if (raw_state.motor_status != PIONEER_MOTOR_NO_POWER &&      raw_state.motor_status != PIONEER_MOTOR_STOPPED &&      raw_state.motor_status != PIONEER_MOTOR_MOVING)     {      carmen_warn("\nTried to convert non-information packet.\n");      return -1;    }  if (x)    *x = pioneer_buf_to_unsigned_int(raw_state.x) * dist_conv_factor/1000;  if (y)    *y = pioneer_buf_to_unsigned_int(raw_state.y) * dist_conv_factor/1000;  if (theta)    {      *theta = pioneer_buf_to_int(raw_state.orientation) * 	angle_conv_factor;      *theta = carmen_normalize_theta(*theta);    }  vl = pioneer_buf_to_int(raw_state.vl) * vel_conv_factor / 1000;  vr = pioneer_buf_to_int(raw_state.vr) * vel_conv_factor / 1000;  // We do this because the stupid ActivMedia controller returns non-zero  // values for wheel velocity when the robot is not moving.  if (fabs(vl) < .05)    vl = 0;  if (fabs(vr) < .05)    vr = 0;  if (tv)    *tv = (vl+vr)/2;  if (rv)    *rv = (vr-vl) * diff_conv_factor;  return 0;}int carmen_base_direct_send_binary_data(unsigned char *data, int size){  return pioneer_send_string(data, size);}int carmen_base_direct_get_binary_data(unsigned char **data, int *size){  if (data == NULL || size == NULL)    return 0;  (*data) = calloc(1, sizeof(struct pioneer_raw_information_packet));    carmen_test_alloc(*data);  *size = sizeof(struct pioneer_raw_information_packet);  memcpy(*data, &raw_state, *size);  return 0;}int carmen_base_direct_get_bumpers(unsigned char *state, int num_bumpers){  int i;  if (state == NULL || num_bumpers == 0)    return PIONEER_MAX_NUM_BUMPERS;  for (i=0; i<7 && i<num_bumpers; i++){    state[i]=((raw_state.bumper[1])&(1<<(i+1)))!=0?1:0;  }  int j;  for (j=0; j<7 && i<num_bumpers; j++){    state[i++]=((raw_state.bumper[0])&(1<<(j+1))) != 0 ? 1 : 0;  }  return PIONEER_MAX_NUM_BUMPERS;}void carmen_base_direct_arm_get(double servos[] __attribute__ ((unused)), 				int num_servos __attribute__ ((unused)), 				double *currents __attribute__ ((unused)), 				int *gripper __attribute__ ((unused))){  carmen_warn("%s not supported by pioneer.\n", __FUNCTION__);}void carmen_base_direct_arm_set(double servos[] __attribute__ ((unused)), 				int num_servos __attribute__ ((unused))){  carmen_warn("%s not supported by pioneer.\n", __FUNCTION__);}int carmen_base_direct_get_sonars(double *ranges, 				  carmen_point_t *positions 				  __attribute__ ((unused)),				  int num_sonars){  int i;  double range;  if (ranges != NULL && sonar_is_on) {    //fprintf(stderr, "sonars %d, readings %d:", num_sonars, raw_state.num_sonar_readings);    for (i = 0; i < num_sonars; i++){      ranges[i]=-1.;    }    for (i = 0; i < raw_state.num_sonar_readings; i++) {      range = pioneer_buf_to_unsigned_int(raw_state.sonar[i].range) *	range_conv_factor / 1000.0;      if (raw_state.sonar[i].n < num_sonars)        ranges[raw_state.sonar[i].n] = range;    } /*     for (i = 0; i < num_sonars; i++){ *//*       fprintf(stderr, "%f " ,ranges[i]); *//*     } *//*     fprintf(stderr, "\n"); */ }  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜av区久久| 成人av一区二区三区| 成人午夜av影视| 欧美日本高清视频在线观看| 国产亚洲欧美日韩日本| 亚洲一级不卡视频| 波多野结衣精品在线| 欧美tickling网站挠脚心| 亚洲另类色综合网站| 国产suv精品一区二区6| 正在播放一区二区| 亚洲一区二区在线观看视频| 国产成人av在线影院| 日韩精品一区二区三区中文不卡 | 久久只精品国产| 亚洲gay无套男同| 91麻豆精东视频| 国产精品女主播av| 国产精品一区免费在线观看| 欧美久久一区二区| 亚洲国产成人va在线观看天堂| 国产.欧美.日韩| 久久久91精品国产一区二区精品| 麻豆国产欧美一区二区三区| 欧美人妖巨大在线| 亚洲自拍偷拍欧美| 91福利在线导航| 一区二区三区中文字幕电影| 91麻豆国产香蕉久久精品| 国产精品国产自产拍在线| 成人av电影观看| 最新国产成人在线观看| 99re热这里只有精品视频| 成人免费在线播放视频| 成人av电影在线观看| 综合久久综合久久| 色先锋资源久久综合| 夜夜嗨av一区二区三区网页| 欧美天堂亚洲电影院在线播放| 亚洲精品乱码久久久久久黑人 | 中文天堂在线一区| 99久久精品情趣| 一区二区三区高清| 国产一区二区三区在线看麻豆| 久久久久久久久久久黄色| 国产精品一区二区果冻传媒| 中文字幕av在线一区二区三区| 国产白丝精品91爽爽久久| 综合色天天鬼久久鬼色| 欧美亚洲综合色| 日本va欧美va瓶| 久久久精品国产免大香伊| 国产传媒一区在线| 亚洲你懂的在线视频| 欧美军同video69gay| 久草中文综合在线| 国产精品日产欧美久久久久| 99re亚洲国产精品| 午夜电影一区二区| 日韩亚洲欧美在线观看| 国产在线不卡一区| 亚洲精品中文字幕在线观看| 欧美精品久久一区| 国产精品一级片| 亚洲国产精品精华液网站| 久久婷婷国产综合精品青草| 成人av影视在线观看| 日韩国产高清在线| 欧美激情一区在线| 在线播放日韩导航| 成人污污视频在线观看| 亚洲成人综合在线| 久久精品免费在线观看| 在线观看视频一区二区欧美日韩| 日韩精品一级二级| 国产精品久久一卡二卡| 欧美久久久久免费| 91影院在线观看| 狠狠狠色丁香婷婷综合激情 | 五月婷婷久久丁香| 国产精品美女视频| 亚洲精品在线一区二区| 欧美综合一区二区| 成人影视亚洲图片在线| 天天综合天天综合色| 亚洲男女一区二区三区| 国产亚洲精品aa午夜观看| 欧美性大战xxxxx久久久| 国产精品99久久久久久有的能看 | 久久久久久久久久久久久夜| 色噜噜狠狠成人中文综合| 国产乱对白刺激视频不卡| 日本成人在线一区| 一区二区三区在线观看动漫| 精品福利二区三区| 91精品免费在线观看| 在线观看av一区二区| 成人视屏免费看| 国产精品小仙女| 国产精品88av| 国产一区久久久| 激情国产一区二区| 蜜桃传媒麻豆第一区在线观看| 亚洲一区二区三区视频在线| 一区二区视频在线看| 成人免费在线视频| 亚洲欧洲韩国日本视频 | 欧美一区二区精品| 欧美日韩成人综合| 精品视频一区三区九区| 91黄色激情网站| 色天使色偷偷av一区二区| 91免费版在线看| 91亚洲精品久久久蜜桃| 99久久久精品| 91浏览器在线视频| 色琪琪一区二区三区亚洲区| 在线视频国产一区| 在线视频一区二区三区| 欧美性感一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品人人做人人综合| 久久久国产精品午夜一区ai换脸| www一区二区| 国产欧美视频一区二区| 久久久精品天堂| 国产精品久久久久久久久晋中 | 国产白丝精品91爽爽久久| 成人激情开心网| 91麻豆swag| 欧美性色综合网| 在线成人免费观看| 精品福利视频一区二区三区| 欧美国产日产图区| 一区二区三区四区精品在线视频| 一区二区久久久| 天堂va蜜桃一区二区三区 | 伊人婷婷欧美激情| 视频一区欧美精品| 国产在线日韩欧美| 成人福利视频网站| 精品视频全国免费看| 精品国产1区2区3区| 日韩一区有码在线| 天堂在线一区二区| 国产91精品精华液一区二区三区 | 国产精品18久久久久久久久久久久 | 国产日韩亚洲欧美综合| 亚洲欧美另类综合偷拍| 天天综合网天天综合色| 粉嫩av一区二区三区| 欧美综合亚洲图片综合区| 欧美成人女星排行榜| 亚洲免费在线播放| 青娱乐精品在线视频| 白白色 亚洲乱淫| 91精品国产免费久久综合| 国产精品视频线看| 日韩福利电影在线观看| av电影一区二区| 精品国产免费视频| 亚洲另类在线视频| 国产成人免费视频网站高清观看视频| 色素色在线综合| 久久精品日韩一区二区三区| 日韩综合一区二区| 99在线精品免费| 精品久久国产字幕高潮| 亚洲国产一区在线观看| 豆国产96在线|亚洲| 日韩一级二级三级精品视频| 亚洲人成电影网站色mp4| 九九国产精品视频| 欧美日韩精品久久久| 国产亚洲短视频| 日韩高清一级片| 欧美亚洲免费在线一区| **性色生活片久久毛片| 国产成人免费视频| 精品久久久久av影院| 日韩高清欧美激情| 欧美精品免费视频| 亚洲午夜视频在线观看| 91偷拍与自偷拍精品| 亚洲国产精品激情在线观看| 久久av资源网| 欧美一区二区性放荡片| 亚洲综合av网| 欧美亚洲一区二区在线| 亚洲免费观看高清在线观看| 国产精品一二三| 久久伊人中文字幕| 国产麻豆成人传媒免费观看| 欧美一区二区三区在线观看| 亚洲第一福利视频在线| 欧美亚一区二区| 亚洲一区二区视频在线观看| 色综合久久中文字幕| 一区二区三区成人在线视频| 在线亚洲高清视频|