111 lines
5 KiB
C
111 lines
5 KiB
C
/*
|
|
* c't-Sim - Robotersimulator fuer den c't-Bot
|
|
*
|
|
* 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 bot-local.h
|
|
* @brief Konstanten, die den Bot an reale Umgebungen anpassen
|
|
* @author Benjamin Benz (bbe@heise.de)
|
|
* @author Christoph Grimmer (c.grimmer@futurio.de)
|
|
* @date 28.02.06
|
|
*/
|
|
|
|
#ifndef BOTLOCAL_H_
|
|
#define BOTLOCAL_H_
|
|
|
|
#include "ct-Bot.h"
|
|
|
|
#define ENCODER_MARKS 60 /*!< Anzahl der Flanken, die ein Encoder bei einer Radumdrehung liefert, also Anzahl der weissen + Anzahl der schwarzen Felder */
|
|
#define WHEEL_DIAMETER 57 /*!< Durchmesser eines Rades in mm */
|
|
#define WHEEL_PERIMETER 179 /*!< Umfang eines Rades in mm */
|
|
#define WHEEL_TO_WHEEL_DIAMETER 97 /*!< Abstand der beiden Raeder in mm */
|
|
|
|
#define DISTSENSOR_POS_FW 35 /*!< Abstand der Distanzsensoren von der Radachse (in fahrtrichtung)*/
|
|
#define DISTSENSOR_POS_SW 32 /*!< Abstand der Distanzsensoren von der Mittelachse (in querrichtung)*/
|
|
|
|
#define SPEED_CONTROL_INTERVAL 333 /*!> Intervall fuer die Motorregelung [ms]*/
|
|
|
|
//#define SPEED_TO_ENCODER_RATE (WHEEL_PERIMETER /ENCODER_MARKS*(1000/SPEED_CONTROL_INTERVAL)) /*!< Faktor durch den man eine Speed [mm/s] teilt um Ticks/intervall zu erhalten */
|
|
#define SPEED_TO_ENCODER_RATE 9 /*!< Faktor durch den man eine Speed [mm/s] teilt um Ticks/intervall zu erhalten */
|
|
|
|
/* Odometrie-Konstanten */
|
|
//#define MOUSE_CPI 401 /*!< CPI-Wert aus Kalibrierung */
|
|
//#define MOUSE_FULL_TURN 1430 /*!< Mausaenderung in X-Richtung fuer einen vollen Kreis */
|
|
#define MOUSE_CPI 400 /*!< CPI-Wert aus Kalibrierung (Wert fuer den Sim) */
|
|
#define MOUSE_FULL_TURN 1484 /*!< Mausaenderung in X-Richtung fuer einen vollen Kreis (Wert fuer den Sim) */
|
|
|
|
#define WHEEL_DISTANCE 49 /*!< Abstand eines Rades zur Mitte des Bots */
|
|
#define STUCK_DIFF 100 /*!< ab welcher Differenz haben wir durchdrehende Raeder? */
|
|
#define G_SPEED 0.5 /*!< Kopplung Encoder- und Maussensor fuer Geschwindigkeiten (0.0=nur Radencoder, 1.0=nur Maussensor) */
|
|
#define G_POS 0.5 /*!< Kopplung Encoder- und Maussensor fuer Positionen und Winkel (0.0=nur Radencoder, 1.0=nur Maussensor) */
|
|
|
|
/*! Hilfskonstante */
|
|
#define ANGLE_CONSTANT (WHEEL_TO_WHEEL_DIAMETER * ENCODER_MARKS / WHEEL_DIAMETER)
|
|
|
|
/* Motorregelung */
|
|
#define PID_LOW_RATE (BOT_SPEED_MEDIUM / SPEED_TO_ENCODER_RATE) /*!< Encoder-rate/aufruf, fuer den dieser PID-Satz gilt */
|
|
#define PID_LOW_Kp 8 /*!< Regelung PID-Parameter [Zehntel Schritte] */
|
|
#define PID_LOW_Ki 6 /*!< Regelung PID-Parameter [Zehntel Schritte] */
|
|
#define PID_LOW_Kd 0 /*!< Regelung PID-Parameter */
|
|
|
|
#define PID_HIGH_RATE (BOT_SPEED_NORMAL / SPEED_TO_ENCODER_RATE) /*!< Encoder-rate/aufruf, fuer den dieser PID-Satz gilt */
|
|
#define PID_HIGH_Kp 70 /*!< Regelung PID-Parameter [Zehntel Schritte] */
|
|
#define PID_HIGH_Ki 40 /*!< Regelung PID-Parameter [Zehntel Schritte] */
|
|
#define PID_HIGH_Kd 0 /*!< Regelung PID-Parameter */
|
|
|
|
/* Einstellunge fuer die Verhaltensregeln */
|
|
#define BORDER_DANGEROUS 0x3A0 /*!< Wert, ab dem wir sicher sind, dass es eine Kante ist */
|
|
|
|
|
|
#define GLANCE_FACTOR 0.9 /*!< Schlangenlinienfaktor zur Erweiterung des Sensorfeldes */
|
|
#define GLANCE_STRAIGHT 20 /*!< Anzahl der Zyklen, die nicht geschielt wird Gesamtzahl der Zyklen ist GLANCE_STRAIGHT + GLANCE_SIDE*4 */
|
|
#define GLANCE_SIDE 5 /*!< Anzahl der Zyklen, die geschielt wird (jeweils pro Seite) Gesamtzahl der Zyklen ist GLANCE_STRAIGHT + GLANCE_SIDE*4 */
|
|
|
|
|
|
|
|
#define COL_CLOSEST 200 /*!< Abstand in mm, den wir als zu nah betrachten -- je nach echtem Sensor ist das schon zu nah! */
|
|
#define COL_NEAR 300 /*!< Nahbereich */
|
|
#define COL_FAR 400 /*!< Fernbereich */
|
|
|
|
|
|
|
|
#define SWEEP_STATE_TURN 0 /*!< Zustand: Drehung im Sweep. */
|
|
#define SWEEP_STATE_CHECK 1 /*!< Zustamd: Ueberpruefe Objekt vor dem Bot. */
|
|
|
|
/* Zustaende und Konstanten fuer das bot_solve_maze_behaviour-Verhalten */
|
|
#define BOT_DIAMETER 12
|
|
#define OPTIMAL_DISTANCE BOT_DIAMETER*12 /* etwas mehr als Bot-Durchmesser ist ideal (vergroessert aufgrund der kennlinien der sharps) */
|
|
#define ADJUST_DISTANCE 10
|
|
#define IGNORE_DISTANCE 240
|
|
#define GROUND_GOAL 0x221
|
|
#define STARTPAD1 0x2B2
|
|
#define STARTPAD2 0x332
|
|
|
|
|
|
/* Konstanten fuer das bot_follow_line_behaviour-Verhalten */
|
|
#define LINE_SENSE 0x350 // Ab wann ist es Linie? (Fuer den Sim auf 350 setzen, helle Tischflaeche 50)
|
|
|
|
|
|
/* Konstanten fuer Verhaltensanzeige, Verhalten mit prio von bis sichtbar */
|
|
#define PRIO_VISIBLE_MIN 3
|
|
#define PRIO_VISIBLE_MAX 200
|
|
|
|
|
|
|
|
|
|
|
|
#endif /*BOTLOCAL_H_*/
|