Self driving rc car

Self driving rc car

 เค•ाเคฐ्เคฐเคตाเคˆ

เคธेเคฒ्เคซ เคก्เคฐाเค‡เคตिंเค— เค†เคฐเคธी เค•ाเคฐ satyatechnicalgyan
Add caption

เคฏเคน เคชเคฐिเคฏोเคœเคจा เคฐाเคธ्เคชเคฌेเคฐी เคชाเคฏा, เค…เคฐुเคกिเคจो เค”เคฐ เค“เคชเคจ เคธोเคฐ्เคธ เคธॉเคซ़्เคŸเคตेเคฏเคฐ เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े เคเค• เคธ्เคต-เคก्เคฐाเค‡เคตिंเค— เค†เคฐเคธी เค•ाเคฐ เคฌเคจाเคคी เคนै। เคฐाเคธ्เคชเคฌेเคฐी เคจे เคเค• เค•ैเคฎเคฐा เคฎॉเคก्เคฏूเคฒ เค”เคฐ เคเค• เคฎाเค‡เค•्เคฐोเคธ्เค•ोเคช เคธेंเคธเคฐ เคธे เค‡เคจเคชुเคŸ เคเค•เคค्เคฐ เค•िเคฏा เคนै, เค”เคฐ เคเค• เค•ंเคช्เคฏूเคŸเคฐ เค•ो เคช्เคฐेเคทिเคค เค•เคฐเคจे เค•े เคคเคฐीเค•े เคกेเคŸा เคกेเคŸा เคนै। เค•ंเคช्เคฏूเคŸเคฐ เค•्เคฐเคฎเคถः เค‡เคจเคชुเคŸ เค›เคตि เค”เคฐ เคธेंเคธเคฐ เคกेเคŸा เค•ो เค‘เคฌ्เคœेเค•्เคŸ เคกिเคŸेเค•्เคถเคจ (เคธ्เคŸॉเคช เคธाเค‡เคจ เค”เคฐ เคŸ्เคฐैเคซिเค• เคฒाเค‡เคŸ) เค”เคฐ เคŸเค•เคฐाเคต เคธे เคฌเคšเคจे เค•े เคช्เคฐเคคि เคชूเคฐ्เคฃ เค•เคฐเคคा เคนै। เคเค• เคคंเคค्เคฐिเค•ा เคจेเคŸเคตเคฐ्เค• เคฎॉเคกเคฒ เค•ंเคช्เคฏूเคŸเคฐ เคชเคฐ เคšเคฒเคคा เคนै เค”เคฐ เค‡เคจเคชुเคŸ เค›เคตिเคฏों เค•े เค†เคงाเคฐ เคชเคฐ เคธ्เคŸीเคฏเคฐिंเค— เค•े เคฒिเค เคชूเคฐ्เคตाเคจुเคฎाเคจ เคฌเคจाเคคा เคนै। เค†เคฐเคธी เค•ाเคฐ เคจिเคฏंเคค्เคฐเคฃ เค•े เคฒिเค เคญเคตिเคท्เคฏเคตाเคฃिเคฏों เค•ो เค…เคฐुเคกिเคจो เคชเคฐ เคญेเคœा เคœाเคคा เคนै।

เคเคจाเคธेเคกा เค•े เคธाเคฅ เคชเคฐ्เคฏाเคตเคฐเคฃ เค•ी เคธ्เคฅाเคชเคจा

  1. miniconda(Python3)เค…เคชเคจे เค•ंเคช्เคฏूเคŸเคฐ เคชเคฐ  เคธ्เคฅाเคชिเคค เค•เคฐें

  2. auto-rccarเคชเคฐिเคฏोเคœเคจा เค•े เคฒिเค เค†เคตเคถ्เคฏเค• เคธเคญी เค‡เคธ เคชुเคธ्เคคเค•ाเคฒเคฏों เค•े เคธाเคฅ เคตाเคคाเคตเคฐเคฃ  เคฌเคจाเคं
    conda env create -f environment.yml

  3. auto-rccarเคชเคฐ्เคฏाเคตเคฐเคฃ เค•ो  เคธเค•्เคฐिเคฏ เค•เคฐें
    source activate auto-rccar

  เคฌाเคนเคฐ เคจिเค•เคฒเคจे เค•े เคฒिเค, เคฌเคธ เคŸเคฐ्เคฎिเคจเคฒ เคตिंเคกो เคฌंเคฆ เค•เคฐें। เคเคจाเคธेเคกा เคชเคฐ्เคฏाเคตเคฐเคฃ เค•े เคช्เคฐเคฌंเคงเคจ เค•े เคฌाเคฐे เคฎें เค…เคงिเค• เคœाเคจเค•ाเคฐी,  เคฏเคนाँ  เคฆेเค–ें 

เคซ़ाเค‡เคฒ เค•े เคฌाเคฐे เคฎें

เคชเคฐीเค•्เคทเคฃ /
    rc_control_test.py : เค•ीเคฌोเคฐ्เคก เค•े เคธाเคฅ เค†เคฐเคธी เค•ाเคฐ เคจिเคฏंเคค्เคฐเคฃ
    stream_server_test.py: เคชाเคˆ เคธे เค•ंเคช्เคฏूเคŸเคฐ เคคเค• เคตीเคกिเคฏो เคธ्เคŸ्เคฐीเคฎिंเค—
    ultrasonic_server_test.py: เคธेंเคธเคฐ เคธे เคชाเคˆ เค•ा เคกेเคŸा เคธ्เคŸ्เคฐीเคฎिंเค— เค•ंเคช्เคฏूเคŸเคฐ เคธे
    เคฎॉเคกเคฒ model_train_test /
        data_test.npz : เคจเคฎूเคจा เคกेเคŸा
        train_predict_test.ipynb: เคเค• jupyter เคจोเคŸเคฌुเค• เคœो OpenCV3 เคฎें เคคंเคค्เคฐिเค•ा เคจेเคŸเคตเคฐ्เค• เคฎॉเคกเคฒ เค•े เคฎाเคง्เคฏเคฎ เคธे เคœाเคคा เคนै

raspberryPi /
    stream_client.py : เคธ्เคŸ्เคฐीเคฎ เคตीเคกिเคฏो เคซ्เคฐेเคฎ jpeg เคช्เคฐाเคฐूเคช เคฎें เคนोเคธ्เคŸ เค•ंเคช्เคฏूเคŸเคฐ เค•े เคฒिเค
    ultrasonic_client.pyเคฎेเคœเคฌाเคจ เค•ंเคช्เคฏूเคŸเคฐ เค•े เคฒिเค เคธेंเคธเคฐ เคฆ्เคตाเคฐा เคฎाเคชा เคฆूเคฐी เคกेเคŸा เคญेเคœें


arduino /
    rc_keyboard_control.ino : เคจिเคฏंเคค्เคฐเคฃ RC เค•ाเคฐ เคจिเคฏंเคค्เคฐเค•



ARDUINO CODE:

// assign pin num
int right_pin = 6;
int left_pin = 7;
int forward_pin = 10;
int reverse_pin = 9;
// duration for output
int time = 50;
// initial command
int command = 0;
void setup() {
pinMode(right_pin, OUTPUT);
pinMode(left_pin, OUTPUT);
pinMode(forward_pin, OUTPUT);
pinMode(reverse_pin, OUTPUT);
Serial.begin(115200);
}
void loop() {
//receive command
if (Serial.available() > 0){
command = Serial.read();
}
else{
reset();
}
send_command(command,time);
}
void right(int time){
digitalWrite(right_pin, LOW);
delay(time);
}
void left(int time){
digitalWrite(left_pin, LOW);
delay(time);
}
void forward(int time){
digitalWrite(forward_pin, LOW);
delay(time);
}
void reverse(int time){
digitalWrite(reverse_pin, LOW);
delay(time);
}
void forward_right(int time){
digitalWrite(forward_pin, LOW);
digitalWrite(right_pin, LOW);
delay(time);
}
void reverse_right(int time){
digitalWrite(reverse_pin, LOW);
digitalWrite(right_pin, LOW);
delay(time);
}
void forward_left(int time){
digitalWrite(forward_pin, LOW);
digitalWrite(left_pin, LOW);
delay(time);
}
void reverse_left(int time){
digitalWrite(reverse_pin, LOW);
digitalWrite(left_pin, LOW);
delay(time);
}
void reset(){
digitalWrite(right_pin, HIGH);
digitalWrite(left_pin, HIGH);
digitalWrite(forward_pin, HIGH);
digitalWrite(reverse_pin, HIGH);
}
void send_command(int command, int time){
switch (command){
//reset command
case 0: reset(); break;
// single command
case 1: forward(time); break;
case 2: reverse(time); break;
case 3: right(time); break;
case 4: left(time); break;
//combination command
case 6: forward_right(time); break;
case 7: forward_left(time); break;
case 8: reverse_right(time); break;
case 9: reverse_left(time); break;
default: Serial.print("Inalid Command\n");
}
}

เค‡เคธ เคธ्เค•ेเคš เค•ो เค•िเคธी เค…เคจ्เคฏ Arduino เคฏा Atmega 328 / NOT IN HOST COMPUTER เค•े ARDUINO เคฎें เค…เคชเคฒोเคก เค•िเคฏा เคœाเคจा เคšाเคนिเค।

เค•ंเคช्เคฏूเคŸเคฐ /
    เค•ैเคธ्เค•ेเคก_xml /

  เคช्เคฐเคถिเค•्เคทिเคค เค•ैเคธ्เค•ेเคก เค•्เคฒाเคธिเคซाเคฏเคฐ

    เคถเคคเคฐंเคœ_เคฌोเคฐ्เคก /
        เค…ंเคถांเค•เคจ เค•े เคฒिเค เคšिเคค्เคฐ, pi เค•ैเคฎเคฐा เคฆ्เคตाเคฐा เค•ैเคช्เคšเคฐ เค•िเคฏा เค—เคฏा

    picam_calibration.py: เคชीเค†เคˆ เค•ैเคฎเคฐा เค…ंเคถांเค•เคจ
    collect_training_data.py: เค—्เคฐेเคธ्เค•ेเคฒ เคฎें เคšिเคค्เคฐ เคเค•เคค्เคฐ เค•เคฐें, เคกेเคŸा เค•ो เค‡เคธ เคฐूเคช เคฎें เคธเคนेเคœा เค—เคฏा *.npz
    model.py: เคคंเคค्เคฐिเค•ा เคจेเคŸเคตเคฐ्เค• เคฎॉเคกเคฒ
    model_training.py: เคฎॉเคกเคฒ เคช्เคฐเคถिเค•्เคทเคฃ เค”เคฐ เคธเคค्เคฏाเคชเคจ
    rc_driver_helper.py: เคธเคนाเคฏเค• เคตเคฐ्เค— / เค•ाเคฐ्เคฏ rc_driver.py
    rc_driver.py: เคฐाเคธ्เคชเคฌेเคฐी เคชाเคˆ เคธे เคกेเคŸा เคช्เคฐाเคช्เคค เค•เคฐเคคे เคนैं เค”เคฐ เคฎॉเคกเคฒ เคญเคตिเคท्เคฏเคตाเคฃी เค•े เค†เคงाเคฐ เคชเคฐ เค†เคฐเคธी เค•ाเคฐ เคšเคฒाเคคे เคนैं, เคœो เคตเคธ्เคคु เค•ा เคชเคคा
    rc_driver_nn_only.pyเคฒเค—ाเค rc_driver.pyเคฌिเคจा เคธเคฐเคฒ เค•िเคฏा เค—เคฏा เคนै।

เคŸ्เคฐैเคซ़िเค•_เคธिเค—्เคจเคฒ เคŸ्เคฐैเคซ़िเค•


 Traffic signal code:


const int y = 10; //connect yellow led at pin 10 const int g = 11;
const int sec = 1000; //seconds defined
void setup() { pinMode(r,OUTPUT); pinMode(y,OUTPUT); pinMode(g,OUTPUT); delay(sec);
} void loop() { digitalWrite(r,HIGH) ; delay(sec*5); digitalWrite(r,LOW) ; digitalWrite(y,HIGH) ; delay(sec*5); digitalWrite(y,LOW) ; digitalWrite(g,HIGH) ; delay(sec*5); digitalWrite(g,LOW) ; }

เค•ैเคธे เค—ाเคก़ी เคšเคฒाเคฏें

  1. เคชเคฐीเค•्เคทเคฃ:rc_keyboard_control.ino Arduino เค•े เคฒिเค เคซ्เคฒैเคถ เค”เคฐ rc_control_test.pyเค•ीเคฌोเคฐ्เคก เค•े เคธाเคฅ เค†เคฐเคธी เค•ाเคฐ เคšเคฒाเคจे เค•े เคฒिเค। stream_server_test.pyเค•ंเคช्เคฏूเคŸเคฐ เคชเคฐ เคšเคฒाเคं เค”เคฐ เคซिเคฐ stream_client.pyเคตीเคกिเคฏो เคธ्เคŸ्เคฐीเคฎिंเค— เค•ा เคชเคฐीเค•्เคทเคฃ เค•เคฐเคจे เค•े เคฒिเค เคฐाเคธ्เคชเคฌेเคฐी เคชाเคˆ เคชเคฐ เคšเคฒाเคं । เค‡เคธी เคคเคฐเคน, ultrasonic_server_test.pyเค”เคฐ ultrasonic_client.pyเคธेंเคธเคฐ เคกेเคŸा เคธ्เคŸ्เคฐीเคฎिंเค— เคชเคฐीเค•्เคทเคฃ เค•े เคฒिเค เค‡เคธ्เคคेเคฎाเคฒ เค•िเคฏा เคœा เคธเค•เคคा เคนै।

  2. เคชाเคˆ เค•ैเคฎเคฐा เค•ैเคฒिเคฌ्เคฐेเคถเคจ (เคตैเค•เคฒ्เคชिเค•): เคตिเคญिเคจ्เคจ เค•ोเคฃों เคชเคฐ เคชाเคˆ เค•ैเคฎเคฐा เคฎॉเคก्เคฏूเคฒ เค•ा เค‰เคชเคฏोเค— เค•เคฐเคคे เคนुเค เค•เคˆ เคถเคคเคฐंเคœ เคฌोเคฐ्เคก เคšिเคค्เคฐ เคฒें เค”เคฐ เค‰เคจ्เคนें chess_boardเคซ़ोเคฒ्เคกเคฐ เคฎें เคกाเคฒें picam_calibration.pyเค•ैเคฎเคฐा เคฎैเคŸ्เคฐिเค•्เคธ เคธे เคฐเคจ เค”เคฐ เคฒौเคŸे เคฎाเคชเคฆंเคกों เค•ा เค‰เคชเคฏोเค— เค•िเคฏा เคœाเคเค—ा rc_driver.py

  3. เคช्เคฐเคถिเค•्เคทเคฃ / เคธเคค्เคฏाเคชเคจ เคกेเคŸा เคเค•เคค्เคฐ เค•เคฐें: เคชเคนเคฒे เคฆौเคก़ें collect_training_data.pyเค”เคฐ เคซिเคฐ stream_client.pyเคฐाเคธ्เคชเคฌेเคฐी เคชाเคˆ เคชเคฐ เคฆौเคก़ें । เค†เคฐเคธी เค•ाเคฐ เคก्เคฐाเค‡เคต เค•เคฐเคจे เค•े เคฒिเค เคช्เคฐेเคธ เคคीเคฐ เค•ुंเคœी, qเคฌाเคนเคฐ เคจिเค•เคฒเคจे เค•े เคฒिเค เคฆเคฌाเคं । เคซ़्เคฐेเคฎ เค•ेเคตเคฒ เคคเคญी เคธเคนेเคœे เคœाเคคे เคนैं เคœเคฌ เค•ोเคˆ เค•ुंเคœी เคช्เคฐेเคธ เค•्เคฐिเคฏा เคนो। เคเค• เคฌाเคฐ เคฌाเคนเคฐ เคจिเค•เคฒเคจे เค•े เคฌाเคฆ, เคกेเคŸा เค•ो เคจเค เคฌเคจाเค เค—เค training_dataเคซ़ोเคฒ्เคกเคฐ เคฎें เคธเคนेเคœा เคœाเคเค—ा 

  4. เคคंเคค्เคฐिเค•ा เคจेเคŸเคตเคฐ्เค• เคช्เคฐเคถिเค•्เคทเคฃ:model_training.py เคเค• เคคंเคค्เคฐिเค•ा เคจेเคŸเคตเคฐ्เค• เคฎॉเคกเคฒ เค•ो เคช्เคฐเคถिเค•्เคทिเคค เค•เคฐเคจे เค•े เคฒिเค เคšเคฒाเคँ । เค•ृเคชเคฏा เคฌेเคนเคคเคฐ เคชเคฐिเคฃाเคฎ เคช्เคฐाเคช्เคค เค•เคฐเคจे เค•े เคฒिเค เคฎॉเคกเคฒ เคตाเคธ्เคคुเค•เคฒा / เคฎाเคชเคฆंเคกों เค•ो เคŸ्เคฏूเคจ เค•เคฐเคจे เค•े เคฒिเค เคธ्เคตเคคंเคค्เคฐ เคฎเคนเคธूเคธ เค•เคฐें। เคช्เคฐเคถिเค•्เคทเคฃ เค•े เคฌाเคฆ, เคฎॉเคกเคฒ เค•ो เคจเค เคฌเคจाเค เค—เค saved_modelเคซ़ोเคฒ्เคกเคฐ เคฎें เคธเคนेเคœा เคœाเคเค—ा 

  5. เค•ैเคธ्เค•ेเคก เค•्เคฒाเคธीเคซाเคฏเคฐ เคช्เคฐเคถिเค•्เคทเคฃ (เคตैเค•เคฒ्เคชिเค•): เคช्เคฐเคถिเค•्เคทिเคค เคธ्เคŸॉเคช เคธाเค‡เคจ เค”เคฐ เคŸ्เคฐैเคซिเค• เคฒाเค‡เคŸ เค•्เคฒाเคธिเคซाเคฏเคฐ เค•ो cascade_xmlเคซ़ोเคฒ्เคกเคฐ เคฎें เคถाเคฎिเคฒ เค•िเคฏा เคœाเคคा เคนै , เคฏเคฆि เค†เคช เค…เคชเคจे เคธ्เคตเคฏं เค•े เค•्เคฒाเคธिเคซाเคฏเคฐเคถिเคช เคช्เคฐเคถिเค•्เคทเคฃ เคฎें เคฐुเคšि เคฐเค–เคคे เคนैं, เคคो เค•ृเคชเคฏा เค“เคชเคจเคธीเคตी เคกॉเค•्เคŸเคฐ เค”เคฐ เค‡เคธ เคฎเคนाเคจ เคŸ्เคฏूเคŸोเคฐिเคฏเคฒ เค•ो เคฆेเค–ें ।

  6. เคเค•्เคถเคจ เคฎें เคธेเคฒ्เคซ เคก्เคฐाเค‡เคตिंเค— : เคชเคนเคฒे rc_driver.pyเค•ंเคช्เคฏूเคŸเคฐ เคชเคฐ เคธเคฐ्เคตเคฐ เค•ो เคถुเคฐू เค•เคฐเคจे เค•े เคฒिเค เคšเคฒाเคं (เคธเคฐเคฒीเค•ृเคค เคจो เค‘เคฌ्เคœेเค•्เคŸ เคกिเคŸेเค•्เคถเคจ เคตเคฐ्เคœเคจ เค•े เคฒिเค, rc_driver_nn_only.pyเค‡เคธเค•े เคฌเคœाเคฏ เคฐเคจ เค•เคฐें ), เค”เคฐ เคซिเคฐ เคฐเคจ stream_client.pyเค”เคฐ ultrasonic_client.pyเคฐाเคธ्เคชเคฌेเคฐी เคชाเคˆ เคชเคฐ।



