summaryrefslogtreecommitdiffhomepage
path: root/digital/io/src/giboulee.h
blob: 88828a2a6a79af22b97f6228af19389e1cc03b45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#ifndef giboulee_h
#define giboulee_h
// giboulee.h
// io - Input & Output with Artificial Intelligence (ai) support on AVR. {{{
//
// Copyright (C) 2008 Dufour Jérémy
//
// Robot APB Team/Efrei 2004.
//        Web: http://assos.efrei.fr/robot/
//      Email: robot AT efrei DOT fr
//
// This program 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.
// 
// This program 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 this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// }}}

/**
 * @file Some defines for the bot itself.
 * In this header file, you can find some configuration value for the length
 * of a step when the bot is moving for example.
 */

/**
 * The speed of the arm.
 * It is expressed in number of steps by asserv board cycle (4.44ms).
 */
#define BOT_ARM_SPEED 8

/**
 * The number of step of a whole rotation.
 */
#define BOT_ARM_STEP_ROUND 5000

/**
 * Number of step to make a third of a round.
 */
#define BOT_ARM_THIRD_ROUND (BOT_ARM_STEP_ROUND / 3)

/**
 * The number of steps to do to open the input hole when the arm is closing
 * it.
 * For the moment, 30 degree.
 */
#define BOT_ARM_MIN_TO_OPEN (BOT_ARM_STEP_ROUND * 30L / 360)

/**
 * Steps number relative to the beginning of a third round for the 'noted'
 * position required by the get sample FSM.
 */
#define BOT_ARM_NOTED_POSITION (BOT_ARM_THIRD_ROUND - 100)

/**
 * How to compute a angle for giboulee?
 * One degree is 65536 / 360
 */
#define BOT_ANGLE_DEGREE (65536 / 360)

/**
 * The scaling factor, millimeter per step.
 */
#ifdef HOST
# define BOT_SCALE 0.0395840674352314
#else
# define BOT_SCALE 0.0413530725332892
#endif

/**
 * Distance required to be away from a border to be able to turn freely.
 * In millimeter.
 */
#define BOT_MIN_DISTANCE_TURN_FREE 300

/**
 * Definition of the colors.
 */
enum team_color_e
{
    RED_TEAM = 0,
    BLUE_TEAM = 1
};

/**
 * Our color.
 */
extern enum team_color_e bot_color;

#endif // giboulee_h