اطلاعیه

Collapse
No announcement yet.

مسیریاب

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : مسیریاب

    نوشته اصلی توسط رامین اسدیان
    بچه هایی که دنبال کد PID می گردن خواهشا دیگه نگردین الان 1 کد آماده واستون آوردم :eek: :eek: :eek: :eek:

    البته این واسه پل H نوشته شده با کمی تغییر میشه واسه L298 هم راهش انداخت :twisted: :twisted: :twisted:

    http://rasadeyan.persiangig.com/ROBOTAB/PIDLineFallow.h
    سلام
    کد pid تون چطور جواب داد؟
    AYRIC

    دیدگاه


      پاسخ : مسیریاب

      نوشته اصلی توسط رامین اسدیان
      بچه هایی که دنبال کد PID می گردن خواهشا دیگه نگردین الان 1 کد آماده واستون آوردم :eek: :eek: :eek: :eek:

      البته این واسه پل H نوشته شده با کمی تغییر میشه واسه L298 هم راهش انداخت :twisted: :twisted: :twisted:

      http://rasadeyan.persiangig.com/ROBOTAB/PIDLineFallow.h
      :job: :job: :job: :job: :job: :job: :job: :job: :job: :job:

      هر سوالی داشتین در خدمتم !!! اگه دیدید به سوالاتون دیر جواب نمیدم ایمیل بزنید

      rasadyan@gmail.com
      آقا این تست شده است دیگه ؟
      فیلمی از رباتش دارین ؟ یا pcb مدارش؟

      دو سه تا شرط اول تابع سنسور یا همون SenErr رو میشه توضیح بدین ؟ با صحیح بودن شرط ( مثلا اول ) چه اتفاقی میوفته ؟

      ممنون


      ممنون

      اضافه شده در تاریخ :
      کسی پل اچ با ماسفت داره ؟ تست شده ؟
      چون میترسم اینایی که سرچ میکنم تو اینترنت و پیدا میکنم ، جواب نده !!!

      این چطوره ؟ درسته ؟ میشه با PWM میکرو کنترل کرد ؟

      http://up6.ir/4haY

      « با هر دستی بدی , با همان دست پس خواهی گرفت »
      این جمله رو فراموش نکن

      دیدگاه


        پاسخ : مسیریاب

        نوشته اصلی توسط Amir_Eshraghi
        کسی پل اچ با ماسفت داره ؟ تست شده ؟
        چون میترسم اینایی که سرچ میکنم تو اینترنت و پیدا میکنم ، جواب نده !!!

        این چطوره ؟ درسته ؟ میشه با PWM میکرو کنترل کرد ؟

        http://up6.ir/4haY

        نه این فایده نداره
        همون ایسی که گفتم و نقشه هاش رو سرچ کن tc4428
        AYRIC

        دیدگاه


          پاسخ : مسیریاب

          سلام.
          IR های 3 میل بهتره یا 5 میل؟
          کاربرد هر کدومشون چیه؟

          دیدگاه


            پاسخ : مسیریاب

            نوشته اصلی توسط sadeghmojtabaei
            سلام.
            IR های 3 میل بهتره یا 5 میل؟
            کاربرد هر کدومشون چیه؟
            به نظر من 3 میل بهتره به دو علت !
            یکی این که برد سنسورت میتونی نزدیک سطح زمین بزاری و به دو تا پلکسی که قطر آن 4 یا 5 میل هست برای برد سنسورت اسکی بزاری !
            دوم من شنیدم سنسور 3 میل تقریبا نورش رو لیزری میفرسه که خودم باور نکردم و همچنین اگه برای برد سنسورت از 3میل استفاده کنی چرخ های کوچک تری ، نسبت به حالتی که با سنسور 5میل هست ، میتونی بزاری.
            به هر حال معمولا از 3 میل استفاده میکنن که اونم بیشتر به علت این هست که میتونن گیری اسکی بزارن واسه برد سنسور!
            « با هر دستی بدی , با همان دست پس خواهی گرفت »
            این جمله رو فراموش نکن

            دیدگاه


              پاسخ : مسیریاب

              نوشته اصلی توسط sadeghmojtabaei
              سلام.
              IR های 3 میل بهتره یا 5 میل؟
              کاربرد هر کدومشون چیه؟
              سلام
              ir های 3 میل توان کمتری دارن و چون توی مسیریاب فاصله سنسور زیاد نیست از اونا استفاده میکنن
              5 میل رو بیشتر برای سنجش فاصله استفاده میکنن

              اضافه شده در تاریخ :
              اینم برای پل h :
              http://www.eca.ir/forum2/index.php?topic=55843.15
              AYRIC

              دیدگاه


                پاسخ : مسیریاب

                ای جانم !!! PID چقد خواهان داره :biggrin: :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

                1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
                2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
                به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.

                تا اینجا شو بذارین با کد توضیح بدم :>



                if(PINA.0==1)
                {
                count++;
                sum += Errs[11];
                }
                // 24
                if(PINC.7==1)
                {
                count--;
                sum -= Errs[11];
                }


                Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
                Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.



                // Returning Values
                if (count == 0)return 0;
                if (count < 0) count = (-1) * count;
                return sum/count;


                در این قسمت هم مقدار خطا برگردانده میشود.


                در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
                البته واستون گداشتم :



                int LeftDark = 0;
                int RightDark = 0;


                با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!

                فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
                ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!

                (شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)

                ابتکار عمل داشته باشید!!!

                من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
                اسمم را پدرم انتخواب کرد !
                نام خوانوادگی ام را یکی از اجدادم !
                دیگه بسه راهم را خودم انتخواب خواهم کرد !
                اینم لینک من :
                http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767

                دیدگاه


                  پاسخ : مسیریاب

                  توی عمل چطور جواب داد؟
                  AYRIC

                  دیدگاه


                    پاسخ : مسیریاب

                    از دوستانی که به من خصوصی پیام میدن خواهش می کنم به ایمیل من rasadyan@gmail.com میل بفرستن چون
                    متاسفانه سرم شلوغه به خاطر کارای مقاله و ربات فوتبالیست و خصوصا هوش مصنوعی و ... در نهایت خارج رفتنمه !!!

                    من با کمال میل در خدمتتونم دوستان! چون خودم عاشق بحث علمی (هوش رباتا) هستم ولی درکم کنید!!!
                    البته اینو بخاطر خودتون میگم ! چون من دیر به دیر میامم اینجا !!! خلاصه دوستان همهگی ببخشین :redface:

                    نوشته اصلی توسط roboreza
                    توی عمل چطور جواب داد؟

                    راستش خوب بود !!! یعنی عالی بود!!! البته الان ربات دست من نیس و 1.5 ملیون فروختمش به یکی دیگه ! تا به عنوان پروژه دانشجوییش بده به استاد!!!

                    شما خودتون نظرتون در باره برنامه چیه ؟؟؟
                    اسمم را پدرم انتخواب کرد !
                    نام خوانوادگی ام را یکی از اجدادم !
                    دیگه بسه راهم را خودم انتخواب خواهم کرد !
                    اینم لینک من :
                    http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767

                    دیدگاه


                      پاسخ : مسیریاب

                      نوشته اصلی توسط رامین اسدیان

                      راستش خوب بود !!! یعنی عالی بود!!! البته الان ربات دست من نیس و 1.5 ملیون فروختمش به یکی دیگه ! تا به عنوان پروژه دانشجوییش بده به استاد!!!

                      شما خودتون نظرتون در باره برنامه چیه ؟؟؟
                      من دیده بودم زمان رو هم دخالت میدن!
                      میخوام بعد امتحانات روی pid کار کنم از مسیریاب شروع کنم فکر کنم خوب باشه
                      AYRIC

                      دیدگاه


                        پاسخ : مسیریاب

                        نوشته اصلی توسط roboreza
                        من دیده بودم زمان رو هم دخالت میدن!
                        میخوام بعد امتحانات روی pid کار کنم از مسیریاب شروع کنم فکر کنم خوب باشه
                        راستش زمان اینجا دخالت داده شده! ولی همچین مهم نیس! چون ضرایب به صورت تجربی تنظیم شده!

                        ولی اگه بخوای زمان و ضرایب رو دقیق حساب کنی و اعمال کنی در مورد جدول ضرایب نیکلز که واسه PID تنظیمش کردن مظالعه کن
                        اینم یه منبع خوب

                        http://en.wikipedia.org/wiki/PID_controller

                        برای شبیه سازی هم از برنامه متلب استفاده کن !!!

                        من یک مقاله دارم که یک حمله تو شبکه رئ با pid تشخیص میده !!!
                        اینم نمودار مقاله منه :



                        خط قرمز همون خروجی PID هستش ! همونطور که میبینی تو ثانیه 5 حمله تو شبکه شروع میشه ! و مقدار خط قرمز به شدت افزایش پیدا میکنه که باعث تشخیص حمله میشه !!!
                        اسمم را پدرم انتخواب کرد !
                        نام خوانوادگی ام را یکی از اجدادم !
                        دیگه بسه راهم را خودم انتخواب خواهم کرد !
                        اینم لینک من :
                        http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767

                        دیدگاه


                          پاسخ : مسیریاب

                          نوشته اصلی توسط roboreza
                          اینم برای پل h :
                          http://www.eca.ir/forum2/index.php?topic=55843.15
                          تشکر

                          اضافه شده در تاریخ :
                          نوشته اصلی توسط رامین اسدیان
                          ای جانم !!! PID چقد خواهان داره :biggrin: :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

                          1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
                          2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
                          به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.

                          تا اینجا شو بذارین با کد توضیح بدم :>



                          if(PINA.0==1)
                          {
                          count++;
                          sum += Errs[11];
                          }
                          // 24
                          if(PINC.7==1)
                          {
                          count--;
                          sum -= Errs[11];
                          }


                          Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
                          Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.



                          // Returning Values
                          if (count == 0)return 0;
                          if (count < 0) count = (-1) * count;
                          return sum/count;


                          در این قسمت هم مقدار خطا برگردانده میشود.


                          در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
                          البته واستون گداشتم :



                          int LeftDark = 0;
                          int RightDark = 0;


                          با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!

                          فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
                          ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!

                          (شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)

                          ابتکار عمل داشته باشید!!!

                          من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
                          آقا توضیحاتتون کامل بود ، خیلی ممنون ، اما من زیاد در مورد pid نخوندم و نمیدونم !
                          با این کدی که شما نوشتین زاویه های 90 درجه رو ربات میتونست بزنه ؟ چون شنیده بودم pid برای زیاویه های زیر 90 درجه خوبه !
                          بعد شما جزوه ی فارسی در حد آشنایی با pid ندارین ؟
                          و سوم کلا شما پیشنهاد میکنید مکه دنبال pid برییم یا نریم ؟ :biggrin:
                          ممنون
                          « با هر دستی بدی , با همان دست پس خواهی گرفت »
                          این جمله رو فراموش نکن

                          دیدگاه


                            پاسخ : مسیریاب

                            نوشته اصلی توسط Amir_Eshraghi
                            آقا توضیحاتتون کامل بود ، خیلی ممنون ، اما من زیاد در مورد pid نخوندم و نمیدونم !
                            با این کدی که شما نوشتین زاویه های 90 درجه رو ربات میتونست بزنه ؟ چون شنیده بودم pid برای زیاویه های زیر 90 درجه خوبه !
                            بعد شما جزوه ی فارسی در حد آشنایی با pid ندارین ؟
                            و سوم کلا شما پیشنهاد میکنید مکه دنبال pid برییم یا نریم ؟ :biggrin:
                            ممنون
                            خواهش میکنم


                            سعی کن انگلیسی یاد بگیری دیگه !!! منبع فارسی متاسفانه ندارم !!! اگه بگردی تو سایت های فارسی زیاد توضیح دادن! ولی فهمش یکم واستون سخته! چون PID در اصل یه موضوع برای تحلیل توابع پیوسته هستش! ولی اینجا ما با برنامه نویسی واسه یه تابع گسسته پیاده سازیش میکنیم!!!

                            زاویه هم بستگی به اعدادی داره که به آرایه SenErr میدین !!!! ولی من زاویه 110 رو هم با این الگوریتم رد کردم !!!

                            PID خیلی عالیه ! واسه این ربات هم خوب جواب میده !!!
                            ولی بعد ساختن این ربات برین سراغ آینده روشن ترررررر.... !

                            اسمم را پدرم انتخواب کرد !
                            نام خوانوادگی ام را یکی از اجدادم !
                            دیگه بسه راهم را خودم انتخواب خواهم کرد !
                            اینم لینک من :
                            http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767

                            دیدگاه


                              پاسخ : مسیریاب

                              نوشته اصلی توسط رامین اسدیان
                              خواهش میکنم


                              سعی کن انگلیسی یاد بگیری دیگه !!! منبع فارسی متاسفانه ندارم !!! اگه بگردی تو سایت های فارسی زیاد توضیح دادن! ولی فهمش یکم واستون سخته! چون PID در اصل یه موضوع برای تحلیل توابع پیوسته هستش! ولی اینجا ما با برنامه نویسی واسه یه تابع گسسته پیاده سازیش میکنیم!!!

                              زاویه هم بستگی به اعدادی داره که به آرایه SenErr میدین !!!! ولی من زاویه 110 رو هم با این الگوریتم رد کردم !!!

                              PID خیلی عالیه ! واسه این ربات هم خوب جواب میده !!!
                              ولی بعد ساختن این ربات برین سراغ آینده روشن ترررررر.... !
                              خیلی ممنون !

                              اضافه شده در تاریخ :
                              نوشته اصلی توسط رامین اسدیان
                              ای جانم !!! PID چقد خواهان داره :biggrin: :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

                              1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
                              2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
                              به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.

                              تا اینجا شو بذارین با کد توضیح بدم :>



                              if(PINA.0==1)
                              {
                              count++;
                              sum += Errs[11];
                              }
                              // 24
                              if(PINC.7==1)
                              {
                              count--;
                              sum -= Errs[11];
                              }


                              Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
                              Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.



                              // Returning Values
                              if (count == 0)return 0;
                              if (count < 0) count = (-1) * count;
                              return sum/count;


                              در این قسمت هم مقدار خطا برگردانده میشود.


                              در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
                              البته واستون گداشتم :



                              int LeftDark = 0;
                              int RightDark = 0;


                              با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!

                              فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
                              ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!

                              (شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)

                              ابتکار عمل داشته باشید!!!

                              من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
                              سلام دوباره ،نشستم تحلیل کردم کدی که دادین ، البته توضیحات شما بیشتر کمکم کرد . اون چیزایی که متوجه نشدم رو فهمیدم !
                              همون طور که گفتین یک طرف + و طرف دیگه - ، یعنی مثلا دو تا سنسور آخری که 1 و 24 اند یکی مثبته و یکی دیگه منفیه ، هیچ تفاوتی هم نداره که سنسور 1 و سنسور هایی که سمت سنسور 1 هستند مثبت باشن و سنسور 24 و سنسور هایی که سمت سنسور 24 هستند منفی باشد . درسته ؟ یعنی منظورم اینه که ما سنسور 1 رو چه از چپ فرض کنیم و سنسور های دیگه رو به همین ترتیب و چه از راست فرض کنیم و سنسور های دیگه رو به همین ترتیب ، مشکلی پیش نمیاد ؟؟

                              بعد از آرایه ی errs 13 و 15 استفاده نکردین ، چرا ؟ برای زمین سیاه با خط سفید هست ؟
                              ممنون
                              « با هر دستی بدی , با همان دست پس خواهی گرفت »
                              این جمله رو فراموش نکن

                              دیدگاه


                                پاسخ : مسیریاب

                                نه هیچ فرقی نداره امیر جان !!! فقط یادت باشه اگه دیدی ربات به جای اینکه به سمت خط بره ازش فرار میکنه توی تابع PID اون جایی که نوشته :
                                کد:
                                Drive(Top - Turn,Top + Turn);
                                اونو اینطوری عوضش کن :

                                کد:
                                Drive(Top + Turn,Top - Turn);

                                در ضمن من توی کد از 13 و 15 استفاده کردم !!! (برنامه نویسیتو قویتر کن )
                                Errs[11]=15
                                و
                                Errs[10]=11

                                Errs یک آرایه هستش که وقتی میگیم Errs[11] یعنی خانه 11 این آرایه ! تو خانه 11 این آرایه هم عدد 15 وجود داره نه خود 11 !

                                اضافه شده در تاریخ :
                                گفتم که این برنامه واسه زمین سفید با خط سیاه نوشته شده (حالت معمولی ) و برای اینکه ابتکار عمل شما زیر سوال نره من زمین سیاه با خط سفید رو تو این سورس کد ننوشتم !!! اینشو خودت حل کن دیگه :biggrin: !!!! (البته کمک می کنیم !) :nerd:
                                اسمم را پدرم انتخواب کرد !
                                نام خوانوادگی ام را یکی از اجدادم !
                                دیگه بسه راهم را خودم انتخواب خواهم کرد !
                                اینم لینک من :
                                http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767

                                دیدگاه

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