از #CrowdBot چه خبر؟

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


مهمان بچه های UCL بودیم برای یک آزمایش یک روزه توی آزمایشگاه PAMELA. موضوع این بود که ببینیم حضور ربات چه تاثیری بر رفتار حرکتی انسانها داره.


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


این مساله و مسائل مشابه در حوزه رباتیک باعث شده تا یک زمینه کاملا تخصصی شکل بگیره که به جوانب مختلف این موضوع می پردازه:
Human Robot Interaction


تو این آزمایش بطور خلاصه ما قصد داشتیم ربات Pepper و ویلچر خودران رو توی جمعیت "شلوغ" قرار بدیم و تغییرات رفتاری شرکت کننده ها رو بررسی کنیم. تعداد 30 شرکت کننده (ناشناس) از طریق درگاه مخصوص دانشگاه UCL ثبت نام کردند تا توی این آزمایش شرکت کنند.
این آزمایش در واقع توسط دوستم Pat دانشجوی UCL تعریف و طراحی شده بود. و من برای کمک در فرایند ضبط و پردازش ویدیوها اضافه شدم.


بخش دوم


خب همونطوری که گفتم هدف از آزمایش، بررسی تاثیر ربات روی حرکات شرکت کننده ها بود.
وسط آزمایشگاه PAMELA یک پلتفرم 80 متری قرار گرفته که آزمایش اونجا انجام میشه. 4 دوربین معمولی (از نوع نظارتی) و یک دوربین 360 درجه یا FishEye ، تمام سطح پلتفرم رو پوشش میدن تا امکان ضبط و پردازش داده ها وجود داشته باشه.


اما قبل هر چیز، به تعدادی شرکت کننده نیازه! دانشگاه UCL یک بستر آنلاین رو برای استخدام افراد طراحی کرده که ما بایستی از اون استفاده میکردیم. آگهی روی این سایت قرار میگیره و علاقمندها میتونن برای این آگهی درخواست بدن. شرکت توی آزمایش هم رایگان نیست. به هر شرکت کننده بعد از تموم شدن آزمایش 15 پوند بصورت نقدی پرداخت میشه. (معادل حداقل دستمزد توی انگلیس برای دو ساعت کار) که البته این یک الزامه که شما حق ندارید شرکت کننده رو بدون دستمزد استخدام کنید! ما 30 نفر رو استخدام کردیم. از نکات مثبت لندن هم اینه که انقدر تنوع قومی و فرهنگی زیاده که میشه طیف گسترده ای از رفتارها و شخصیتها رو توی آزمایش مشاهده کرد.



با کمک دیواره های قابل حمل، روی پلتفرم شرایطی رو طراحی کردیم که مثل یک راهروی باریک با یک درب بشه. شرکت کننده ها (و ربات) همگی باید از یک سوی راهرو شروع به حرکت کرده، از درب عبور کنند و به سوی دیگه ی راهرو برسند. ناحیه ای که شرکت کننده ها آزمایش رو شروع میکنند تقریبا معادل 21 متر هست. این به ما چگالی 1.5 نفر بر متر مربع رو میده که شرایط بسیار شلوغی محسوب میشه.
به هر شرکت کننده یک کلاه رنگی (قرمز - زرد) دادیم تا کله ی فرد توی تصویر بوضوح دیده بشه.
ما سناریوهای مختلفی رو تست کردیم:


1. بدون ربات / با ربات
2. درب پهن/درب کوچک
3. ربات Pepper / ویلچر خودران
4. سرعتهای مختلف ربات


علاوه بر این ما هر سناریو رو 5 بار اجرا کردیم، با چیدمانهای مختلف افراد. تا هم اینکه اطلاعات بیشتری ضبط کنیم و بایاس توی نتایج کمتر بشه و هم اینکه نتیجه ی آزمایش به یک یا چند شرکت کننده ی مشخص وابستگی پیدا نکنه.


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


⚠️ خطر: اگر خیلی اهل برنامه نویسی نیستید نخوانید!


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


برای استخراج این مسیرها از تصاویر دوربین Fisheye (چشم ماهی) استفاده کردیم. اما اولین مساله ای که پیش میاد اینه که تصویر بصورت محدب و شبیه یک کره است و اگه به خطوط روی زمین توجه کنید، میبینید که به شکل منحنی دیده میشن. به این پدیده توی تصاویر Radial distortion یا «اعوجاج کروی» میگن (ترجمه‌ی خودم هست).


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


خوشبختانه این مساله تا حدودی قابل حله. در حقیقت اعوجاج کروی رو با یک تابع درجه 7 بین نقاط تصویر سالم و تصویر معوج! تخمین میزنند. این تابع 3 پارامتر مجهول داره و شما باید این مجهولها رو پیدا کنید تا بتونید تصویر اصلی رو بنوعی بازسازی کنید. این فرایند camera calibration نامیده میشه که شامل پارامترهای مختلف دوربین میشه. البته نکته اینجاست که برای دوربینهای Fisheye این مدل خیلی کارامد نیست و ما از مدل مخصوص Fisheye باید استفاده کنیم.


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


اما چطور میشه کالیبراسیون رو انجام داد؟
یک راه مرسوم برای این کار، استفاده از «صفحه شطرنج» هست. به این ترتیب که شما یک صفحه‌ی شطرنج رو مقابل دوربین میگیرید و توی زوایای مختلف میچرخونید و تعدادی فریم (حداقل 10 تا) ضبط میکنید. خطوط صاف صفحه‌ی شطرنج منحنی هایی رو توی تصاویر بوجود میارن که شما رو کمک میکنه تا در یک «مساله بهینه سازی» پارامترهای مجهول دوربین رو پیدا کنید.


کتابخونه opencv و نرم افزار Matlab توابع آماده‌ای برای این کار دارند. جعبه ابزار Camera Calibrator متلب یک رابط کاربری بسیار قوی داره که میشه این کار رو براحتی و حتی بدون یک خط کد انجام داد و ما هم از همین استفاده کردیم.


ما نهایتا تابع Undistort متلب رو با پارمترهایی که پیدا کردیم روی ویدیوها اعمال کردیم. نتیجه‌ی این فرایند جالب رو میتونید تو تصویر زیر ببینید. البته ممکنه تعجب کنید که چرا "قد" افراد انقد غیرطبیعی شده! بله. این فرایند در نهایت باعث میشه اشیایی که دارای ارتفاع هستن فرم اصلی‌شون رو از دست بدن، اما مزیتش این هست که نهایتا انگار شما از بالا به یک صفحه نگاه میگنید که هر شکلی که روی زمین قرار داره، در تصویر به همون شکل دیده بشه. به زبان ساده این تبدیل باعث میشه موقعیت افراد در زمین براحتی از روی موقعیت پیکسل هاش قابل محاسبه بشه.