Player
Frontpage
Contents
User
Installation
Quick start
Supported devices
Tutorials
Utilities
Client libraries
FAQ
Help
Developer
Architecture
libplayercore
interfaces
libplayerdrivers
drivers
libplayercommon
libplayerutils
libplayersd
libplayertcp
libplayerxdr
TODO
Online
Homepage
Download
Project
Bugs
Help
server
drivers
mixed
botrics
obot_constants.h
1
/*
2
* Player - One Hell of a Robot Server
3
* Copyright (C) 2000-2003
4
* Brian Gerkey
5
*
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*
21
*/
22
23
/*
24
* $Id: obot_constants.h 3308 2005-12-09 01:25:10Z gerkey $
25
*
26
* Relevant constants for the so-called "Trogdor" robots, by Botrics.
27
* These values are taken from the 'cerebellum' module of CARMEN; thanks to
28
* the authors of that module.
29
*/
30
31
#include <math.h>
32
33
#define OBOT_DEFAULT_PORT "/dev/usb/ttyUSB1"
34
35
// might need to define a longer delay to wait for acks
36
#define OBOT_DELAY_US 50000
37
38
// time between consecutive publishes
39
#define OBOT_PUBLISH_INTERVAL 0.1
40
41
/************************************************************************/
42
/* Physical constants, in meters, radians, seconds (unless otherwise noted) */
43
#define OBOT_AXLE_LENGTH 0.317
44
#define OBOT_WHEEL_DIAM 0.10795
/* 4.25 inches */
45
#define OBOT_WHEEL_CIRCUM (OBOT_WHEEL_DIAM * M_PI)
46
#define OBOT_TICKS_PER_REV 11600.0
47
#define OBOT_M_PER_TICK (OBOT_WHEEL_CIRCUM / OBOT_TICKS_PER_REV)
48
/* the new internal PID loop runs every 1.9375ms (we think) */
49
#define OBOT_PID_FREQUENCY (1/1.9375e-3)
50
#define OBOT_MAGIC_TIMING_CONSTANT 1.0
51
#define OBOT_MPS_PER_TICK (OBOT_M_PER_TICK * OBOT_PID_FREQUENCY / \
52
OBOT_MAGIC_TIMING_CONSTANT)
53
#define OBOT_WIDTH 0.45
54
#define OBOT_LENGTH 0.45
55
#define OBOT_POSE_X 0.0
56
#define OBOT_POSE_Y 0.0
57
#define OBOT_POSE_A 0.0
58
#define OBOT_NOMINAL_VOLTAGE 48.0
59
60
/* assuming that the counts can use the full space of a signed 32-bit int */
61
#define OBOT_MAX_TICS 2147483648U
62
63
/* for safety */
64
//#define OBOT_MAX_WHEELSPEED 1.0
65
#define OBOT_MAX_WHEELSPEED 5.0
66
67
/* to account for our bad low-level PID motor controller */
68
#define OBOT_MIN_WHEELSPEED_TICKS 5
69
70
/************************************************************************/
71
/* Comm protocol values */
72
#define OBOT_ACK 6 // if command acknowledged
73
#define OBOT_NACK 21 // if garbled message
74
75
#define OBOT_INIT1 253 // The init commands are used in sequence(1,2,3)
76
#define OBOT_INIT2 252 // to initialize a link to a cerebellum.
77
#define OBOT_INIT3 251 // It will then blink green and start accepting other
78
// commands.
79
80
#define OBOT_DEINIT 250
81
82
#define OBOT_SET_VELOCITIES 118 // 'v'(left_vel, right_vel) as 16-bit signed ints
83
#define OBOT_SET_ACCELERATIONS 97 // 'a'(left_accel, right_accel) as 16-bit unsigned ints
84
#define OBOT_ENABLE_VEL_CONTROL 101 // 'e'()
85
#define OBOT_DISABLE_VEL_CONTROL 100 // 'd'()
86
#define OBOT_GET_ODOM 111 // 'o'()->(left_count, right_count, left_vel, right_vel)
87
#define OBOT_GET_VOLTAGE 98 // 'b'()->(batt_voltage)
88
#define OBOT_STOP 115 // 's'() [shortcut for set_velocities(0,0)]
89
#define OBOT_KILL 107 // 'k'() [shortcut for disable_velocity_control]
90
#define OBOT_HEARTBEAT 104 // 'h'() sends keepalive
91
/************************************************************************/
92
93
Last updated 12 September 2005 21:38:45