Develop and Download Open Source Software

Browse Subversion Repository

Contents of /simulator/TestBodyPosition.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 139 - (show annotations) (download) (as text)
Sun Nov 11 00:44:41 2007 UTC (16 years, 5 months ago) by satofumi
File MIME type: text/x-c++src
File size: 3884 byte(s)
fix sh7045/crt0.S

1 /*!
2 \file
3 \brief bodyPosition.c ‚̃eƒXƒg
4
5 \author Satofumi KAMIMURA
6
7 $Id$
8 */
9
10 #include "TestBodyPosition.h"
11 #include "structTable.h"
12 #include "tRunCtrl.h"
13
14
15 CPPUNIT_TEST_SUITE_REGISTRATION(BodyPositionTest);
16 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BodyPositionTest, "BodyPositionTest");
17
18
19 void BodyPositionTest::initializeTest(void) {
20
21 tRunCtrl_t run;
22 for (int i = 0; i < 2; ++i) {
23 initWheelInfo(i, &run.bodyCtrl.wheels[i]);
24 }
25 initBodyPosition(&run.bodyPosition, run.bodyCtrl.wheels);
26
27 for (int i = 0; i < 2; ++i) {
28 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.km[i]));
29 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.m[i]));
30 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.mm[i]));
31 }
32 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.div16));
33 }
34
35
36 void BodyPositionTest::straightTest(void) {
37
38 tRunCtrl_t run;
39 for (int i = 0; i < 2; ++i) {
40 initWheelInfo(i, &run.bodyCtrl.wheels[i]);
41 }
42 initBodyCtrl(&run.bodyCtrl);
43
44 // ‘O�i‚·‚é‚©‚̃eƒXƒg
45 initBodyPosition(&run.bodyPosition, run.bodyCtrl.wheels);
46 for (int j = 0; j < 1000; ++j) {
47 for (int i = 0; i < 2; ++i) {
48 setWheelVel(&run.bodyCtrl.wheels[i], 300);
49 updateEncoderInfo(&run.bodyCtrl.wheels[i].motor.encoder);
50 }
51 updatePositionInfo(&run.bodyPosition, run.bodyCtrl.wheels);
52 }
53
54 mmPosition_t mm_position;
55 convertMmCoordinate(&mm_position, &run.bodyPosition.robot);
56 CPPUNIT_ASSERT_DOUBLES_EQUAL(300, static_cast<int>(mm_position.mm[X]), 0.0);
57 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[Y]), 0.0);
58 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.div16));
59
60 // Œã�i‚·‚é‚©‚̃eƒXƒg
61 initBodyPosition(&run.bodyPosition, run.bodyCtrl.wheels);
62 for (int j = 0; j < 1000; ++j) {
63 for (int i = 0; i < 2; ++i) {
64 setWheelVel(&run.bodyCtrl.wheels[i], -300);
65 updateEncoderInfo(&run.bodyCtrl.wheels[i].motor.encoder);
66 }
67 updatePositionInfo(&run.bodyPosition, run.bodyCtrl.wheels);
68 }
69
70 convertMmCoordinate(&mm_position, &run.bodyPosition.robot);
71 CPPUNIT_ASSERT_DOUBLES_EQUAL(-300, static_cast<int>(mm_position.mm[X]), 0.0);
72 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[Y]), 0.0);
73 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(run.bodyPosition.robot.div16));
74 }
75
76
77 void BodyPositionTest::rotateTest(void) {
78
79 tRunCtrl_t run;
80 for (int i = 0; i < 2; ++i) {
81 initWheelInfo(i, &run.bodyCtrl.wheels[i]);
82 }
83 initBodyCtrl(&run.bodyCtrl);
84
85 // �¶�ù‰ñ‚·‚é‚©‚̃eƒXƒg
86 initBodyPosition(&run.bodyPosition, run.bodyCtrl.wheels);
87 setWheelVel(&run.bodyCtrl.wheels[LEFT], -300);
88 setWheelVel(&run.bodyCtrl.wheels[RIGHT], 300);
89 for (int i = 0; i < 2; ++i) {
90 updateEncoderInfo(&run.bodyCtrl.wheels[i].motor.encoder);
91 }
92 updatePositionInfo(&run.bodyPosition, run.bodyCtrl.wheels);
93
94 mmPosition_t mm_position;
95 convertMmCoordinate(&mm_position, &run.bodyPosition.robot);
96 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[X]), 1.0);
97 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[Y]), 1.0);
98 CPPUNIT_ASSERT(static_cast<int>(run.bodyPosition.robot.div16) > 0);
99 // !!! Žw’èŠp“x‚¾‚¯‚©�H ‚̃eƒXƒg‚É•Ï�X
100
101 // ‰E�ù‰ñ‚·‚é‚©‚̃eƒXƒg
102 initBodyPosition(&run.bodyPosition, run.bodyCtrl.wheels);
103 setWheelVel(&run.bodyCtrl.wheels[LEFT], 300);
104 setWheelVel(&run.bodyCtrl.wheels[RIGHT], -300);
105 for (int i = 0; i < 2; ++i) {
106 updateEncoderInfo(&run.bodyCtrl.wheels[i].motor.encoder);
107 }
108 updatePositionInfo(&run.bodyPosition, run.bodyCtrl.wheels);
109 convertMmCoordinate(&mm_position, &run.bodyPosition.robot);
110 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[X]), 1.0);
111 CPPUNIT_ASSERT_DOUBLES_EQUAL(0, static_cast<int>(mm_position.mm[Y]), 1.0);
112 CPPUNIT_ASSERT(static_cast<int>(run.bodyPosition.robot.div16) > 32768);
113 // !!! Žw’èŠp“x‚¾‚¯‚©�H ‚̃eƒXƒg‚É•Ï�X
114 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26