⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_position.cc

📁 机器人仿真平台,和stage配合运行
💻 CC
字号:
/* * $Id: test_position.cc,v 1.8.2.2 2003/05/23 21:23:44 gerkey Exp $ * * a test for the C++ PositionProxy */#include "playerclient.h"#include "test.h"#include <unistd.h>inttest_position(PlayerClient* client, int index){  unsigned char access;  PositionProxy pp(client,index,'c');  printf("device [position] index [%d]\n", index);  TEST("subscribing (read/write)");  if((pp.ChangeAccess(PLAYER_ALL_MODE,&access) < 0) ||     (access != PLAYER_ALL_MODE))  {    FAIL();    printf("DRIVER: %s\n", pp.driver_name);    printf("access:%d\n", access);    return -1;  }  PASS();  printf("DRIVER: %s\n", pp.driver_name);  // wait for P2OS to start up  for(int i=0;i<20;i++)    client->Read();  for(int t = 0; t < 3; t++)  {    TEST1("reading data (attempt %d)", t);    if(client->Read() < 0)    {      FAIL();      return(-1);    }    PASS();    pp.Print();  }  const int ox = 100, oy = -200;  const unsigned short oa = 180;    TEST("Setting odometry" );  if( pp.SetOdometry(ox, oy, oa) < 0 )    {      FAIL();      return(-1);    }    printf("\n - initial \t[%d %d %u]\n"	 " - requested \t[%d %d %u]\n", 	 pp.xpos, pp.ypos, pp.theta, 	 ox, oy, oa );      for( int s=0; s<10; s++ )    {      client->Read();      printf( " - reading \t[%d %d %u]\r", 	      pp.xpos, pp.ypos, pp.theta );      fflush(stdout);    }    puts("");  if( pp.xpos != ox || pp.ypos != oy || pp.theta != oa )    {      FAIL();      //return(-1);    }  else    PASS();    TEST("resetting odometry");  if(pp.ResetOdometry() < 0)  {    FAIL();    return(-1);  }  sleep(1);  PASS();  TEST("enabling motors");  if(pp.SetMotorState(1) < 0)  {    FAIL();    return(-1);  }  PASS();  TEST("moving forward");  if(pp.SetSpeed(100,0) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("moving backward");  if(pp.SetSpeed(-100,0) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("moving left");  if(pp.SetSpeed(0,100,0) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("moving right");  if(pp.SetSpeed(0,-100,0) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("turning right");  if(pp.SetSpeed(0,-25) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("turning left");  if(pp.SetSpeed(0,25) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("moving left and anticlockwise (testing omnidrive)");  if( pp.SetSpeed( 0, 100, 45 ) < 0 )    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("moving right and clockwise (testing omnidrive)");  if( pp.SetSpeed( 0, -100, -45 ) < 0 )    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("stopping");  if(pp.SetSpeed(0,0) < 0)    {      FAIL();      return(-1);    }  sleep(3);  PASS();  TEST("disabling motors");  if(pp.SetMotorState(0) < 0)  {    FAIL();    return(-1);  }  sleep(1);  PASS();  TEST("changing to separate velocity control");  if(pp.SelectVelocityControl(1) < 0)  {    FAIL();    return(-1);  }  sleep(1);  PASS();  TEST("changing to direct wheel velocity control");  if(pp.SelectVelocityControl(0) < 0)  {    FAIL();    return(-1);  }  sleep(1);  PASS();  TEST("resetting odometry");  if(pp.ResetOdometry() < 0)  {    FAIL();    return(-1);  }  sleep(1);  PASS();  TEST("unsubscribing");  if((pp.ChangeAccess(PLAYER_CLOSE_MODE,&access) < 0) ||     (access != PLAYER_CLOSE_MODE))  {    FAIL();    return -1;  }  PASS();  return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -