اطلاعیه

Collapse
No announcement yet.

روبات میکرو موس

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : روبات میکرو موس

    میکروموس = مکانیک و کنترل دقیق
    بزارین ساده ترین الگوریتمو بزاریم همینجا.
    اول به هر نحوی شده باید نقشه دیوار ها رو توی یک متغیری بزارین.
    من تو یک متغیر 17*2 تایی اینتیجر گذاشتم که جمعا 16*2*17 بیت داره که همون تعداد دیوار هاست.
    یکی از این 17 تایی ها ردیف و دیگری ستون.
    این الگوریتم تولانی ترین زمان محاسبه و ساده ترین روش ممکنه. البته با میکرو 16 مگاهرتز تو 1-25 میلی ثانیه محاسبه می شه.
    برای بدست اوردن کوتاه ترین مسیر کل زمین باید 256 بار اسکن بشه. البته هیچ وقت به این تعداد نمی رسه و با یک کد می تونین بگین هر وقت مسیر مشخص شد دیگه محاسبه نکنه.
    ابتدا خونه ها باید تعریف بشن که هرکودوم یک مقداری از 0 تا 255 دارن. پس یک متغیر از نوع کرکتر 16*16.
    ابتدا مقدار تمام خونه ها 255 قرار می گیره به غیر از 4 خونه مرکز که مقسده. مقسد مقدار 0 داره.
    حالا برنامه شروع به اسکن کردن زمین می کنه.
    یک متغیر برای اسکن وجود داره که من می گم مرحله که از 0 شروع می کنه.
    پس در اسکن دنبال خونه ای می گرده که عدد 0 داشته باشه. پس می رسه به 4 خونه مرکزی. در یکی از خونه های مرکزی که رسیید اگر سمت شمال دیوار نبود و خونه بالایی مقدارش بیشتر از عدد مرحله بعلاویه 1 بود آنگاه به خونه بالای مقدار عدد مرحله بعلاوه 1 می ده در غیر این صورت هیچ مقداری بهش نمی ده. همین کارو برای خونه های چپ راست و پایین هم انجام می ده. کار که رو این خونه تموم شد می ره سراغ خونه بعدی که مقدارش 0 یا همون مقدار مرحله هستش.
    بعد از این که زمین برای اولین بار کامل اسکن شد مقدار عدد مرحله +1 می شه یعنی عدد1 اونوقت با عدد 1 دوباره زمینو اسکن می کنه.
    اگر ماز یک حلزون باشه و بزرگترین مسیر ماز 255 خونه باشه اونوقت برای محاسبه مسیر به 256 اسکن احتیاج هست.
    برای جلوگیری از اسکن اضافه می تونین بنویسین که اگر خونه ای که ربات درش هست عددی غیر از 255 گذاشته شد. اسکن متوقف بشه یعنی مسیر پیدا شد.
    حالا ربات باید تصمیم بگیره بره چپ یا راست یا بالا یا پایین. اینجا اگر بخاهیم کمتر تو تله بیفتیم می تونیم برانمه اضافه بنویسیم که به مسیر های تولانی تر هم بره.
    اگر مقدار عدد خونه ربات مثلا 41 باشه یعنی با توجه به دیوار های کشف شده ربات 41 خونه تا هدف فاصله داره. پس باید بره به خونه ای که فاصلش تا هدف 40 خونه هستش. و باید در نظر بگیره که دیوار سر راهش نباشه. البته اینجا بعضی اوقات 2 یا 3 راه فاصله یکسانی تا مرکز دارن و دیواری هم بینشون نیست خوب ربات می تونه به صورت رندوم یا غیر رندوم یکی رو انتخاب کنه.
    می نویسیم اگر خونه ای که در جهت حرکت ربات قرار داره دیواری جلوش نباشه و مقدار فاصله آن خونه یک عدد کمتر از مقدار فاصله خونه کنونی ربات باشه پس ربات مستقیم میره. همین کارو برای 3 جهت دیگه انجام میدیم البته اولویت حرکت مستقیم هستش ولی برای این اولویت بعضی اوقات تله می زارن.(به نظر من مهم نیست)
    و به این ترتیب ربات تصمیم بگیره که مثلا بره مستقیم.
    اگر ربات تونست تا هدف بره و برگرده می تونین برنامه بنویسین اگر مسیر قبلیی که ربات طی کرد با مسیری که الان تی کرد تا به مرکز برسه تفاوتی نداشت یعنی نزدیک ترین مسیر کشف شده.
    فقط اگر رباتتون 45 درجه می تونه حرکت کنه باید نقاط مرز خونه ها رو هم خونه فرض کنین یا اصلا مرکز خونه ها رو در نظر نگیرین. پس برای عدد گذاری شرط اینه که مرز مورد نظر دیوار نباشه و مقدارش بیشتر از مقدار عدد مرحله باشه. ولی در هنگام تصمیم گیری باید ملاک فقط فاصله باشه و جهت مستقیم رفتن ملاک نیست.
    در اسکن خونه های جهات اصلی رو مقدار عدد مرحله بعلاوه یک کنین ولی خونه های جهات مورب رو بعلاوه 1.41 اگر اون خونه مورب مقدارش از عدد مرحله بعلاوه 1.41 بیشتر بود. برای اعشار می تونین اینتیجر تعریف کنین و عدد 1 رو 100 در نظر بگیرین تا 2 رقم اعشار داشته باشین.
    در ضمن در روش 45 درجه می تونین متغیر دیوار هارو حذف کنین و در همون متغییر فاصله بزارین. در مدل 45 درجه محاسبات طولانی تر می شه.
    در مدل 45 یا 90 درجه می تونین خیلی راحت زمان دور زدن رو به فاصله خونه ها اضافه کنین به این طریق که در اسکن هر خونه ببینین خونه ای که مقدار فاصله کمتری داره در کدوم جهته یعنی به کجا باید بره, اینو تو یک مقدار بریزین و در عدد گذاری خونه های اطراف اگر خونه مورد نظر در امتداد اون خونه ای بود که باید بره هیچ مقدار اضافه ای برای دور زدن بهش اضافه نکنین ولی اگر جهتش متفاوت بود به نسبت زاویش یک مقدار اضافه به ازای دور زدن بهش اضافه کنین. البته ممکنه 2 خونه همسایه خونه مورد نظر باشه که مقدارشون برابر باشه و کمتر از مقدار مرحله.اینجا هیچ مشکلی پیش نمیاد برنامه درست عمل میکنه. یکم توضیحش سخته.
    با این الگوریتم میزان دور زدن هم محاسبه می شه ولی باز هم لازمه که در تصمیم گیری حرکت اولویت رفتن مستقیم باشه چون الگوریتم فقط می گه اگه مسیر درستو برین خونه فلان چقدر با مرکز فاصله داره و نمی گه کدوم مسیر درسته. که اینجا مشکلی نیست.
    البته محاسبه میزان دور زدن که الگوریتمو پیچیده می کنه تاثیرش شاید 15-5% باشه.
    اگر مرکز خونه ها رو هم خونه فرض کنین می تونین الگوریتمی بنویسین که هم 45 و هم 90 درجه بره. برای اتمینان بیشتر.

    یک سری الگوریتمای پیچیده دیگه هست که سرعت پردازشو زیاد تر می کنه و یکسری الگوریتمای دیگه هم هست که احتمال تو تله افتادنو کم می کنه که بیشتر بر پاییه ی شانسه.
    این اگوریتما که جلوگیری از تله می کنه تو امتیاز نهایی تاثیری ندارن. الگوریتمای افزایش سرعت پردازش هم وقتی به درد می خورن که سرعت پردازش ربات خیلی کم باشه و نتونه با سرعت مورد نیاز تصمیم بگیره که من با همچین مشکلی برنخوردم.(با atmega32 16MHz)
    مهم تر از همه اینه که نزدیک ترین مسیر تشخیص داده بشه و میزان دور زدن هم محاسبه بشه.
    من دیگه نمی دونم یک الگوریتم میکروموس چی از این بیشتر لازم داره چون اگر خودمو جای اون ربات میکروموس می زاشتم از این بیشتر چیزی به ذهنم نمی رسید که به کدوم مسیر برم.
    یک راه بسیار خوب برای بدست اوردن الگوریتم برای ربات اینه که خودتونو جای ربات بزارین و فکر کنین اگر بخواین با ورودی های موجود یعنی سنسور ها هوشمندانه ترین کاری که می تونین بکنین چیه.
    آدم هم تا زمانی که مازو کامل بدست نیورده به طور مکرر تو تله میفته پس از آدم هوشمند تر که دیگه نمی شه برنامه نوشت. پس کلا الگوریتم جلوگیری از تله رو بی خیال بشین یا فقط یک تابع تصادفی بنویسین که وقتی به 2راهی می رسه شانسی حرکت کنه.

    دیدگاه


      #32
      پاسخ : روبات میکرو موس

      یک الگوریتم دیگه هم هست که یادم رفت بگم:
      اگر ربات شما توانایی کنترل و حرکت با سرعت بالا را دارد پس می تواند در مسیر های مستقیم تولانی ابتدا شتاب گرفته و با سرعت هرچه بیشتر حرکت کند.
      در اینجا می توان الگویتمی نوشت که هم به نسبت طول مسیر مستقیم شتاب گیری و ترمز کند و هم در محاسبه طول نزدیکترین مسیر , مستقیم بودن آن را نیز ملاک قرار دهد.
      برای این کار ابتدا باید یک متغیر جدید برای خانه ها تعریف کنین که مقدار سرعت قابل دسترسی در آن خانه در آن قرار دارد.
      برای نوشتن این الگوریتم ابتدا نیاز است که الگوریتم محاسبه میزان دور زدن را نوشته باشین.
      در واقع این الگوریتم ادامهی الگوریتم محاسبه دور زدن است.
      در مرحله اسکن که بررسی کردین جهتی که ربات به سمت آن باید برود کدام سمت است و با استفاده از آن محایبه کردین اگر ربات بخواهد به سمتی دور بزند چه مقدار به عدد فاصله آن باید اضافه شود. اینجا در عدد گذاری اون خونه ای که هم جهت جهتی است که ربات باید برود است را باید عدد سرعت آن را مساوی عدد سرعت خونه ای که باید برود بعلاوه یک قرار دهید که در ابتدا عدد سرعت 0 است. و پس از این نسبت به برداشتی که از سرعت و شتاب رباتتان دارید باید بخاطر عدد سرعت هر خانه یک مقدار از عدد فاصله آن کم کنید یعنی این خانه سریع تر طی خواهد شد.
      به این ترتیب خانه های متوالی که دیواری بین آنها نیس دارای عدد سرعتی از 0 تا حد اکثر 15 خواهند بود. فقط عدد سرعت خانه ای که ربات هم اکنون در آن قرار دارد مورد استفاده است و بقیه اعداد سرعت خانه ها فقط برای محاسبه طول مسیر یک باز استفاده شده اند.
      ربات در تصمیم گیری اگر عدد سرعت خانه کنونی آن مثلا 5 باشد یعنی با توجه به دیوار های کشف شده باید 5 خانه مستقیم حرکت کند. مثلا رباتی که من ساختم در عرض 2 خانه به میزان حد اکثر سرعت خود می رسید. پس وقتی عدد خانه کنونی 5 است باید 1 مرحله شتاب بگیرد. وقتی به خانه بعدی که عدد سرعت آن 4 است برسد باید مرحله دوم شتاب بگیرد. و وقتی به خانه با عدد سرعت 3 رسید باید بدون شتاب حرکت کند و در خانه بعدی مرحله اول ترمز ودر خانه آخر مرحله نحایی ترمز تا توقف کامل.
      یک مسئله بدیهی است که محاسبه ماز فقط زمانی لازم است که ربات نیاز به دور زدن دارد یا دیواری در مسیر ناشناخته است.
      پس باید یک نکته دیگر را به برنامه اضافه کنیم که وقتی در محاسبه ماز دیواری ناشناخته است نباید عدد سرعت را افزایش دهد.
      یک الگوریتم دیگر هم اگر به محاسبه ماز در اسکن زمین اضافه کنین خوب می شود. یک متغییر جدید اضافه کنین یا از همون متغیر سرعت استفاده کنین و بنویسین که اگر در خانه مورد بررسی دیوار ناشناخته اطراف آن وجود دارد یک عدد بیان گر نیاز به محاسبه مجدد ماز قرار بدین یعنی الگوریتم اسکن ماز باید دوباره وقتی به آن خانه برسد باید محاسبه شود. یعنی در خانه هایی که دیوار ناشناخته ندارد اصلا الگوریتم ماز دوباره محاسبه نمی شود.
      ولی الگوریتم تصمیم گیری همیشه باید اجرا شود.

      یک برنامه برای بک پ گیری از نقشه بدست آمده هم بزارین که بره تو حافظه EEPROM یا FLASH یا هر حافظه پاک نشدنیکه اگر ربات دچار سانحه شد نقشه توش بمونه و در هر ریست یک بار ماز حل بشه.
      در ضمن ممکنه یک وقت سنسور اشتباه کنه و دیواری که نیست رو ببینه یا دیواری که هست رو نبینه برای این کار همیشه سنسورارو بخونین و نقشه ماز رو پ دیت کنین. یک برنامه هم بنویسین که هر از چند گاهی یا همیشه نقشه ماز رو رو حافظه EEPROM بزاره.

      کل این محاسبات اگر خوب برنامه نویسی کنین و سعی کنین کار CPU رو کم کنین با میکرو AVR و فرکانس 16MHz امکان پذیره. البته اگر سرعت یک ذره کم بود نه خیلی زیاد , می تونین ATMEGA48A با فرکانس 20MHz بزارین.
      می تونین محاسبه مازو به یک میکرو و کنترل رباتو به یک میکرو دیگه بدین یا از ARM استفاده کنین که من بلد نیستم. اگر هم بتونین کنترل رباتو به FPGA بدین که خیلی بهتر می شه ولی با همین AVR هم میشه.

      دیدگاه


        #33
        پاسخ : ربات میکروماوس

        ادامه بدید به هر حال خوبه که در آینده دیگران از اشتباهات شما استفاده نکنن.

        ولی تذکر بدم: اگه منظور شما از الگوریتم این جور مفاهیم هست.

        باید بگم که شما الگوریتم رو نمی دونید چی هست؟ لااقل از میکرو ماوس سر رشته ای ندارید و گویا با تعقیب خط پیشرفته اشتباه گرفتید.

        این ها هم روش و الگوریتم نیست یه سری روش های ابتدایی و من درآوردی هستش.

        لذا خواهش می کنم دیگه ادامه ندید! :angry: :angry: :angry: :angry:
        ببخشید اگه کمی تند حرف زدم. :mrgreen: :mrgreen: :mrgreen:

        برای همه دوستان عرض می کنم: یه سری به این سایت ها بزنید تا اطلاعات بیشتری کسب کنید.
        http://www.micromouseinfo.com/
        http://www.micromouseonline.com/
        http://www.societyofrobots.com/member_tutorials/node/94

        یه سرچی هم توی گوگل بکنید بد نیست!
        اینم از سایت های فارسی:
        http://roboticngo.com/?s=%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D9%85%D8%A7%D9%8 8%D8%B3&btnSubmit=

        مشکلی بود در خدمتیم.
        همواره یادمان باشد:
        1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
        2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
        3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

        دیدگاه


          #34
          پاسخ : روبات میکرو موس

          اینا که من می گم درسته دقیقا و فقط خود الگوریتم نیست ولی ایده حل مسئله است.
          انایی که گفتم الگوریتم همراه ایده برنامه نویسی و مثال بود. در ضمن اون الگوریتمی که در اول گفتم اسم هم داره ولی اسمشو یادم نیست.

          اینا هم که می گم قبلا برنامشو نوشتم و رو رباتم تست کردم ولی رباتم بخاطر مشکل کنترلی و مکانیکی خوب کار نمی کرد. ایمیلتونو بدین برنامشو براتون بفرستم.
          این آدرسی که دادین هم همون الگوریتم ساده ی منو توضیح می ده اگر خوب مطالعه کرده باشین. ولی ظاهرش در تعریف دیوار ها تفاوت داره.
          اصلا شما تا بحال ربات میکروموس ساختین؟
          ایمیلتونو بدین فیلمای کارکد و مدارات و عکس رباتمو براتون بزارم.
          شما به چی میگین الگوریتم؟ اگه مطالب این لینکو قبول دارین اینم داره همون توضیحات 10-15 خط اولی که نوشتمو می ده با ظاهری متفاوت.
          اگر منظور شما از الگوریتم همونه که بیایم یک شکل بکشیم و اونطور توضیح بدیم من دسترسی به پلود تصویر ندارم.
          http://www.societyofrobots.com/member_tutorials/node/94
          من روشای کلیشه ای و منظم برای نوشتن برنامه انجام نمی دم یکراست می رم سر اصل مطلب.
          حقیقتا وقتی این طور به من گفتین چهرم این طوری شد ولی عیبی نداره -------->

          دیدگاه


            #35
            پاسخ : روبات میکرو موس

            دوست ندارم به مجادله کشیده بشه!

            نوشته اصلی توسط S_Ahmad
            اینم از سایت های فارسی:
            http://roboticngo.com/?s=%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D9%85%D8%A7%D9%8 8%D8%B3&btnSubmit=
            توی RoboticNGO عکش های زیادی از ربات های خودم موجود هست.

            در ضمن بنده شما رو می شناسم، زیر نظر آقای آقاسی زاده کار می کردید.درسته؟ oo:

            توی زاهدان هم بودم و شما رو از اونجا می شناسم.
            همواره یادمان باشد:
            1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
            2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
            3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

            دیدگاه


              #36
              پاسخ : روبات میکرو موس

              اه چه جالب...
              ولی من شمارو یادم نیست.
              کودوم ربات مال شما بود؟
              درسته تا پارسال با آقای آقاسی زاده برای مسابقات کار می کردم ولی ایشون دکترای مکانیک قبول شدن الان دارن دکترا می خونن و منم دیگه رباتیکو تا برم دانشگاه گذاشتم کنار.
              اون رباتی که اوردم زاهدان داقون ترین و اولین رباتی بود که ساختم. کلا 6 تا ربات ساختم که بهترینشون یک ربات فوتبالیست دانش آموزی بود که باهاش 400 تومن بردم و تقریبا تو مسابقه تنها رقیبش ربات علامه هلی تهران بود ولی از بخت روزگار یادم رفت شارژش کنم باختم. یک ربات دیگه میکروموس ساختم که تنها فرقش با ربات زاهدانم این بود که برنامه کنترل و سنسوراش بهتر شد ولی هنوز مشکل مکانیک داشت.
              تو زاهدان همه رباتاشون از نظر مکانیکی خیلی خوب بودن نمی دنم چرا نصف رباتا کار نکردن. حالا من رباتم کار نکرد چون اولین تجربم بود.
              شما که دیگه باید انواع الگوریتمای حل ماز و محاسبه مسیر کوتاه تر رو بلد باشین پس چرا به این الگوریتمای من ایراد می گرفتین؟
              شما چرا فکر می کنین الگوریتم در تعیین برد و باخت مسابقه میکروموس تاثیر بیشتری دارد؟
              شاید چیزی هست که من نمی دونم.
              البته قبول دارم که اون الگوریتمایی که گفتم رو خوب توضیح ندادم. سعی کردم الگوریتمامو خوب توضیح بدم شاید سوء تفاهم شده باشه. در هر صورت چیزیه که عملا برای من کار کردن.
              شما تو رباتتون از چه سنسوری استفاده می کنین؟ خودتون می سازین یا می خرین؟
              اگه می سازین یک توضیحی درباره مدار سنسورتون اگه می شه بدین چون من خیلی علاقه مند شدم سنسور مادون قرمز فاصله یاب دقیق مثل شارپ بسازم.

              دیدگاه


                #37
                پاسخ : ربات میکرو ماوس

                نوشته اصلی توسط Aryan_M
                شما چرا فکر می کنین الگوریتم در تعیین برد و باخت مسابقه میکروموس تاثیر بیشتری دارد؟
                شاید چیزی هست که من نمی دونم.
                برد و باخت توی ربات میکروماوس جایی نداره!
                چون برای من نتیجه مهم نیست من توی خوارزمی 89 شرکت کردم و به کار خود خیلی ایمان داشتم ولی به خاطر یه اتفاق میکرو سوخت و ....
                این جور نتایج نشون میده که نباید نتیجه گرا بود.
                خیلی وقت ها بوده که دستگاه یا رباتی ساختم وقت برای رضای دل خودم. و هیچ مسابقه ای و جشنواره ای شرکت نکرده.

                ببینید اینکه انسان یه چیزی بسازه و به اون افتخار کنه خیلی مهمه، نه شرکت در مسابقات و ....

                به نظر من مسابقات و جشنواره ها صرفا حکم یه بازی رو دارن که عده ای ترتیبش رو دادن تا ما رو بازی بدن و از آخر یه جوری سرگرم مون کنن.

                وقتی یک ربات ارزشمند تره که هوش بیشتری داشته باشه! نه اینکه بازوی قوی تری یا پیچ و مهره ی اعلا تری داشته باشه.
                برای همین هست که میکروماوس بزرگترین رشته در بین رشته های رباتیک هست و سازمان های بزرگی مثل IEEE بیشتر از همه به این رشته بها می دهند.
                --------------------------------
                یه سری شما گفتین که توی هر الگوریتم به ناچار باید همه ی بن بست ها رو رفت.
                باید گفت خیر.
                ساده ترین و متداول ترین الگوریتم ربات میکرو ماوس الگوریتم bellman flooding هست که حتی توی اون خیلی وقت ها می شه تله ها رو حذف کردن و هوشمندانه از اونها گذر کرد. روش های پیشرفته تری هم هست.

                ما الگوریتم می نویسیم برای اینکه یه چیزی شبیه به فکر انسان و حتی فراتر از اون پیدا بشه و کار انسان رو ساده تر کنه.
                --------------------------------
                نوشته اصلی توسط Aryan_M
                شما تو رباتتون از چه سنسوری استفاده می کنین؟ خودتون می سازین یا می خرین؟
                اگه می سازین یک توضیحی درباره مدار سنسورتون اگه می شه بدین چون من خیلی علاقه مند شدم سنسور مادون قرمز فاصله یاب دقیق مثل شارپ بسازم.
                ببینید بنده اصولا با این کار(استفاده از شارپ) موافق نیستم ولی چون از لحاظ اقتصادی خیلی به صرفه ادامه می دهیم.
                در مورد سنسور هم باید بگم که استفاده از شارپ چون یه سنسور صنعتی هست خوبه ولی استفاده از اون تقریبا کار بیهوده ای هست.
                و کسانی که شارپ استفاده می کنن اولا تنبل تشریف دارن و توانایی ساخت یه سنسور مناسب رو ندارن دوما پول زیادی دارن تا در نتیجه به سمت خرید همچین ماژول ها یا سنسور ها سوق داده می شن.

                در مورد چیدمان و انتخاب سنسور ها توی همین تایپیک صفحه 2 توضیح دادم.
                خب قائداً انتخاب سنسور مناسب بسیار عامل مهمی هست.

                بهترین سنسوری که در حال حاضر می تونم برایتون معرفی کنم:
                شما باید توان سنسور فرستنده تون بالا باشه مثل این مدل:TSAL6200
                و از طرفی گیرنده ی مادون قرمزتون باید از حساسیت بالایی برخوردار باشه.مثل این یکی: BPV10
                اینم لینکشون:
                http://roboeq.com/modules.php?op=modload&name=Web_Links&file =index&req=viewlink&cid=8
                همواره یادمان باشد:
                1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                دیدگاه


                  #38
                  حذف نویز + استفاده از سنسور های پرتوان = سنسور صنعتی

                  روش حذف نویز:
                  خدمت شما عرض کنم که یکمی الگوریتمی توضیح می دهم و فرض می کنم شما از یک جفت سنسور مادون قرمز معمولی استفاده کردید.

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

                  پس از آماده سازی شرایط:
                  1- روشن کردن سنسور فرستنده
                  2- قرائت ADC و ذخیره ی مقدار آن (این مقدار شامل نور متساعد از سنسور + نور محیط است )
                  3- خاموش کردن سنسور فرستنده
                  4- قرائت مجدد ADC و ذخیره ی مقدار آن (این مقدار فقط ناشی از نور محیط است )
                  5- تفریق مقدار ADC در مرحله 4 از مرحله 2

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

                  -------------------------------------------
                  بنده با این کار در مورد سنسور هام هیچ نگرانی نداشتم.
                  البته فیلترینگ های دیگه ای هم هست که در صورت وجود خطای زیاد می شه از اون ها هم استفاده کرد.

                  روش های زیاد هستند ولی زمان محدوده!
                  همواره یادمان باشد:
                  1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                  2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                  3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                  دیدگاه


                    #39
                    پاسخ : روبات میکرو موس

                    درباره سنسور من هم دقیقا همین کارو می کردم ولی نویز محیط سرسام آور رو عدد خروجی تاثیر می زاشت که همین باعث شد رباتم تو مسابقه ببازه.
                    این روش درسته ولی به شرطی که یک سری نکاتی که من بعدا فهمیدم رعایت بشه.
                    یکی این که پایه امیتر سنسور باید با یک مقاومت هر چی کمتر سری بشه مثلا 470 یا 330 که اونوقت خروجی سنسور خطی خواهد بود. من 10 کیلو اهم گذاشته بودم در نتیجه خروجی غیر خطی داشتم.
                    این روش یک مشکل دیگه هم داره که می شه با یک مدار خیلی ساده برطرف کرد.
                    میکرو در نمونه برداری از ولتاژ یکم تاخیر داره و نویز پذیره. اگر با یک مدار نمونه بردار خارجی با یک خازن و JFET مثل 2n3819 + مدار voltage follower ولتاژو بخونیم بهتره. می شه کار محاسبه میکرو هم کاهش بدیم این طور که 2 تا مدار نمونه بردار بزاریم که وقتی فرستنده روشنه یکی و وقتی خاموشه دیگری نمونه برداری کنه.
                    تو نمونه برداری یک عامل ایجاد نویز تغییر شدت نور در فاصله بین نمونه برداری ها می باشد که یک راه برای برطرف کردن آن همین مدار می باشد.
                    بد ترین چیزی که شدت نورو در بین 2 نمونه برداری تغییر می ده فرکانس لامپ ها فلورسنت هستش که بعضیا تا 120KHz می رسه.
                    اگر خازن نمونه بردار ظرفیتش بالا باشه و انتگرال بگیره در نحایت دو ولتاژ نمونه برداری و انتگرال گیری شده یک مقداری با هم تفاوت دارن که این تفاوت همون نور فرستنده هستش. حالا برای این که باز هم محاسبات میکرو کمتر بشه می تونیم یک مدار تقویت کننده تفاضلی پ امپی با LM358 مدل 2 تایش بزاریم که هم جریان کمی لازم داره و می تونیم یکم ولتاژو تقویت کنیم. در نحایت یک عدد غنی شده نشان دهنده شدت نور فرستنده به میکرو می رسه که می شه با فرکانس پایین خوندش تا دقت عدد ADC هم کاهش پیدا نکنه.
                    این همون ایده من برای ساخت سنسور مشابه شارپ بود که همش چند تا 2n3819 و Lm358 داره.
                    ولی هرچی فرکانس درایو سنسور بالا تر باشه کمتر نویز می گیره و سریع تر ریسپاند می ده. که بدترین چیزی که جلوشو می گیره سرعت خاموش روشن شدن فرستتنده های مادون قرمزه.
                    شما می دونین این فرستنده هایی که گذاشتین و این فرستنده های ساده ارزون فرکانس روشن خاموششون چقدره؟
                    ابن گیرنده 5 میلیمتری سیاها چطور؟
                    من تو ویکیپدیا خوندم ساده ترین LED های موجود زمان روشن خاموششون 50-1000 نانو ثانیه هستش. اگر 50 نانو ثانیه باشه که عالیه. اینو تو پاورقی تو یک PDF نوشته بود. در ضمن همین فرستنده 5 میلیمتری 250 تومنی هارو می شه با جریان بالا راه انداخت که نورشون زیاد بشه تا حدود 30-40 میلی آمپر. البته اون توان بالا ها تا 100-200 میلی آمپرم جواب می دن ولی خیلی گرونن که.

                    اینی که گفتم فقط ایدست. شما می تونین چند نحوه فیلترینگ دیگه و بهتر بگین؟ مثلا یک فرستنده سینوسی و گیرنده با فیلتر میان گذر؟ یا حلقه فیلتر و تقویت؟
                    من یک مدار با فیلتر و فرستنده سینوسی ساختم اصلا به درد نخورد و خیلی به نویز حساس بود. البته علتش اینه که محاسباتم درست نبود و تجربشو نداشتم.

                    به غیر از تصادفی فکر کردن دیگه چی می شه نوشت که تو تله نیفتیم؟ مثلا ممکنه ربات بتونه الگوی تله رو درک کنه و سعی کنه نره توش؟ مثلا تله شونه ای که یکی از بدترین تله هاست ربات می تونه با یک الگوریتم بفهمه این تلس؟ البته راه اصلی هم معمولا داخل این تله قرار داره. پس اونوقت راه اصلی رو چطور پیدا کنه؟

                    دیدگاه


                      #40
                      پاسخ : روبات میکرو موس

                      به طور قطع نمی شه تله ها رو کنار گذاشت و هیچ روشی این گونه نیست.

                      تنها الویت ها و روش ها و ... باعث می شن که الگوریتم هوشمندانه عمل کنه و مسیر های دیگه رو به تله ها ترجیح بده، البته شاید هم نهایتا مجبور به ورود به تله ی فرضی خودش بشه.

                      بنده خودم هنوز با این تله های به قول شما شانه ای مشکل دارم و به ناچار قسمتی از اونها رو باید برم.
                      ولی بر اساس الگوریتم خودم می تونم تشخیص بدم که رفتن و ادامه دادن به یک ربع زمین بیهوده هست و کلاً دیگه اون گوشه رو می بندم.چه جوریش رو نمی تونم بگم.
                      همواره یادمان باشد:
                      1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                      2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                      3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                      دیدگاه


                        #41
                        پاسخ : ربات میکرو ماوس

                        این سنسور هایی که بنده تعریف کردم 800 نانو ثانیه طول می کشه تا کامل روشن بشه.
                        همواره یادمان باشد:
                        1-مردان بزرگ اراده می کنند و مردان کوچک آرزو
                        2-افراد بزرگ، همیشه به دنبال ایده های بزرگند و افراد کوچک به دنبال افراد بزرگ
                        3-همیشه سعی کن آنقدر کامل باشی که بزرگترین تنبیه تو برای دیگران گرفتن خودت از آنها باشد.

                        دیدگاه

                        لطفا صبر کنید...
                        X