00001 /* 00002 * This file is part of the libomnidrive project. 00003 * 00004 * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> 00005 * Ingo Kresse <kresse@in.tum.de> 00006 * 00007 * This program is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 2 of the License, or 00010 * (at your option) any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this program; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 */ 00021 00022 #ifndef OMNIDRIVE_H 00023 #define OMNIDRIVE_H 00024 00025 typedef struct { 00026 int slave_state[4]; 00027 int slave_online[4]; 00028 int slave_operational[4]; 00029 int master_link; 00030 int master_al_states; 00031 int master_slaves_responding; 00032 int working_counter; 00033 int working_counter_state; 00034 } commstatus_t; 00035 00036 int omnidrive_init(void); 00037 int omnidrive_drive(double x, double y, double a); 00038 void omnidrive_set_correction(double drift); 00039 int omnidrive_odometry(double *x, double *y, double *a); 00040 int omnidrive_shutdown(void); 00041 00042 void omnidrive_status(char *drive0, char *drive1, char *drive2, char *drive3, int *estop); 00043 00044 commstatus_t omnidrive_commstatus(); 00045 00046 void omnidrive_poweron(); 00047 void omnidrive_poweroff(); 00048 void omnidrive_recover(); 00049 00050 #endif