امتیاز موضوع:
  • 3 رأی - میانگین امتیازات: 4.67
  • 1
  • 2
  • 3
  • 4
  • 5
انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
نویسنده پیام
A.Amiri آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۹۲

تشکرها : 0
( 29 تشکر در 5 ارسال )
ارسال: #1
انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
   
قابليت ها  :
-   ارسال داده هاي خام سنسور MPU6050 با نرخ بروزرساني 250Hz
-   خروجي تلفيق شده به صورت زواياي چهارگان ( Quaternion ) و اويلري ( Euler )
-   منطبق با پروتکل ارتباطي دايناميکسل
-   قابليت تنظيم Baudrate تا 1Mbps
-   همراه با کتابخانه C#  و شبيه ساز 3 بعدي
-   رايگان و متن باز

اين پروژه دو قسمت داره
1- Firmware ( کد هاي روي ميکرو ) : که شامل خواندن اطلاعات از سنسور و فيلتر ها و ارسال داده ها از طريق USART ميشه .
2- Configurator : که شامل کتابخانه و رابط گرافيکي C# به منظور دريافت داده هاي ميکرو و يک شبيه ساز ميشه .

اطلاعات بيشتر
دريافت پروژه
(آخرین ویرایش در این ارسال: ۲۰-فروردین-۱۳۹۸, ۲۲:۵۷:۵۳، توسط hadikh73.)
۲۱-بهمن-۱۳۹۲, ۱۴:۰۳:۴۳
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador, hadikh73, salehjg, sharin, رسول, AzhidahakA, fafa_n6190, Ghoghnus
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #2
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
حرکت بزرگیستBiggrin
منم داشتم روی همینا کار می کردمBiggrin
البته شاید بهتر باشه DMP رو استفاده کنید کار خیلی ساده میشه
انشاالله موفق می شم و این روش رو قبل از ایران اپن آماده می کنم شما هم حال کنیدBiggrin

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۲۲-بهمن-۱۳۹۲, ۰۲:۴۸:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy, Ambassador, salehjg
A.Amiri آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۹۲

تشکرها : 0
( 29 تشکر در 5 ارسال )
ارسال: #3
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
(۲۲-بهمن-۱۳۹۲, ۰۲:۴۸:۵۹)behzady نوشته است: حرکت بزرگیستBiggrin
منم داشتم روی همینا کار می کردمBiggrin
البته شاید بهتر باشه DMP رو استفاده کنید کار خیلی ساده میشه
انشاالله موفق می شم و این روش رو قبل از ایران اپن آماده می کنم شما هم حال کنیدBiggrin
خواهش می کنم .
بله همینطور هست که می فرمائید . DMP کار رو خیلی ساده می کنه !من هم در ابتدای کار قصد داشتم از واحد DMP استفاده کنم . اما چندتا مساله رو باید در نظر داشت :
1 - اینکه DMP مستندات رسمی نداره اما اینجا اطلاعاتی در این مورد قرار داده شده و پیاده سازی هم اینجا موجود هست .راه اندازی اون هم کار سختی نخواهد بود .

2 - اینکه با توجه به اینکه الگوریتم سنسور فیوژن به انتخاب شما نیست در صورتی که بخواید از سنسور میدان مغناطیسی برای جهت یابی استفاده کنید به مشکل بر میخورید!

3- اینکه کالیبرسیون سنسور ها مشخص نیست به چه صورت خواهد بود ! مثلا چه طور عمل HardIron یا SoftIron به منظور کالیبره کردن سنسور magnetometer ( البته در Mpu9150 ) انجام خواهد شد ؟

علاوه بر این ها وقتی الگوریتم سنسور فیوژن رو خودمون پیاده کنیم دیگه محدود به سنسور خاصی نخواهیم بود ! به راحتی با هر سنسوری میشه این کار رو انجام داد :-)

اینها دلایلی بود که باعث شد من از خیر DMP بگذرم :-)
(آخرین ویرایش در این ارسال: ۲۲-بهمن-۱۳۹۲, ۰۴:۱۲:۳۰، توسط A.Amiri.)
۲۲-بهمن-۱۳۹۲, ۰۴:۰۰:۳۹
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy, Ambassador, AzhidahakA, salehjg
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #4
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
دوستان اي كاش زودتر بروز مي داديد... Biggrin
سر فرصت يه نگاه به پروژه مي ندازم ، فقط اين رو مي خوام بدونم كه ...

