NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4620 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 11 از 11

موضوع: ربات مسیریاب

  1. #1
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    Icon17 ربات مسیریاب

    سلام خدمت همه دوستان و اساتید گرامی.
    من حدود 1 سالی میشه که ایده ساخت یک ربات مسیریاب با 64 تا سنسور(یک ماتریس 8*8)به ذهنم افتاد.بعد از کشو قوس فراوان تونستم سخت افزار رو بطور کامل و بدون اشکال ببندم(البته رو فیبر سوراخ دار!)الان فقط مونده برنامش.چندتا الگوریتم نوشتم اما اون انتظاراتی رو که داشتم بر آورده نکرد.اومدم اینجا تا از شما بپرسم ببینم ایده ای واسه برنامه نویسیش دارید یا نه.
    با تشکر.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    باید حقایق رو قبول کرد ، 64 تا سنسور برای یک ربات مسیر یاب واقعا زیاد هست و تقریبا شما 40 تا 50 عدد سنسور اضافه دارید ( البته این نظر من هست )
    http://www.iranled.com/forum/Thread-...سير-ياب
    بهتره یه مقدار در مورد نحوه ی استفاده از سنسور ها و چیزی که توی ذهنتون هست بیشتر توضیح بدید ، شاید یه ایده ی جدید در کار باشه .

  4. #3
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    سلام.
    مرسی از توجه شما.امشب یا فردا جزییات بیشتری رو از طرح قرار میدم.

  5. کاربران : 2 تشکر کرده اند از شما shayanmelody برای ارسال این پست سودمند:


  6. #4
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    با سلامی دوباره و عذر خواهی برای تاخیر.
    ایده کار از اونجا شروع شد که در دوره قبل مسابقات رباتیک دانشگاهمون من با ساختن ربات مسیریاب با پردازش تصویر آشنا شدم.البته به دلایلی نتوانستم ادامه دهم.که دلیل این آشنایی یکی از تیم هایی بود که رباتشان مجهز به دوربین بود.وقتی که ربات بر روی مسیر در حال حرکت بود مسیر حرکت بر روی یک ماتریس طراح شده در برنامه نشان داده میشد.از انجاییکه این ربات مسیر را به زیبایی طی میکرد،من با خودم فکر کردم وگفتم به جای اینکه ما دوربین بگذاریم در جلوی ربات و با پیاده کردن فیلتر ها و الگوریتم های خاص مسیر را بر روی یک ماتریس پیاده کنیم،با سنسور این کار را انجام دهیم و سپس از این مرحله پردازش ها بر روی ماتریس همانند کار با دوربین میباشد.البته این نظر من است و شاید کار با دوربین تفاوت های دیگری نیز داشته باشد.
    خوب حالا الگوریتمی که در ابتدا در ذهن من بود را میگوم:
    به ترتیب سطر ها را فعال میکنیم و مقدار هر یک از سطر هارا خوانده و در متغییر مربوطه قرار میدهیم و سپس به سراغ سطر های بعدی میرویم.این روند ادامه پیدا میکند تا هر هشت سطر زمین را اسکن کند.
    سپس این 8 متغییر را در یک ماتریس 8*8 قرار داده و حالت های مختلف را مینویسیم !!!!!!!!!!!
    در ابتدا که این الگوریتم به ذهنم آمد ،عمق فاجعه را درک نکرده بودم!فقط به این فکر میکردم که با این حالت های زیاد میتوان در برنامه مانور های خیلی خوبی داد!(ولی تا چه حد زیاد؟ 64^2*2 حالت !!!!!!!!!!!!!!!!!!!!!!!!!!!)
    بر فرض محال که این حالت های مختلف را بنویسیم(؟)پگونه میشود از AVR توقع داشت که از پس همچین برنامه ای بر آید؟
    بنابر این به فکر الگوریتم های ساده تر افتادم و الآن دارم بر روی آنها کار میکنم.
    امیدوارم توضیحات واضح باشد و توانسته باشم هدفم را برسانم.منتظر نظرات شما دوستان هستم مخصوصا جناب آقای 1nafar که به موضوع من توجه نشان دادند.
    با تشکر

  7. #5
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    معمولا دوربین های که روی ربات ها نصب میشن ، دوتا حالت دارن :
    1- دوربین دارای رزولیشن کم هست ( مثلا 64 یا 128 پیکسل ) و میکرو خودش عملیات پردازش توصیر رو انجام میده
    2- دوربین دارای کیفت مناسب هست و تصویر گرفته شده رو به یک کامپیوتر ارسال میکنه ، در کامیپوتر پردازش تصویر توسط نرم افزار های مثل مطلب یا ... انجام میشه و سپس فرامین به پردازنده ی ربات ارسال میشه .
    .................................................. .............................
    الان شما دارای همون حالت اول رو پیاده میکنید ، اما به جای دوربین از سنسور مادون قرمز استفاده کردید و به نوعی کار دشوار کردید .
    در دوربین ها یا به نوعی سنسور های تصویر ، در هر دوره ی زمانی یک تصویر از مسیر تهیه میشه ، این تصویر در داخل دوربین به کد های باینری تبدیل میشه و با استفاده از یکی از پروتکل های ارتباطی ( i2c یا موازی یا spi یا ...) یه میکرو کنترلر ارسال میشه ، داده ی ارسالی یک ماتریس 8*8 هست ( برای یک دوربین 64 پیکسلی نوعی ) که در اون مکان های سفید با صفر و مکان های مشکلی با یک مشخص میشن ، مثلا :
    00000000
    00000011
    00001100
    00011000
    00011000
    00011000
    00011000
    00011000
    میکرو ماتریس بالا رو به صورت سریال از پایین به بالا دریافت میکنه و هر سطر رو با سطر قبلی خودش مقایسه میکنه .
    حرکت آهسته : فرض کن میکرو در هر ثانیه یکی از سطر های بالا رو دریافت کنه ،بعد از گذشت اولین ثانیه ، میکرو سطر دوم رو دریافت میکنه و با مقایسه ی بیت های اون با سطر اول متوجه میشه که مسیر راست هست و هر دو موتور ربات باید با قدرت ثابت ربات رو به جلو ببریند .
    حالت بالا تا ثانیه ی چهارم ادامه پیدا میکنه ف در ثانیه ی پنجم و با دریافت سطر ششم ، میکرو متوجه میشه که بیت ها یک واحد به راست شیفت پیدا کردن ، این یعنی مسیر ما به سمت راست میره ، در این حالت چرخ سمت رایت باید سرعتش رو کمتر کنه تا ربات از مسیر منحرف نشه و.................
    با توجه به اینکه بخش عمده ی پردازش در داخل سنسور انجام میشه و میکرو فقط باید عملیات مقایسه و کنترل موتور ها رو انجام بده ، این روش کاملا عملی هست اما چون یه مقدار سرعت دوربین پایین هست و توی اغلب مسابقات ما به ربات های سرعت بالا نیاز داریم ، معمولا از دوربین زیاد استفاده نمیشه ( اگه سرعت ربات بالا باشه ، امکان خروج از خط خیلی زیاد هست ) .
    .................................................. .............................
    به نظر من اگه شما روی پردازش تصویر و کار با دوربین وقت بزارید ، بهتره ، چون وقت گذاشتن روی سنسور های مادون قرمز مثل راه اندازی شبکه ی اترنت با 8051 با وجود میکرو کنترلر های و ماژول های جدید هست .
    اگه میخوایید همین پروژه رو ادامه بدید ، باید خروجی تمامی سنسور ها رو به وسیله ی op-amp به سطح منتطقی 0 و 1 تبدیل کنید و بعد اون رو به صورت موازی و 8 تایی به میکرو بدید .
    برای اتصال سنسور ها به میکرو میتونید از بافر های که پایه ی enable دارن استفاده کنید ، در این حالت 8 تا بافر خواهید داشت که خروجی اونا به هم متصل شده و به یکی از پورت های میکرو وصل شده .
    به ورودی هر بافر 8 تا سنسور متصل هست ( خروجی مقایسه کننده op-amp) و میکرو از طریق یک پورت دیگه ، پایه های e بافر های موجود رو کنترل میکنه .

    .................................................. .................................................. ......
    اگه برد سنسور ها رو طوری طراحی کنید که بشه از اون در زیر ربات استفاده کرد ، نتیجه ی نهایی بهتر خواهد بود ، بهتره چند تا عکس از کار های که انجام داید بزارید

  8. #6
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    سلام خدمت استاد عزیز.
    با تشکر از توضیحات شما.این طور که من متوجه شدم باید کارهای زیر را انجام دهیم:
    1.ابتدا سطر 8 را فعال میکنیم و مقدار آنرا میخوانیم.
    2.از آنجا که هنوز سطری را نخواندیم،این مقدار را باید با یک متغییر خنثی مقایسه کنیم.
    3.عملیات پردازشی را انجام دهیم و یک خروجی بگیریم.
    4.متناسب با خروجی به موتور ها دستور دهیم.
    5.سطر 7 را فعال کنیم.
    6. و ....
    آیا درست متوجه شدم ؟
    در مورد درایو کردن سنسور ها این را بگویم که اگر قرار بود همزمان تمام سطر ها روشن باشند،آنگاه شدت اشعه ir تولید شده توسط led فرستنده آنقدر زیاد بود که تمام گیرنده ها در سطح منطقی 1 بودند.بخاطر همین مجبورم در هر لحطه همان سطری را که می خواه پردازش کنم روشن کنم که این عمل را با ترانزیستور انجام دادم.
    برای تقویت کردن خروجی سنسورها نیز از lm324 استفاده کردم.

  9. #7
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    این هم عکس رباتم میباشد
    فايل هاي پيوست شده فايل هاي پيوست شده

  10. #8
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    من هنوز منتظرما....................
    کسی نبود؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  11. #9
    عضو جدید
    تاریخ عضویت
    Feb 2011
    نوشته ها
    9
    تشکر
    12
    تشکر شده 0 بار در 0 پست

    پیش فرض

    اولین چیزی که توجه منو جلب کرد این بود که چون شما سنسوراتون خیلی زیادن و به هم نزدیکن احتمال دریافت اطلاعات غلط خیلی زیاده.........فکر نکنم کار درستی باشه...

  12. #10
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    سلام
    میگم که مثل صفحه کلید عمل کن
    مثلا
    البته این برای 6*6 نوشتم
    Portb = 1
    For Pg = 0 To 5
    I(pg + 1) = Getadc(pg)
    Next
    ' Waitms 50

    Portb = 2
    For Pg = 6 To 11
    P = Pg - 6
    I(pg + 1) = Getadc(p)
    Next
    ' Waitms 50

    Portb = 4
    For Pg = 12 To 17
    P = Pg - 12
    I(pg + 1) = Getadc(p)
    Next
    ' Waitms 50

    Portb = 8
    For Pg = 18 To 23
    P = Pg - 18
    I(pg + 1) = Getadc(p)
    Next
    ' Waitms 50

    Portb = 16
    For Pg = 24 To 29
    P = Pg - 24
    I(pg + 1) = Getadc(p)
    Next
    ' Waitms 50

    Portb = 32
    For Pg = 30 To 35
    P = Pg - 30
    I(pg + 1) = Getadc(p)
    Next
    ' Waitms 50

    For B = 1 To 36
    If I(b) > Ref Then
    I(b) = 1
    Else : I(b) = 0
    End If
    Next B

  13. تشکرها از این نوشته :


  14. #11
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    فکر کنم سخت نوشتم
    اینو ببین
    Portb = 1
    I(1) = Getadc(0)
    I(2) = Getadc(1)
    I(3) = Getadc(2)
    I(4) = Getadc(3)

    Portb = 2
    I(5) = Getadc(0)
    I(6) = Getadc(1)
    I(7) = Getadc(2)
    I(8) = Getadc(3)

    Portb = 4
    I(9) = Getadc(0)
    I(10) = Getadc(1)
    I(11) = Getadc(2)
    I(12) = Getadc(3)

    Portb = 8
    I(13) = Getadc(0)
    I(14) = Getadc(1)
    I(15) = Getadc(2)
    I(16) = Getadc(3)

    Portb = 16
    I(17) = Getadc(0)
    I(18) = Getadc(1)
    I(19) = Getadc(2)
    I(20) = Getadc(3)

    For B = 1 To 20
    If I(b) > Ref Then
    I(b) = 1
    Else : I(b) = 0
    End If
    Next B

  15. تشکرها از این نوشته :


موضوعات مشابه

  1. دانلود نرم افزار سیدالساجدین علیه السلام
    توسط ظهیر 313 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 27-11-2013, 16:21
  2. شارژر کامل باطری های اسیدی
    توسط agape در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 12-10-2012, 16:34
  3. یک درخت بسیار عجیب در آفریقا!!!
    توسط vahidasm در انجمن گفت و گوي آزاد
    پاسخ: 3
    آخرين نوشته: 09-08-2012, 02:36
  4. مسیریاب
    توسط Soheil74 در انجمن سیستم های ریاتیک و CNC
    پاسخ: 0
    آخرين نوشته: 07-07-2011, 20:04
  5. حاصل عمر گابریل گارسیا مارکز در 15 جمله
    توسط fatemehjml در انجمن گفت و گوي آزاد
    پاسخ: 3
    آخرين نوشته: 21-05-2011, 20:12

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •