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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? base_main.c

?? 卡內(nèi)基梅隆大學(CMU)開發(fā)的移動機器人控制開發(fā)軟件包。可對多種機器人進行控制
?? C
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************* * * This source code is part of the Carnegie Mellon Robot * Navigation Toolkit (CARMEN) * * CARMEN Copyright (c) 2002 Michael Montemerlo, Nicholas * Roy, Sebastian Thrun, Dirk Haehnel, Cyrill Stachniss, * and Jared Glover * * CARMEN is free software; you can redistribute it and/or  * modify it under the terms of the GNU General Public  * License as published by the Free Software Foundation;  * either version 2 of the License, or (at your option) * any later version. * * CARMEN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE.  See the GNU General Public License for more  * details. * * You should have received a copy of the GNU General  * Public License along with Foobar; if not, write to the * Free Software Foundation, Inc., 59 Temple Place,  * Suite 330, Boston, MA  02111-1307 USA * ********************************************************/#include <carmen/carmen.h>#include "base_low_level.h"#ifdef BASE_HAS_ARM#include <carmen/arm_messages.h> #include "arm_low_level.h"#endifvoid x_ipcRegisterExitProc(void (*)(void));static int moving = 0;static double current_acceleration = 0;static double deceleration;static carmen_robot_config_t robot_config;static carmen_base_odometry_message odometry;static carmen_base_binary_data_message binary_data;static double reset_time = 0;static double relative_wheelbase;static double relative_wheelsize;static int use_hardware_integrator = 1;static int use_sonar = 1;static carmen_base_sonar_message sonar;static int sonar_state = 0;static double *ranges = NULL;static carmen_point_t *positions = NULL;static int num_sonar_ranges;static carmen_base_bumper_message bumper;static double last_motion_command = 0;static double motion_timeout = 1;static int odometry_inverted;static char *model_name;static char *dev_name;#ifdef BASE_HAS_ARMstatic int num_arm_joints;static carmen_arm_state_message arm_state;#endifstatic int initialize_robot(void){  int result;  result = carmen_base_direct_initialize_robot    (model_name, dev_name);  if (result < 0)     return -1;    if (use_sonar) {    num_sonar_ranges = carmen_base_direct_sonar_on();    if(num_sonar_ranges < 0)       return -1;    if (ranges == NULL)      free(ranges);    ranges = (double *)calloc(num_sonar_ranges, sizeof(double));    carmen_test_alloc(ranges);    positions = (carmen_point_t *)      calloc(num_sonar_ranges, sizeof(carmen_point_t));    carmen_test_alloc(positions);    sonar_state = 1;  } else {    result = carmen_base_direct_sonar_off();    if(result < 0)       return -1;  }  result = carmen_base_direct_reset();  if (result < 0)     return -1;  reset_time = carmen_get_time();  odometry.host = carmen_get_host();  binary_data.host = carmen_get_host();  binary_data.size = 0;    return 0;}#ifdef BASE_HAS_ARMstatic void arm_command_handler(MSG_INSTANCE msgRef, BYTE_ARRAY callData,				void *clientData __attribute__ ((unused))){  IPC_RETURN_TYPE err;  carmen_arm_command_message msg;  FORMATTER_PTR formatter;  formatter = IPC_msgInstanceFormatter(msgRef);  err = IPC_unmarshallData(formatter, callData, &msg,			   sizeof(carmen_arm_command_message));  IPC_freeByteArray(callData);    if (msg.num_joints > 0) {    carmen_arm_direct_set(msg.joint_angles, msg.num_joints);    free(msg.joint_angles);  }}static void arm_query_handler(MSG_INSTANCE msgRef, BYTE_ARRAY callData,			      void *clientData __attribute__ ((unused))){  IPC_RETURN_TYPE err;  IPC_freeByteArray(callData);  if (num_arm_joints > 0)     carmen_arm_direct_get_state(arm_state.joint_angles, 				arm_state.joint_currents,				arm_state.joint_angular_vels,				&arm_state.gripper_closed, num_arm_joints);  arm_state.timestamp = carmen_get_time();  arm_state.host = carmen_get_host();  err = IPC_respondData(msgRef, CARMEN_ARM_STATE_NAME, &arm_state);}static void initialize_arm_message(void){  int err;  carmen_param_allow_unfound_variables(FALSE);   err = carmen_param_get_int("arm_num_joints", &num_arm_joints, NULL);  if (err < 0)    carmen_die("\nThe base_has_arm parameter is on, but the arm_num_joints "	       "parameter is\nmissing. Please set the arm_num_joints "	       "parameter.\n");  arm_state.num_joints = num_arm_joints;  if (num_arm_joints > 0) {    arm_state.joint_angles = (double *)calloc(num_arm_joints, sizeof(double));    carmen_test_alloc(arm_state.joint_angles);    if(carmen_arm_direct_num_currents(num_arm_joints)) {      arm_state.flags |= CARMEN_ARM_HAS_CURRENT_STATES;      arm_state.num_currents = carmen_arm_direct_num_currents(num_arm_joints);      arm_state.joint_currents = (double*)calloc	( arm_state.num_currents, sizeof( double ) );      carmen_test_alloc( arm_state.joint_currents );    }    if(carmen_arm_direct_num_velocities(num_arm_joints)) {      arm_state.flags |= CARMEN_ARM_HAS_ANGULAR_VEL_STATES;      arm_state.num_vels = carmen_arm_direct_num_velocities(num_arm_joints);      arm_state.joint_angular_vels = (double*)calloc	( arm_state.num_vels, sizeof( double ) );      carmen_test_alloc( arm_state.joint_angular_vels );    }  }  err = IPC_defineMsg(CARMEN_ARM_COMMAND_NAME, IPC_VARIABLE_LENGTH,                      CARMEN_ARM_COMMAND_FMT);  carmen_test_ipc_exit(err, "Could not define", CARMEN_ARM_COMMAND_NAME);  err = IPC_defineMsg(CARMEN_ARM_QUERY_NAME, IPC_VARIABLE_LENGTH,                      CARMEN_DEFAULT_MESSAGE_FMT);  carmen_test_ipc_exit(err, "Could not define", 		       CARMEN_ARM_QUERY_NAME);  err = IPC_defineMsg(CARMEN_ARM_STATE_NAME, IPC_VARIABLE_LENGTH,                      CARMEN_ARM_STATE_FMT);  carmen_test_ipc_exit(err, "Could not define", 		       CARMEN_ARM_STATE_NAME);  err = IPC_subscribe(CARMEN_ARM_COMMAND_NAME, arm_command_handler, NULL);  carmen_test_ipc_exit(err, "Could not subscribe", 		       CARMEN_ARM_COMMAND_NAME);  IPC_setMsgQueueLength(CARMEN_ARM_COMMAND_NAME, 1);  err = IPC_subscribe(CARMEN_ARM_QUERY_NAME, arm_query_handler, NULL);  carmen_test_ipc_exit(err, "Could not subscribe",                        CARMEN_ARM_QUERY_NAME);  IPC_setMsgQueueLength(CARMEN_ARM_QUERY_NAME, 100);}#endifstatic voidinitialize_sonar_message(carmen_base_sonar_message *sonar){  double sensor_angle;  carmen_param_set_module("robot");  carmen_param_get_double("sensor_angle", &sensor_angle, NULL);    sonar->cone_angle = sensor_angle;  sonar->timestamp = 0.0;  strncpy(sonar->host, odometry.host, 10);}static voidhandle_sonar_change(char *module __attribute__ ((unused)), 		    char *variable __attribute__ ((unused)), 		    char *value __attribute__ ((unused))){  int err;  if (use_sonar && !sonar_state) {    initialize_sonar_message(&sonar);    do {      num_sonar_ranges = carmen_base_direct_sonar_on();      if (num_sonar_ranges < 0)	initialize_robot();    }     while (num_sonar_ranges < 0);    ranges = (double *)calloc(num_sonar_ranges, sizeof(double));    carmen_test_alloc(ranges);    positions = (carmen_point_t *)      calloc(num_sonar_ranges, sizeof(carmen_point_t));    carmen_test_alloc(positions);    sonar_state = 1;  } else if (!use_sonar && sonar_state) {    if (ranges)       free(ranges);    if (positions)      free(positions);    do {      err = carmen_base_direct_sonar_off();      if (err < 0)	initialize_robot();    } while (err < 0);    sonar_state = 0;  } /* end of if (use_sonar && !sonar_state) ... else if (sonar_state) */}static intread_parameters(int argc, char **argv){  int num_items;  carmen_param_t param_list[] = {    {"base", "dev", CARMEN_PARAM_STRING, &dev_name, 0, NULL},    {"base", "model", CARMEN_PARAM_STRING, &model_name, 0, NULL},    {"base", "motion_timeout", CARMEN_PARAM_DOUBLE, &motion_timeout, 0, NULL},    {"base", "use_hardware_integrator", CARMEN_PARAM_ONOFF,      &use_hardware_integrator, 0, NULL},    {"robot", "odometry_inverted", CARMEN_PARAM_ONOFF, &odometry_inverted,      0, NULL},    {"robot", "use_sonar", CARMEN_PARAM_ONOFF, &use_sonar, 1,      handle_sonar_change},     {"robot", "acceleration", CARMEN_PARAM_DOUBLE,      &(robot_config.acceleration), 1, NULL},    {"robot", "deceleration", CARMEN_PARAM_DOUBLE,      &(deceleration), 1, NULL}};  carmen_param_t extra_params[] = {    {"base", "relative_wheelsize", CARMEN_PARAM_DOUBLE,      &relative_wheelsize, 0, NULL},    {"base", "relative_wheelbase", CARMEN_PARAM_DOUBLE,      &relative_wheelbase, 0, NULL},  };  num_items = sizeof(param_list)/sizeof(param_list[0]);  carmen_param_install_params(argc, argv, param_list, num_items);  if (use_sonar)    initialize_sonar_message(&sonar);  else    memset(&sonar, 0, sizeof(carmen_base_sonar_message));  if (!use_hardware_integrator) {    num_items = sizeof(extra_params)/sizeof(extra_params[0]);    carmen_param_install_params(argc, argv, extra_params, num_items);        }#ifdef BASE_HAS_ARM    initialize_arm_message();#endif  if (robot_config.acceleration > deceleration)     carmen_die("ERROR: robot_deceleration must be greater or equal than "	       "robot_acceleration\n");    return 0;}static void velocity_handler(MSG_INSTANCE msgRef, BYTE_ARRAY callData,		 void *clientData __attribute__ ((unused))){  IPC_RETURN_TYPE err;  carmen_base_velocity_message vel;  int base_err;  FORMATTER_PTR formatter;  formatter = IPC_msgInstanceFormatter(msgRef);  err = IPC_unmarshallData(formatter, callData, &vel,                     sizeof(carmen_base_velocity_message));  IPC_freeByteArray(callData);  carmen_test_ipc_return(err, "Could not unmarshall", 			 IPC_msgInstanceName(msgRef));  if(vel.tv == 0 && vel.rv == 0)     {      if (moving) 	{	  do 	    {	      base_err = carmen_base_direct_set_deceleration(deceleration);	      if (base_err < 0)		initialize_robot();	    } 	  while (base_err < 0);	  moving = 0;	}      carmen_warn("S");    }  else if (!moving)     {      moving = 1;      current_acceleration = robot_config.acceleration;      do 	{	  base_err = carmen_base_direct_set_acceleration(current_acceleration);	  if (base_err < 0)	    initialize_robot();	}       while (base_err < 0);      carmen_warn("V");    }    if (odometry_inverted)    vel.tv *= -1;  if (!use_hardware_integrator)    {      vel.tv /= relative_wheelsize;            vel.rv /= relative_wheelsize;      vel.rv /= relative_wheelbase;    }  do 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文av一区二区| 久久久午夜精品| 欧美电影在哪看比较好| 欧美三级韩国三级日本一级| 在线观看三级视频欧美| 欧美日韩高清影院| 欧美va亚洲va在线观看蝴蝶网| 久久亚洲综合av| 亚洲视频一区在线| 水野朝阳av一区二区三区| 黄色日韩三级电影| 97精品超碰一区二区三区| 欧美日免费三级在线| 亚洲美女在线国产| 久久99久国产精品黄毛片色诱| 国产不卡免费视频| 欧美日韩激情一区二区三区| 久久精品欧美日韩| 一区二区三区免费观看| 国产一区二区三区免费播放| 一本久久综合亚洲鲁鲁五月天 | 国产一区美女在线| 欧美日韩国产高清一区二区三区| 欧美精品高清视频| 亚洲精品中文在线| 国产91清纯白嫩初高中在线观看| 884aa四虎影成人精品一区| 国产精品久久毛片a| 国产美女一区二区| 欧美xingq一区二区| 亚洲妇女屁股眼交7| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美不卡视频一区| 亚洲国产精品一区二区尤物区| 成人午夜在线播放| 亚洲国产精品v| 欧美在线观看禁18| 亚洲一区二区不卡免费| 99久久er热在这里只有精品15 | 亚洲婷婷综合久久一本伊一区| 国产精品一品二品| 欧美极品美女视频| 91亚洲男人天堂| 亚洲同性gay激情无套| 日本韩国一区二区三区| 亚洲一区二区视频在线观看| 9191国产精品| 91丨九色丨国产丨porny| 中文字幕精品—区二区四季| 91麻豆产精品久久久久久| 亚洲成人激情av| 日韩一区二区电影| 成人高清av在线| 亚洲电影视频在线| 欧美国产一区在线| 欧美高清你懂得| 国产麻豆9l精品三级站| 亚洲精品日韩综合观看成人91| 欧美日韩dvd在线观看| 丰满白嫩尤物一区二区| 日韩国产在线观看一区| 国产精品久久久久一区| 日韩欧美成人激情| 欧美丝袜自拍制服另类| 国产suv精品一区二区三区| 亚洲午夜av在线| 三级欧美在线一区| 国产一区二区精品久久91| 亚洲主播在线观看| 极品少妇xxxx偷拍精品少妇| 亚洲一区自拍偷拍| 久久久久成人黄色影片| 欧美在线不卡一区| 97精品国产97久久久久久久久久久久 | 2023国产精华国产精品| 91蝌蚪porny| 国产精品亚洲一区二区三区妖精 | 一区二区三区在线看| 亚洲国产精品激情在线观看 | 狠狠色丁香婷综合久久| 日韩国产一区二| 天天色天天爱天天射综合| 艳妇臀荡乳欲伦亚洲一区| 国产精品理伦片| 一区在线观看免费| 亚洲午夜久久久久久久久电影网| 2022国产精品视频| 色综合久久久久综合| 欧美日韩成人在线| 中文字幕一区二区三区在线播放 | 午夜精彩视频在线观看不卡| 亚洲人快播电影网| 一区二区在线免费观看| 视频一区欧美精品| 蜜乳av一区二区| 成人三级伦理片| 欧美精品精品一区| 国产精品白丝在线| 一区二区三区国产豹纹内裤在线| 亚洲国产精品麻豆| 丁香天五香天堂综合| 在线免费视频一区二区| 精品久久久久久最新网址| 欧美国产日韩亚洲一区| 亚洲不卡av一区二区三区| 免费高清不卡av| 成人av在线网| 欧美成人vr18sexvr| 国产精品久久久久久久久动漫| 视频在线观看一区二区三区| 99精品久久免费看蜜臀剧情介绍| 日韩一区二区视频在线观看| 一区二区三区久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久亚洲欧美国产精品乐播| 九一久久久久久| 欧美成人一区二区三区在线观看| 亚洲bt欧美bt精品777| 菠萝蜜视频在线观看一区| 91精品在线免费| 亚洲成a人片在线不卡一二三区| 成人一区二区三区| 国产亚洲欧洲997久久综合| 久久精品国产一区二区三区免费看 | 国产精品理伦片| 99re成人精品视频| 亚洲天堂av一区| 欧美日韩午夜精品| 五月天激情综合| 欧美一区二区高清| 日韩av成人高清| 欧美精品一区二区在线观看| 黄色精品一二区| 欧美激情中文字幕一区二区| 国产成人午夜片在线观看高清观看| 欧美一二三四区在线| 国产精品资源在线观看| 亚洲国产精品传媒在线观看| eeuss国产一区二区三区| 亚洲三级免费观看| 日韩一级片网站| caoporn国产一区二区| 日韩va亚洲va欧美va久久| 久久综合给合久久狠狠狠97色69| 国产精品综合一区二区三区| 一区二区三区日韩精品| 欧美一级日韩免费不卡| 成人午夜又粗又硬又大| 蜜臀精品久久久久久蜜臀| 中文字幕欧美激情一区| 欧美美女直播网站| 国产精品1024| 视频一区二区三区在线| 国产精品天美传媒| 久久亚洲精品小早川怜子| 91极品美女在线| 国产福利精品一区| 日韩成人一级大片| 亚洲最大的成人av| 1024成人网色www| 久久久噜噜噜久噜久久综合| 91精品国产色综合久久不卡蜜臀 | 成人午夜在线视频| 精品影视av免费| 美女精品一区二区| 亚洲成国产人片在线观看| 亚洲黄色av一区| 自拍偷拍亚洲综合| 亚洲精品v日韩精品| 国产精品久久久久久久久晋中 | 国产日韩欧美在线一区| 日韩精品一区二区三区四区| 日韩精品资源二区在线| 日韩美女一区二区三区四区| 欧美一区二区精美| 亚洲精品在线免费播放| 久久一二三国产| 欧美精品一区二区三区蜜桃| 精品国内二区三区| 亚洲国产精品v| **欧美大码日韩| 一区二区激情小说| 日本成人在线一区| 韩国精品久久久| 91蝌蚪porny成人天涯| 欧美网站大全在线观看| 91精品啪在线观看国产60岁| 日韩视频在线一区二区| 中文字幕精品一区| 亚洲国产欧美在线| 国产一区二区美女| 色呦呦日韩精品| 日韩欧美国产wwwww| 中文字幕在线观看不卡视频| 最新国产成人在线观看| 奇米888四色在线精品| 成人教育av在线| 337p亚洲精品色噜噜狠狠| 自拍偷在线精品自拍偷无码专区 | 高清不卡在线观看av|