เคธाเค‡เคจ เค”เคฐ เคŸ्เคฐैเคซिเค• เคฒाเค‡เคŸ เค•ो เคฐोเค•เคจे เค•े เคฒिเค เคฆूเคฐी เค•ो เคเค•เคฒ เคชाเคˆ เค•ैเคฎเคฐा เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े เคฎाเคชा เคœाเคคा เคนै, เค•ैเคฎเคฐा เค…ंเคถांเค•เคจ เค•ी เค†เคตเคถ्เคฏเค•เคคा เคนोเคคी เคนै।


เค•ैเคฎเคฐा เค…ंเคถांเค•เคจ เคฎें เค…เคงिเค• เคตिเคธ्เคคाเคฐ เค•े เคฒिเค, เค•ृเคชเคฏा OpenCv-Python เคŸ्เคฏूเคŸोเคฐिเคฏเคฒ เคฆेเค–ें

เคฎोเคจोเค•्เคฏुเคฒเคฐ เคฆृเคท्เคŸि เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े เคฆूเคฐी เค•ी เค—เคฃเคจा เค•เคฐเคจे เค•े เคฌाเคฐे เคฎें เค…เคงिเค• เคœाเคจเค•ाเคฐी เค•े เคฒिเค, เคตाเคนเคจ เคตाเคนเคจ เคฆूเคฐी เคฎाเคช เค•ो เคฎोเคจोเค•्เคฏुเคฒเคฐ เคตिเคœเคจ - เคœू เค—ुเค“เคฏเคจ, เคฎเคค्เคธ्เคฏ เคšुเค†ंเคธเค—, เค—ाเค“ เคซॉเค•्เคธ, เค”เคฐ เคชेंเคŸ เคœूเคฒเคซेंเค— (เคธिเคคंเคฌเคฐ, 2009) เค•े เค†เคงाเคฐ เคชเคฐ เคฆेเค–ें।