شما الان اطلاعات رو به صورت خام به PC مي فرستيد و در سمت C# عمليات فيوژن رو انجام مي ديد يا عمليات فيوژن گردن ميكرو هست؟
و اينكه عمليات فيوژن رو با چه فيلتري انجام مي ديد؟

۲۲-بهمن-۱۳۹۲, ۱۸:۳۶:۴۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, salehjg, behzady
A.Amiri آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۹۲

تشکرها : 0
( 29 تشکر در 5 ارسال )
ارسال: #5
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
فیوژن سمت میکرو انجام میشه ، اما علاوه بر داده های فیلتر شده داده های خام هم ارسال میشه به pc ! شاید یه بنده ی خدایی به داده ی خام نیاز داشت :-) .

برای فیوژن هم از الگوریتم Madgwick استفاده میشه . اطلاعاتش رو روی وبسایت شخصیم قرار دادم .
موفق باشید .
۲۲-بهمن-۱۳۹۲, ۱۸:۵۳:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, sharin, Ambassador, hadikh73, salehjg, behzady
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #6
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
نمي دونم چطور اين الگوريتم Madgwick به چشم نخورده بود!!
يه پروژه دستمه كه فردا بايد تحويلش مي دادم!
بابت تاپيك شما و اين الگوريتم كه هنوز امتحانش نكردم ، سعي مي كنم زمان تحويل رو 1-2 روزي عقب بندازم و Madgwick رو روش تست كنم ببينم چه جوابي مي گيرم.

قبلا از http://www.starlino.com/imu_guide.html استفاده كرده بودم و كمي كاملش كرده بودم.
البته موقعي كه مي خواستم ماژول IMU رو تهيه كنم MPU تمام كرده بود و نهايت از GY-80 استفاده كردم.
اگر تو اين مدت زمان تونستم روش شما رو تست بزنم و جواب بگيرم ، خبرش رو مي دم.

۲۲-بهمن-۱۳۹۲, ۲۲:۵۲:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, Ambassador, babyy, salehjg, behzady
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #7
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
اين قسمت از كد رو مي شه روشن كنيد.

کد php:
            SensorFusion::MadgwickAHRSupdateIMU(gx.FloatNumber*DEG2RAD,gy.FloatNumber*DEG2RAD,gz.FloatNumber*DEG2RAD,ax.FloatNumber,ay.FloatNumber,az.FloatNumber); 

قائدتا ماژول براي جايرو و شتاب سنج ، اطلاعات رو براي هركدوم از محورهاي x,y,z به صورت جدا براي هر سنسور مي فرسته ، درسته؟ ( با اين ماژول كار نكردم )
در تابع بالايي ، چرا gx , ... ضرب در ضريب تبديل درجه به راديان شدن؟ gx و ... بر حسب درجه كه فكر نكنم باشن؟!

ساده تر بگم، ورودي هاي تابع MadgwickAHRSupdateIMU ، اطلاعات 3 محور جايرو و 3 محور شتاب سنج و 3 محور مگنتومتر هست ، اين ورودي ها بايد به فرم خام باشن يا نيازهه پردازش اوليه اي روشون صورت بگيرهه؟
اطلاعات خام منظورم اطلاعات محورهاي x,y,z با مقدار و علامت هاشون هست.
ممنون مي شم روشن كنيد.

كل پردازش ها هم بر مبناي float هست درسته؟

۲۳-بهمن-۱۳۹۲, ۰۰:۱۸:۲۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, salehjg, behzady
A.Amiri آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: آبان ۱۳۹۲

تشکرها : 0
( 29 تشکر در 5 ارسال )
ارسال: #8
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
بله نویسنده این الگوریتم ورودی جایرو رو بر حسب رادیان در نظر گرفتن . پردازش اولیه که نه اما طبق گفته های دیتاشیت از اونها به صورت خام هم نمیشه استفاده کرد و نسب به تنظیماتی که روی ماژول انجام میشه باید ضریبی برای اونها در نظر گرفته بشه . مثل MPU6050_GYRO_LSB_2000_Scale .
بله پردازش هم به صورت float انجام میشه ، در واقع من از خاصیت Union ها برای پردازش و ارسال داده ها استفاده کردم . اینجوری موقع ارسال به صورت 4 بایت خام ارسال میشن و دوباره سمت pc اون چهار بایت سر هم می شن ! برای اینکه دوباره اون چهار بایت طبق استاندارد IEEE 754 سر هم بشن از ساختار زیر در C# استفاده کردم :

