Description
دانشگاه تهران دانشکد هی مهندسی برق و کامپیوت ر
سیستمهای نهفتهی بیدرنگ
)Surface Scanner (تمرین اسکنر سطح
با هدف آشنایی با سیستم عامل اندروید و استفاده از سنسورهای تلفن همرا ه
اساتید درس:
دکتر مهدی کارگهی، دکتر مهدی مدرسی
نیمسال دوم 1401-1400
1. مقدمه
امروزه تلفن های همراه هوشممد یشمرت چشم یری کردهان و دارای ق رت ردازشمی بالا، تدوعی از سمدومور همای مختلف بما دقم بمالا و شمممتیبمانی از چدم ین شمممبامت ارتبما ی مختلف ماندم NFC ،WiFi ،Bluetooth و … هومتد . بلاووه، تما این اماانات در ابلااد ایین و وزن ک در اختیار کاربران قرار رتتت ان. حال سموال اسماسمی ایدجاسم کت چطور می توان از این اماانات کت همیشمت همراه ما اسم اسمتفاده کرد یا میتوان از یک تلفن همراه در کاربردهای صمدلاتی و تجاری بجای boardهای مرسمو اسمتفاده نمود چت مو ودی هایی برای این کار وجود دارد بت دنبال اسخی برای سوالات توق هوتی .
در این تمرین قرار اسم با سمیومت عامل ان روی و امااناتی کت جه تلاامل با سمدومورهای موبایل )حتما این لینک را بخوانی ( در اختیار ما قرار می ده شمدا شموی . همچدین با برخی مو ودی هایی کت سمیومت عامل جه استفاده از سدوور ها و ارتباط با سخ اتزار لایت ایین ایجاد می کد ، شدا خواهی ش.
2. شرح تمرین
در این تمرین یک اسادر سطح) surface scanner( را یاده سازی خواهی کرد .
اسمادر ب ین صمورت عمل میکد کت شمما وشمی را بر روی یک سمطح صماا قرار میدهی کت این ماان )و مختصمات نموداری ن( نقطت شمرو )صمفر( کار میشمود. سمس با حرک دادن تلفن هوشممد بر روی سمطح و با اسمتفاده از سمدومورهای شمتا سمد) accelerometer( و ژیروسماو )gyroscope(، سمطح را اسمان خواهی کرد.
ب ین صورت کت ا ر حین اسان با یک ناهمواری )بر م ی یا ترورتت گی( سطح روبرو ش ی ، با استفاده از سدوور ژیروسماو تغییرات زاویتای تلفن را تولیل کرده و قادر بت تشمخیص ناهمواری با شی . نرخ دریات داده از سدوور ژیروسماو )بروزرسمانی تغییرات( بای متداسم با سمرع حرک تلفن هوشممد بر روی سمطح باشم . برای تلایین این نرخ، میتوانی از سمدومور شمتا سمد کمک ب گیری . سمدومور شمتا سمد بت شمما کمک میکد تا بتوانی نرخ تغییر سممرع حرک تلفن هوشمممد را نمونتبرداری نمایی . براسمماا این نرخ )سممرع حرک( میتوانی نرخ دریات داده )بروزرسمانی( سمدومور ژیروسماو را وری تدظی کدی تا بتوانی ناهمواریهای سمطح را بت درسمتی و با مقیاا تاصملت صمویح )تاصملت نومبی بین ناهمواریها( تشمخیص ب هی . توجت کدی کت اسمان کردن سمریع سمطح )حرک تلفن با سرع بالا( نبای موج ع تشخیص یک ناهمواری شود.
شما بای یک دکمت برای شرو اسان سطح و ی ک دکمت برای ایان اسان )از همان دکمت میتوانی برای اعو ایان نیز استفاده کدی ( داشتت باشی . نهایتا، از شداسایی ناهمواریهای سطح، لاز اس تا مختصات ای ن ناهمواریها ذخیر ه شود تا در انتها بتوانی بت عدوان خرو جی کار خود، نمودار ی از تغی یرات حرک و شی بر ر و ی سطح) حرک از نقطت مب ا تا نقطت مقص ( ارائت دهی. ب ین مدظور، ترض کدی کت تلفن هوشمد شما سطح یک میز اتقی را در دو بلا )ملاادل زمانی کت موور y بت صورت y=0 تراز بمان ( اسان میکد . در شال زیر، نمون تای از خروج ی اسان سطح تو یک نمودار در دو بلا نشان داد ه ش ه اس . با ترض این کت) 0،0( نقطت غاز اسان سطح یک میز باش، موور اتق ی نشا ندهد ه و ل سط ح )حرک ولی موبایل( و موور عمود ی نشا ندهد ه ناهمواریهای ن )حرک موبایل روی ناهموار یها( اس . توجت کدی ک ت نمودار زی ر صرتا ی ک مثال اس و خروجی اسان برای انوا مختلف ناهموار یهای دیگر متفاوت خواه بود. دق کدی کت برنامت بای قادر بت اسان سطح بت ول ح اقل یک مت ر باش.
در ایان نیاز اسم تا با ابزار Systrace مجموعت eventهایی را کت در سمطح سمیومت عامل رخ می ده تا داده از سمدومور خوان ه شم ه و اسان سطح کامل شود، رص) profile( کدی و با توجت بت نتای ن، بت سوالات بخش 5 در زارش خود اسخ دهی .
3. پیاد هسازی
یادهسمازی این تمرین بت کمک دریات داده از دو سمدومور ذکر شم ه انجا خواه شم . مطابق با تصمویر زیر، درصمورتیات موبایل را حول هر یک از موورها بچرخانی ، تغییرات زاویت ن بر حوم زمان )سمرع زاویتای( بت وسمیلت سمدومور ژیروسماو در دسمترا اسم . بت ور مشمابت، تغییرات سمرع موبایل کت در اثر حرک ن در راسمتای هر ک ا از موورها صمورت می ذیرد، بت وسمیلت سمدومور شمتابومد در دسمترا خواه بود. بت عبارت دیگر، سدوور شتا سد میزان شتا حرک تلفن هوشمد را در موورهای مورد نیاز بت ما زارش میده .
برای یادهسمازی این تمرین، تلفن هوشممد را بر روی یک سمطح میز اتقی تراز کرده و ترض کدی کت موبایل در راسمتای موور y حرک نمیکد) y=0(. برای ب سم وردن حرک ولی موبایل از داده سمدومور شمتا سمد در موور x اسمتفاده کدی . عووه بر این، میتوانی برای ناهمواریها از داده سمدومور شمتا سمد در موور z و داده سدوور ژیروساو در موور y )تغییرات زاویتای حول این موور( استفاده کدی.
نرخ سمدومور شمتا سمد بر نرخ نمونتبرداری سمدومور ژیروسماو تاثیر دارد و ارتباط بین این دو، حرک موبایل و تغییرات زاویتای درک شم ه توسمس سمدومور ژیروسماو برای تشمخیص یک ناهمواری بای در نظر رتتت شمود. بت عبارت دیگر، با بتکار یری و تولیل همزمان دادههای فتت شم ه در ول زمان، اسمادر بای تشخیص ده کت چت میزان و چگونمت حرکم روی این نماهمواری انجما رتتمت تما در صمممورت حرکم سمممریع، یمک نماهمواری نمادرسممم تشمخیص داده نشمود )در مقایومت با ول، ارتفا و زوایای ناهمواری واقلای میز(. دق نمونتبرداری بای بت ون تای باشم تا بتوان مقیاا صمویح تاصملت ناهمواریها و ارتفا نها را از یا یگر تشمخیص داد. بت ور مثال ا ر با نرخ 1 ثانیت، نمونتبرداری انجا دهی ، احتمالا با دادههای بروز مطابق با حرک تلفن مواجت هومتی) در نمونت برداری با سمرع بالا ،عمو بلاضمی از دادهها تاراری هومتد و نیازی بت نها ن اری (. همین شمرایس بت ور برعا نیز میتوان رخ ده . همچدین ب یهی اسم کت در ابت ا نیاز اسم تا با چد ین بار بررسمی خروجی، بت یک نرخ نمونت مداسم دسم یات . برای ایداار میتوان نرخ نمونتبرداری سمدومورها را بت صمورت دسمتی )برحوم میاروثانیت( وارد کرد یا از حال های ماده کت خود سممیوممت عامل ان روی در اختیار برنامتنوی ذاشممتت اسمم )ماند SENSOR_DELAY_NORMAL یما دیگر نرخهمای ماده( اسمممتفماده نمود )این لیدمک را بررسمممی کدیم( . دق کدی کت لزوما دریات داده، برحوم نرخ خواسمتتشم ه توسمس شمما )نرخی کت تلایین کردهای ( نیوم و زمان دریات بروزرسانی برحو عملارد سیوت عامل میتوان کمی متفاوت از نچت وارد ش هاس ، باش.
• استفاده از سنسور Gyroscope در برنامه اندروید
برای اسمتفاده از سمدومور Gyroscope میبایوم سمدومور مذکور را از SensorManager دریات کدی . برای این کار میتوانی از ک زیر کمک ب گیری :
private SensorManager sensorManager;
private Sensor sensor;
…
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
برای دریات داده از سمدومور بای یک SensorEventListener در SensorManager ثب نا کدی . برای این کار از مت registerListener در کوا SensorManager اسمتفاده نمایی . در شمال زیر میتوانی ا وعات مربوط بت سدوور را مشاه ه نمایی :
• استفاده از سنسور Accelerometer در برنامه اندروید
برای اسمتفاده از سمدومور Accelerometer در برنامت، مشمابت سمدومور Gyroscope عمل نمایی . بت تفاوت خرو جی این سمدومور با سمدومور Gyroscope توجت داشمتت باشمی . میتوانی ا وعات مربوط بت سمدومور را در شمال زیر مشاه ه نمایی :
برای تحویل این تمرین، یک خروجی apk توویل خواهی داد کت قابلی اسمان سمطح )همراه با کلی شمرو و ایان اسمان( بت همراه رسم نمودار خروجی ن را) ناهمواریهای یات شم ه در ی اسمان برحوم مقیاا تاصملت )موور اتقی؛ تاصلت، موور عمودی؛ تغییرات زاویتای ناهمواری سطح( ( داشتت باش.
نمره امتیازی برای پیاد هسازی:
• در صمورت رسم نوین نمودار )نمایش ناهمواری ها در لوظت اسمان کردن( نمره امتیازی تلالق خواه رت. در این حال همچدین، میبایوم دق نتای را در زمانی کت نمودار را نوین رسم مینمایی با حال غیر نوین مقایوت کدی و نتیجت ب س م ه را توجیت نمایی .
• یادهسمازی تمرین با سمدومورهای فتت شم ه الزامی اسم . ا رچت، نمره اضماتی برای اتزایش کیفی اسمخ با بت کار یری سممدوممورهای دیگر، تشممریح دقیق مزایا و ملاای نها و مقایوممت با حالتی کت تدها از دو سدوور فتتش ه استفاده ش هاس ، تلالق خواه رت.
Profile ابزار .4
ابزار Systrace نر اتزاریوم کت با اسمتفاده از ن میتوان اتفاقاتی را کت در سمیومت عامل رخ می ده ، رصم کرد. این برنامت روی سمیومت شمما اجرا میشمود و موبایلی را کت بت سمیومت متصمل شم هاسم profile میکد . در شمال زیر یک نما از این برنامت م هاس.
هر Thread در این برنامت یک نوار مختص بت خود دارد کت وضملای ن را در زمان را نمایش میده . هر وضملای یک رنگ خاص دارد. بطور مثال در م ت زمانی کت یک Thread در وضمملای idle باشمم ، در نوار مربو ت بت ن Thread، رنگ ن بخش خاکومممتری اسممم . از این ریق میتوان وضممملای زمانبد ی Threadها و ردازهه ای مختلف را مشاه ه کرد.
بت ور مثال، در تصمویر زیر، عملارد سمت هومتت CPU هدگا ردازش و م ت زمان صمرا شم ه برای هر ردازه و بخشهایی کت این م ت زمان را بت خود اختصماص دادهان ، ورده شم هاسم . ا ر شمما برای یادهسمازی، از Thread اسمتفاده نمایی )اجباری بت اسمتفاده از Thread نیوم( یا بت نووی برنامت را بدویومی کت Threadهای مختلف CPU در یر شمون ، با توجت بت ایدات از دو سمدومور بت صمورت همزمان برای دریات داده) I/O( اسمتفاده میکدی، ممان اسممم موممم لمت I/O Contention رخ دهم )تلشهمای قرمز در شمممامل زیر، نشممماندهدم ه ملاطمل مانم ن سمیومت عامل ب ین مدظور اسم( و جابجایی بین این Threadها در صمورت رخ دادن موم لت بالا باعم تومیل سمربار زمانی و ردازشمی اضماتتتری از لواظ عملارد بت برنامت شمما خواه شم . بت همین مدظور برای جلو یری از این موارد، حتما راهدمای و ل برای کار با سمدومورها و نووه دریات بروزرسمانی داده از نها و … را در نظر داشمتت باشی . همچدین بت وسیلت این ابزار، میتوانی ، م ت زمان اجرای هر بخش مثل UI Thread، تابعهای نوشتت ش ه توسمس شمما یا تراخوانیهای سمیومتمی و م ت زمانی کت اجرای هر ک ا بطول انجامی ه را از لوظت ورود بت برنامت رص نمایی.
برای نص این برنامت ابت ا لاز اس Android Studio روی سیوت شما نص ش ه باش . سس:
• Android زیدمت ،Appearance&Behavior > System Settings > Android SDK بمایم در
.نص ش ه باش Studio Tools
• Python بای نص باش و در execution path روژه شما اضاتت ش ه باش.
• دستگاه شما بای نوخت ان روی 4.3 یا بیشتر داشتت باش.
• زیدت USB debugging tool بای در موبایل شما تلاال ش ه باش.
نر اتزار systrace در درا android-sdk-directory]/platform-tools/systrace] قابل دسمترسمی اسم . ترم دستور اجرای این نر اتزار بصورت زیر اس:
$ python systrace.py [options] [categories]
بطور مثال:
$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view
binder_driver hal dalvik camera input res
حتما این لیدک را درباره Systrace مطاللات کدی .
از اجرای نر اتزار، خروجی ن در یک تایل با وون html ذخیره می ردد.
5. سوالات
• از وقتی کت درخواسمم خوان ن داده بت سممدوممور دادهشمم ه تا رتتن داده چت اتفاقاتی در سممطح سیوت عامل اتتادهاس توضیح خود را با خروجی systrace توضیح داده و توجیت کدی .
• چت م ت زمانی ول میکشم تا تغییرات اسمان شم ه از سمطح بر اسماا مق اری کت از سمدومور خوان ه ش ه اس ، روی صفوت نمایش ظاهر شود )تصویر واضح از systrace قرار داده شود(
• بهترین دوره تداو برای خوان ن مقادیر سمدومور شمتا سمد و ژیروسماو چت مق ار اسم با است لال توجیت شود.
• ا ر ازAndroid NDK بجای Android SDK استفاده میش، اسادر شما چت مزایا و ملاایبی خواه داش
• در مورد سممدوممورهای hardware-based و software-based توقیق نمایی و هر یک را تشممریح نمایی . هر ک ا از سدوورهای مورد استفاده در این تمرین در ک ا دستت قرار می یرن
• چت تفاوتی بین تلاریف سمدومور بت صمورت wake-up و non-wake-up وجود دارد ضممن تشمریح مزایا و ملاای هر ک ا ، مشخص کدی کت انجا این کار تاثیری بر نووه دریات بروزرسانی سدوورها و نتیجت اسان سطح دارد
6. نکات مهم
• برای یادهسازی این تمرین تدها میتوانی از زبانهای Java و C++ استفاده نمایی.
• زارش کار بای کامل باشم . بدابراین تمامی تصماویر مربوط بت خروجی برنامت و تصماویر systrace و راا خروجی تغییرات سمطح بای ضممیمت شمود و نمرهدهی بق ن صمورت خواه رت . لذا برای نوشتن ن و اسخ بت سوالات مطرح ش ه وق کاتی بگذاری.
• این تمرین توویل اساایسی دارد.
• عووه بر ک ها، تایل apk مربوط بت یادهسمازی را نیز بای لود کدی . دق کدی کت تایل apk شمما بای ساز ار با ان روی های 6 بت بالا باش.
• ک اسادر شما بای روی وشی واقلای تو ش ه باش )شبیتساز ان روی کاتی نیو( .
• برای نص Android Studio و مطاللات مدابع بت V_P_N نیاز خواهی داش .
• هر ونت شباه در ک ها و زار شها بت عدوان تقل در نظر رتتت خواه ش.
• تولس بت تما بخش های تمرین از راه ان ازی ابزارها تا ک های نوشتت ش ه الزامی اس و در تووی ل، از بخشهای مختلف سوال رسی ه خواه ش .
• درصمورتیات هی تجربتای در نوشمتت برنامت ان روی ن اری از همین امروز تمرین را شمرو کدی تا از نظر زمانی بت مشال بر نخوری . میتوانی از این لیدک برای نوشتن اولین برنامت استفاده کدی.
• برای شدایی با مویس Android Studio می توانی این صفوت را ببیدی.
موفق باشی د




Reviews
There are no reviews yet.