summaryrefslogtreecommitdiff
path: root/digital/io/src/bot.h
blob: 6c4559061ac55707b426b07361be9a554a4a2db1 (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#ifndef bot_h
#define bot_h
/* bot.h */
/* io - Input & Output with Artificial Intelligence (ai) support on AVR. {{{
 *
 * Copyright (C) 2010 Nicolas Schodet
 *
 * APBTeam:
 *        Web: http://apbteam.org/
 *      Email: team AT apbteam DOT org
 *
 * 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.
 *
 * }}} */

/**
 * Specific defines about the robot dimensions and competion rules.
 */

/**
 * Duration of a match in milliseconds, with margin.
 */
#define MATCH_DURATION_MS (90000 - 2500)

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

/** Distance from the robot axis to the front. */
#define BOT_SIZE_FRONT 120
/** Distance from the robot axis to the front clamp. */
#define BOT_SIZE_FRONT_CLAMP (120 + 100)
/** Distance from the robot axis to the back. */
#define BOT_SIZE_BACK (280 - 120)
/** Distance from the robot axis to the side. */
#define BOT_SIZE_SIDE (310 / 2)
/** Distance from the robot axis to farthest corner, this is the radius of the
 * circle needed when rotating. */
#define BOT_SIZE_RADIUS 196

/** Start position. */
#define BOT_INIT_XYA \
    PG_X (PG_START_ZONE_WIDTH - BOT_SIZE_RADIUS), \
    PG_Y (PG_LENGTH - PG_START_ZONE_LENGTH + BOT_SIZE_RADIUS), \
    PG_A_DEG (-76)

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

/** Fast parameters. */
#define BOT_MOVE_FAST 0x30, 0x30, 0x20, 0x20

/** Slow parameters. */
#define BOT_MOVE_SLOW 0x20, 0x20, 0x10, 0x10

/** Elevator stroke in steps. */
#define BOT_ELEVATOR_STROKE_STEP 7089

/** Elevator unloading up position in steps. */
#define BOT_ELEVATOR_UNLOAD_STEP 5600

/** Elevator resting up position in steps. */
#define BOT_ELEVATOR_REST_STEP 4111

/** Elevator down position in steps. */
#define BOT_ELEVATOR_DOWN_STEP 60

/** Elevator work speed. */
#define BOT_ELEVATOR_SPEED 0x60

/** Elevator find zero speed. */
#define BOT_ELEVATOR_ZERO_SPEED 0x10

/** Clamp stroke in steps. */
#define BOT_CLAMP_STROKE_STEP 2813

/** Clamp open position in steps. */
#define BOT_CLAMP_OPEN_STEP 60

/** Clamp width in steps. */
#define BOT_CLAMP_WIDTH_STEP 4604

/** Distance under which the clamp is considered empty. */
#define BOT_CLAMP_EMPTY_STEP 639

/** Clamp work speed. */
#define BOT_CLAMP_SPEED 0x60

/** Clamp find zero speed. */
#define BOT_CLAMP_ZERO_SPEED 0x10

/** Clamp open loop PWM. */
#define BOT_CLAMP_PWM 0x100

/** Gate work speed. */
#define BOT_GATE_SPEED 0x46

/** Gate stroke in steps. */
#define BOT_GATE_STROKE_STEP -0x1d6b

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

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

#endif /* bot_h */