کد:
[StructLayout(LayoutKind.Explicit)]
    public struct ByteArrayFloat
    {
        [FieldOffset(0)]
        public byte Byte0;
        [FieldOffset(1)]
        public byte Byte1;
        [FieldOffset(2)]
        public byte Byte2;
        [FieldOffset(3)]
        public byte Byte3;

        [FieldOffset(0)]
        public float FloatNumber;

    }

راه حل نا مناسب دیگه ای که هست اینه که داده ها رو ضرب در یه عدد نسبتا بزرگ مثل 10000 کنیم و بعد اون رو گرد کنیم و به صورت عدد صحیح ارسال کنیم ، در سمت pc هم عدد صحیح دریافت شده رو تقسیم بر 10000 کنیم که عدد اعشاری دوباره به دست بیاد .
۲۳-بهمن-۱۳۹۲, ۰۰:۵۲:۵۳
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, sharin, Ambassador, salehjg, behzady
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #9
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
کد php:
            X_GYRO = (( I2CSlaveBuffer[PORT_USED][1]<<) | I2CSlaveBuffer[PORT_USED][0] ) ;
            
Y_GYRO = (( I2CSlaveBuffer[PORT_USED][3]<<) | I2CSlaveBuffer[PORT_USED][2] ) ;
            
Z_GYRO = (( I2CSlaveBuffer[PORT_USED][5]<<) | I2CSlaveBuffer[PORT_USED][4] ) ;

            
gyroRaw[0] = (X_GYRO 32767)? ((X_GYRO 0x7fff)-32767) : X_GYRO;// *70/1000
            
gyroRaw[1] = (Y_GYRO 32767)? ((Y_GYRO 0x7fff)-32767) : Y_GYRO;
            
gyroRaw[2] = (Z_GYRO 32767)? ((Z_GYRO 0x7fff)-32767) : Z_GYRO// /144

              
for (j=0;j<3;j++)
              {
                
deltaGyro[j]=gyroRaw[j]-gyroZeroRate[j];      // Use the calibration data to modify the sensor value.
                
if (abst(deltaGyro[j]) < gyroThreshold[j])
                  
deltaGyro[j]=0;
                
gyroDPS[j]= dpsPerDigit deltaGyro[j];      // Multiply the sensor value by the sensitivity factor to get degrees per second.
              


مرسي. اين تيكه كد كه بالا گذاشتم ، در واقع اطلاعات رو دارم علامت دار مي كنم و مقدارشون رو واقعي مي كنم. آستانه اي براي 0 بودن با توجه به كاليبراسيون در نظر مي گيرم و اعمال مي كنم و در نهايت خروجي x,y,z جايرو رو با ضرب كردن ضريبي كه در ديتاشيت اومدهه ، به واحد درجه در ثانيه تبديل مي كنم.

خارج از اين هم كه زاويه هاي جايرو خورد خورد با توجه به زمان خوندن مقدار جايرو ، بايد با هم جمع بشن تا زاويه مد نظر اندازه گيري بشه ( البته اين قسمت جمع شوندگي قائدتا بايد در الگوريتم فيوژن اعمال بشه )
تا وقتي اين جمع شوندگي صورت نگيرهه ، واحد محورهاي جايرو بر حسب زاويه نمي شه!

آيا منظور اينه كه مقادير محورهاي جايرو رو به صورت المان زاويه ( به عبارت ديگه Delta Teta يا dx,dy,dz ) بايد تبديل كنيم و در ورودي تابع MadgwickAHRSupdateIMU استفاده كنم؟

نقل قول: اینکه دوباره اون چهار بایت طبق استاندارد IEEE 754 سر هم بشن از ساختار زیر در C# استفاده کردم :
مرسي ، بايد اين رو هم امتحان كنم ، خود منم براي نمايش float از همون روش نا مناسبي كه گفتيد براي تبادل اطلاعات اعشاري بين ميكرو و PC استفاده مي كردم( رنج اطلاعات محدود مي شه ، اما كم حجم شدنش هم از طرفي مفيد هست. )

۲۳-بهمن-۱۳۹۲, ۰۱:۳۱:۳۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador, salehjg, behzady
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #10
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
نقل قول: آيا منظور اينه كه مقادير محورهاي جايرو رو به صورت المان زاويه ( به عبارت ديگه Delta Teta يا dx,dy,dz ) بايد تبديل كنيم و در ورودي تابع MadgwickAHRSupdateIMU استفاده كنم؟
بلاخرهه يافتم :)

