PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umgebungsabbildung mit UltrschallSensoren



Freak10
29.04.2010, 08:45
Hallo,

ich habe vor mit Ultraschall Sensoren ein Bild der Umgebung zu erhalten.
So zusagen eine Kamera zu bauen, die Ultraschall nutzt um ein Bild zu erhalten.
Sie muss das Bild nur an den Computer oder an einen Fernseher liefern.

Wäre echt super wenn ihr mir bei der Realisierung helfen könntet.

_|Alex|_
29.04.2010, 09:59
wie wilste den ein Bild daraus bekommen?

MeckPommER
29.04.2010, 10:05
Da die meisten Ultraschall-Sensoren einen recht großen Erfassungswinkel haben, dürfte es ein sehr unschaftes Bild werden.

Wo konkret hast du denn Fragen? Wie ist dein Wissensstand?

Ansonsten: US-Sender und Empfänger auf 2 Servos, Atmega steuert die Servos und wertet US-Laufzeiten aus und gibt die Daten auf einer rs232 an den PC weiter ... so mal ganz grob ;-)

Gruß MeckPommER

Chaosmann
29.04.2010, 19:37
Hi Freak10,

mit etwas Mathe geht das schon bis zu einem gewissen Grad an Genauigkeit UND Wahrscheinlichkeit.
Wie MeckPommER es schon gesagt hat: US-Sensoren erfassen nicht einen einzelnen Punkt, sonder dern Abstand zu einem Objekt, dass sich irgendwo auf einem Kreissegment von x Grad befindet.

Hier mal der Code, wie ich es auf meinem RoBoard unter Linux mit einem SRF10 gelöst habe:

[php:1:bb6f7b2aae]
--- geschrieben in C++ ---

void *ThreadSRF( void *ptr ) {
/* VAR-DEF */
int x, y;
float temp_distance, temp_angle, temp;
int PWM_period = 20000; // period in us
int angle_min = 40; // max right
int angle_max = 140; // max leftt
int angle=angle_min; // new position
int angle_new;
int diff = 5; // angle between measurements
int count = 10; // period count
bool direction=true;
char data[152][51] = {0};

/* INIT-Servo */
rcservo_SendPWMPulses( SRF_SERVO_CHANNEL, PWM_period, angle_min/0.1125+650, 100 );
usleep(200000);

/* MAIN */
while ( true )
{
SRF08_Start( SRF08ADDRESS, SRF08MODE );
usleep( 70000 );
if ( (direction==true && angle<angle_max) || angle<=angle_min ) {
angle_new = angle + diff;
direction = true;
}
else {
angle_new = angle - diff;
direction = false;
}
rcservo_SendPWMPulses( SRF_SERVO_CHANNEL, PWM_period, angle/0.1125+650, count );
temp = SRF08_ReadEcho( SRF08ADDRESS, 1, SRF08MODE );
// draw Map
for ( y=1; y<=50; y++) {
for ( x=1; x<=151; x++ ) {
temp_distance = sqrt( (-x*15+1132.5)*(-x*15+1132.5) + (1200-y*24)*(1200-y*24) );
temp_angle = atan2( (-x*15+1132.5), (1200-y*24) ) *180/M_PI + 90;
if ( (temp_distance > temp) && (temp_angle > angle-15) && (temp_angle < angle+15) )
data[x][y] = min( data[x][y]+1, 9 );
else if ( (temp_angle > angle-15) && (temp_angle < angle+15) )
data[x][y] = max( data[x][y]-1, 0 );
if (x>20 && x<130 && y>21 ) {
GotoXY(x-20,y-8);
switch (data[x][y]) {
case 1:
case 2:
printf("%s %s", COLOR[GREEN], COLOR[BLACK]);
break;
case 3:
case 4:
case 5:
printf("%s %s", COLOR[YELLOW], COLOR[BLACK]);
break;
case 6:
case 7:
case 8:
case 9:
printf("%s %s", COLOR[RED], COLOR[BLACK]);
break;
default:
printf("%s ", COLOR[BLACK]);
}
}
}
}
fflush( stdout );
angle = angle_new;
}
}

[/php:1:bb6f7b2aae]

Das ganze sieht dann später so auf dem Bildschirm aus (anklicken für große Version):

http://forums.trossenrobotics.com/gallery/files/3/1/3/9/ik3_thumb.jpg (http://forums.trossenrobotics.com/gallery/showimage.php?i=2165&c=3&userid=3139)

Gruß
Daniel

Thomas$
29.04.2010, 20:09
nice ich hab genau sowas heut im sogennaten betriebspraktikumgemacht an der tu chemnitz.
dort ergaben sich aber schon reichlich problem der us sensor hat eine schallkegel mit 20° grad in beide seiten also insgesammt 40°

die nächste überlegung wäre ja das umfeld zu rastern um hintehr die objekte wieder zu erkennen und eine karte der umgebung zu erstellen

yaro
29.04.2010, 20:18
Man kann den Ultraschall-Sensor (den Schallkegel) einengen, indem man ihm einen Aufsatz bastelt.
Ich habe soeinen aus Schaumstoff für einen SRF08 gebastelt und damit sehr gute Ergebnisse erzielt.
Habe grad leider kein Foto zu Hand. Im Grunde genommen ist es ein Quader mit Abmessungen von ca. 5*4*3cm in den ich 2 Löcher geschnitten habe (für die Lautsprecher).
Man muss ein wenig experimentieren, aber mit dem richtigen Material und den richtigen Abmessungen lässt sich der Kegel um ein vielfaches einengen.

Gruß, Yaro

Thomas$
29.04.2010, 20:23
klingt gut die us kapseln sind ja auch rund ob es auch hilft diese mit klebeband du verlängern ich probier das morgen mal werd mal paar fotos machen wenn ich es darf klingt aber nach hoffnung denn die 40° sind ja schon fast unbrauchbar

MeckPommER
29.04.2010, 21:19
Ich habe auch mal einen interessanten Aufbau gesehen, bei dem zur Einengung des Abtastbereiches eine Parabolkonstruktion verwendet wurde.

Einfach Testen kommt am besten :-)

uwegw
29.04.2010, 21:26
Hier mal die gleiche Idee mit einem Infrarotsensor:
http://www.team-iwan.de/technik/sharp1.php
Dieser Sensor hat einen deutlich kleineren Öffnungswinkel, und liefert daher ein recht gutes Bild der Umgebung.