เคธเคญी เคซ़ाเค‡เคฒें เค•ंเคช्เคฏूเคŸเคฐ เคชเคฐ เคšเคฒเคคी เคนैं। เคตीเคกिเคฏो เคธ्เคŸ्เคฐीเคฎिंเค— / เคกिเคœिเคŸเคฒ เคธेंเคธเคฐ เคชเคฐीเค•्เคทเคฃ เค•े เคฒिเค, เคชเคนเคฒे เคธเคฐ्เคตเคฐ เคช्เคฐोเค—्เคฐाเคฎ เคถुเคฐू เค•เคฐें เค”เคฐ เคซिเคฐ "เคฐाเคธ्เคชเคฌेเคฐीเคชी" เคคเคน เคฎें เคธंเคฌंเคงिเคค เค•्เคฒाเค‡ंเคŸ เคช्เคฐोเค—्เคฐाเคฎ เคถुเคฐू เค•เคฐें।

เค•िเคจ เค”เคฐ เคŸ्เคฐैเคซिเค• เคฒाเค‡เคŸ เค•ो เคฐोเค•เคจे เค•े เคฒिเค เคฆूเคฐी เค•ो เคเค•เคฒ เคชाเคฏा เค•ैเคฎเคฐा เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े เค•ैเคฎเคฐा เคœाเคคा เคนै, เค•ैเคฎเคฐा เค…ंเคถांเค•เคจ เค•ी เค†เคตृเคค्เคคि
เคถाเคฏเคฐी เคนोเคคी เคนै।
เคฎोเคจोเค•्เคฏुเคฒเคฐ เคฆृเคท्เคŸि เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े เคฆूเคฐी เค•ी เค—เคฃเคจा เค•เคฐเคจे เค•े เคฌाเคฐे เคฎें เค…เคงिเค• เคœाเคจเค•ाเคฐी เค•े เคฒिเค, เคตाเคนเคจ เคตाเคนเคจ เคฆूเคฐी เคฎाเคช เค•ो เคฎोเคจोเค•्เคฏुเคฒเคฐ เคตिเคœเคจ - เคœू เค—ुเค“เคฏเคจ, เคฎเคค्เคธ्เคฏ เคšुเค†ंเคธเค—, เค—ाเค“ เคซॉเค•्เคธ, เค”เคฐ เคชेंเคŸ เคœूเคฒเคซेंเค— (เคธिเคคंเคฌเคฐ, 2009) เค•े เค†เคงाเคฐ เคชเคฐ เคฆेเค–ें।






Post a Comment

Previous Post Next Post

asdss

b