کد:
Gyroscope units are radians/second, accelerometer
// units are irrelevant as the vector is normalised.

۲۳-بهمن-۱۳۹۲, ۱۰:۰۶:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, salehjg, babyy, behzady
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #11
RE: انتشار نسخه 1.0 PRO-IMU (متن باز + منطبق با پروتکل دايناميکسل)
(۲۲-بهمن-۱۳۹۲, ۰۴:۰۰:۳۹)A.Amiri نوشته است:
(۲۲-بهمن-۱۳۹۲, ۰۲:۴۸:۵۹)behzady نوشته است: حرکت بزرگیستBiggrin
منم داشتم روی همینا کار می کردمBiggrin
البته شاید بهتر باشه DMP رو استفاده کنید کار خیلی ساده میشه
انشاالله موفق می شم و این روش رو قبل از ایران اپن آماده می کنم شما هم حال کنیدBiggrin
خواهش می کنم .
بله همینطور هست که می فرمائید . DMP کار رو خیلی ساده می کنه !من هم در ابتدای کار قصد داشتم از واحد DMP استفاده کنم . اما چندتا مساله رو باید در نظر داشت :
1 - اینکه DMP مستندات رسمی نداره اما اینجا اطلاعاتی در این مورد قرار داده شده و پیاده سازی هم اینجا موجود هست .راه اندازی اون هم کار سختی نخواهد بود .
این شرکتی که برای این پرنده ها یک پلتفرم اپن سورس زده کلی تلاش کرده و اینو برای عموم قانونی کرده ولی فقط موجوزش هست امکان دانلود فایل هاش نیستBiggrin حالا به ماند من به یه طریق خفنی همه ی داکیومنت های مورد نیاز رو بیرون کشیدمBiggrin مال خود شرکت هم هست این لینک هایی که دادید بیشتر از مهندسی معکوس استفاده کردن.
نقل قول: 2 - اینکه با توجه به اینکه الگوریتم سنسور فیوژن به انتخاب شما نیست در صورتی که بخواید از سنسور میدان مغناطیسی برای جهت یابی استفاده کنید به مشکل بر میخورید!
د نه دیگه شما داده رو میگیرید برای تصحیح خطای ژایرو اینو اعمال می کنید که این کارو میشه بیرون انجام داد.
نقل قول: 3- اینکه کالیبرسیون سنسور ها مشخص نیست به چه صورت خواهد بود ! مثلا چه طور عمل HardIron یا SoftIron به منظور کالیبره کردن سنسور magnetometer ( البته در Mpu9150 ) انجام خواهد شد ؟
اینم موجوده اندکی صبر صحر نزدیک است البته من خیلی به قطب نما نیازی ندارم چون ربات من روی زمین میرهBiggrin خطای ژایرو قابل چشم پوشی هست عملیات کالیبره کردن رو میگم بقیه کاراش با شماBiggrin
---
در کل من الان ازش جواب گرفتم خیلی هم خوب کار می کنه Biggrin فقط دارم سعی می کنم این قطب نمام رو توش بچپونم البته ما کنکوری هستیم خیلی روش وقت نزاشتم ولی از آنجایی که این شرکت خودش قطب نمای پیش فرضی رو راه اندازی کرده کار سختی نباید باشه
----

راستی به صورت Quaternion هم داده رو میده

این شرکتی که لایسنس رو برای عموم گرفته
البته من از سایتش نتونستم فایلشو بگیرم.

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۲۳-بهمن-۱۳۹۲, ۲۱:۰۰:۵۸، توسط behzady.)
۲۳-بهمن-۱۳۹۲, ۲۰:۵۳:۲۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  LCDimg نسخه 1.2a salehjg 0 3,705 ۱۰-آذر-۱۳۹۱, ۲۱:۴۹:۵۳
آخرین ارسال: salehjg

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS