stochri
05.01.2006, 21:00
Hallo Miteinander
Für die Fernstuerung des Asuro schien mir folgender Weg am einfachsten:
echo 1 > /dev/ttyUSB0
Damit wird eine 1 an den Asuro via USB-Adapter gesendet und der Asuro bewegt sich einen Schritt vorwärts.
Als Kommandos habe ich einfach die Zahlen von 1 bis 4 für alle Richtungen verwendet.
Das ganze läßt sich in ein Script verpacken.
#!/bin/bash
echo 4 > /dev/ttyUSB0
Jetzt kann man den asuro aus der Kommandozeile mit ./asuro_vor steuern.
Bis jetzt muss ich allerdings immer noch mindesten einmal minicom aufrufen, damit es mir die richtigen Schnittstellenparameter einstellt. Kann mir vielleicht jemand sagen wie das ganze mit setserial aussehen muss?
Hier noch das ASURO-Programm, falls noch jemand den Roboter über Linux steuern will:
#include "asuro.h"
/************************************************** ***********************
Asuro Remote Control by Linux
To controll the robot you can use minicom.
The following keys are defined:
'1': vorward
'2': backward
'3': turn left
'4': turn right
You may also send a comand by the linux shell:
(e.g. go vorward )
echo 1 > /dev/ttyUSB0
make shure that the tty-parameters are set to 24008N1 no handshake
Vers.: 1.0
5.1.2006 stochri
************************************************** ************************/
typedef unsigned char byte;
#define aus MotorDir(BREAK,BREAK)
byte chgetchar()
{
UCSRB = 0x10; // enable receiver
while(!(UCSRA & 0x80)); // wait for received byte
return UDR;
}
void main()
{
byte command,n;
Init();
SerWrite("\n\r-- ASURO-Linux-Com --\n\r",25);
MotorSpeed(160,160);
aus;
while(1)
{
/* Warten auf ein Kommando der seriellen Schnittstelle */
command = chgetchar();
switch(command)
{
case '1':
{
MotorDir(FWD,FWD);
Msleep(100);
aus;
}
break;
case '2':
{
MotorDir(RWD,RWD);
Msleep(100);
aus;
}
break;
case '3':
{
MotorDir(RWD,FWD);
Msleep(50);
aus;
}
break;
case '4':
{
MotorDir(FWD,RWD);
Msleep(50);
aus;
}
break;
default:
{
}break;
}
}
return 0;
}
/************************************************** *************************
*
* (c) 2006 stochri
*
************************************************** *************************
* 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 *
* any later version. *
************************************************** *************************/
Gruss,
stochri
Für die Fernstuerung des Asuro schien mir folgender Weg am einfachsten:
echo 1 > /dev/ttyUSB0
Damit wird eine 1 an den Asuro via USB-Adapter gesendet und der Asuro bewegt sich einen Schritt vorwärts.
Als Kommandos habe ich einfach die Zahlen von 1 bis 4 für alle Richtungen verwendet.
Das ganze läßt sich in ein Script verpacken.
#!/bin/bash
echo 4 > /dev/ttyUSB0
Jetzt kann man den asuro aus der Kommandozeile mit ./asuro_vor steuern.
Bis jetzt muss ich allerdings immer noch mindesten einmal minicom aufrufen, damit es mir die richtigen Schnittstellenparameter einstellt. Kann mir vielleicht jemand sagen wie das ganze mit setserial aussehen muss?
Hier noch das ASURO-Programm, falls noch jemand den Roboter über Linux steuern will:
#include "asuro.h"
/************************************************** ***********************
Asuro Remote Control by Linux
To controll the robot you can use minicom.
The following keys are defined:
'1': vorward
'2': backward
'3': turn left
'4': turn right
You may also send a comand by the linux shell:
(e.g. go vorward )
echo 1 > /dev/ttyUSB0
make shure that the tty-parameters are set to 24008N1 no handshake
Vers.: 1.0
5.1.2006 stochri
************************************************** ************************/
typedef unsigned char byte;
#define aus MotorDir(BREAK,BREAK)
byte chgetchar()
{
UCSRB = 0x10; // enable receiver
while(!(UCSRA & 0x80)); // wait for received byte
return UDR;
}
void main()
{
byte command,n;
Init();
SerWrite("\n\r-- ASURO-Linux-Com --\n\r",25);
MotorSpeed(160,160);
aus;
while(1)
{
/* Warten auf ein Kommando der seriellen Schnittstelle */
command = chgetchar();
switch(command)
{
case '1':
{
MotorDir(FWD,FWD);
Msleep(100);
aus;
}
break;
case '2':
{
MotorDir(RWD,RWD);
Msleep(100);
aus;
}
break;
case '3':
{
MotorDir(RWD,FWD);
Msleep(50);
aus;
}
break;
case '4':
{
MotorDir(FWD,RWD);
Msleep(50);
aus;
}
break;
default:
{
}break;
}
}
return 0;
}
/************************************************** *************************
*
* (c) 2006 stochri
*
************************************************** *************************
* 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 *
* any later version. *
************************************************** *************************/
Gruss,
stochri