على مدى السنوات القليلة الماضية ، شهدنا إدخال تقنيات الذكاء الاصطناعي في حياتنا اليومية - من المكانس الكهربائية الآلية إلى الطائرات بدون طيار. جميعهم ، الخاضعين لسيطرة الذكاء الاصطناعي ، شائعون بالفعل بالنسبة لنا. لكن على الرغم من ذلك ، فإن عملية التطوير ، من التصميم إلى التنفيذ ، تستغرق سنوات وليست رخيصة. بالإضافة إلى ذلك ، تتطلب خوارزميات التعلم الآلي بيانات كبيرة وليس هناك ما يضمن أن كل شيء سينجح على المدى الطويل.
عاجلاً أم آجلاً ، توصل كل مطور إلى استنتاج مفاده أنه قبل إنشاء روبوت حقيقي ، تحتاج إلى اختبار المفهوم في محاكاة وتصحيح جميع الأنظمة ، وفي النهاية ، فهم ما إذا كان قد تم اختيار مسار التطوير أم لا.
كان لدى الدكتور أندرو هوارد أيضًا أفكار مشابهة عندما بدأ ، مع تلميذه ناثون كوينيج ، في عام 2002 تطوير جهاز محاكاة 3D Gazebo بجامعة جنوب كاليفورنيا. نشأ مفهوم جهاز محاكاة عالي الدقة بسبب الحاجة إلى اختبار الروبوتات في مختلف الظروف الخارجية الصعبة. في المراحل الأولى من التطوير ، يوفر هذا النهج الوقت والمال لشراء المعدات اللازمة.
في هذه السلسلة من المقالات ، أود أن أشارك تجربتي في محاكاة وتدريب مركبة بدون طيار مع كاميرا عادية واحدة فقط كجهاز استشعار.

مرحبا بالجميع. أنا ماجستير العلوم (علوم الكمبيوتر ، ماجستير) في المعلوماتية التطبيقية في جامعة برلين للعلوم التطبيقية (HTW-Berlin).
كجزء من الدورة التدريبية الخاصة بي ، أعمل على أساليب لتدريب الروبوتات المستقلة في بيئة محاكاة باستخدام ROS [1] و Gazebo [2] و OpenAI Gym [3]. ينقسم هذا العمل إلى قسمين.
يكرس الجزء الأول لتطوير إطار من شأنه تبسيط اختبار خوارزميات التعلم التعزيز (التدريب مع التعزيز) على مختلف الروبوتات المستقلة داخل محاكاة Gazebo.
في الجزء الثاني ، سأركز على تنفيذ الخوارزمية للقيادة الذاتية. سوف أعمل على ذلك في الفصل الدراسي التالي ، لذلك سيركز هذا المقال والمقالات التالية بشكل أساسي على تنفيذ بيئة OpenAI Gym في Gazebo. سوف تتأثر التعلم التعزيز (RL) نفسه بشكل سطحي.
يمكن العثور على رمز المشروع الكامل
هنا .
متطلبات النظام
- Ubuntu 18.04 أو Windows WSL Ubuntu 18.04
- بيثون 2.7
- نقطة
- Tenserflow وحدة المعالجة المركزية أو GPU
سوف نستخدم نسخة ROS من Melodic. يحتوي هذا الإصدار على العديد من القيود وأهمها Ubuntu 18 (من الممكن أيضًا تثبيت ROS على Windows WSL وعلى Ubuntu Headless ، ولكن المزيد في ذلك الوقت الآخر). بالإضافة إلى ذلك ، لا يزال ROS لا يدعم Python 3.
الجزء الأول: مقدمة
في هذا الجزء التجريبي ، سأتحدث بإيجاز عن التقنيات التي سيتم استخدامها لتهيئة البيئة. سوف أصف أيضًا عملية التثبيت وفي النهاية سنطلق محاكاة كاملة ، يمكن التحكم فيها من خلال واجهة برمجة تطبيقات Gym.
روس: "لا تعيد اختراع العجلة"
نظام التشغيل الآلي (ROS) هو إطار عمل لبرمجة الروبوتات. ROS هي "غراء برمجي" يمكّن المطورين من التركيز على مهمتهم المحددة. على الرغم من أن ROS ليس نظام تشغيل ، إلا أنه يوفر خدمات مثل استخراج الأجهزة وإدارة الأجهزة منخفضة المستوى وتنفيذ الوظائف المستخدمة بشكل متكرر وتمرير الرسائل بين العمليات وإدارة الحزم (المكونات الإضافية).
تم تصميم ROS كنظام مزدوج الترابط حيث يجب أن تكون العملية التي تسمى العقدة مسؤولة عن مهمة واحدة. تتواصل العقد مع بعضها البعض باستخدام الرسائل التي تمر عبر قنوات منطقية تسمى الموضوعات. يمكن لكل عقدة إرسال أو استقبال البيانات من عقدة أخرى باستخدام نمط الاشتراك - النشر
بالنسبة لـ ROS ، تم بالفعل تشغيل برامج التشغيل التي تسمح بالعمل بطريقة واحدة مع العديد من الأجهزة ، مثل أجهزة التحكم ، GPS ، الكاميرات ، أجهزة ضبط المسافة بالليزر ، إلخ.
وهكذا ، قم بتثبيت ROS Melodic (
تعليمات كاملة )
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt update sudo apt install ros-melodic-desktop-full sudo rosdep init rosdep update echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source /opt/ros/melodic/setup.bash
لسبب ما ، لا تتضمن حزمة التثبيت الكامل بعض الحزم اللازمة. تثبيتها بشكل منفصل:
sudo apt install ros-melodic-ackermann-msgs sudo apt install ros-melodic-effort-controllers sudo apt install ros-melodic-joy sudo apt install ros-melodic-tf2-sensor-msgs
لن نتناولها بالتفصيل. هناك حاجة للسيطرة على الروبوت لدينا ، والتي سوف تناقش في وقت لاحق.
أكشاك
Gazebo عبارة عن محاكي ثلاثي الأبعاد مفتوح المصدر تم تطويره بواسطة مؤسسة
Open Source Robotic Foundation ويتفاعل بشكل وثيق مع ROS. تسمح لك Gazebo بمحاكاة الروبوتات بدقة وكفاءة في ظروف داخلية وخارجية صعبة.
يتكون جهاز محاكاة من خادم
gzserver ، والتي تشارك في حساب الفيزياء ، والتصادمات وأجهزة الاستشعار محاكاة. يمكن للعملاء الاتصال بالخادم ، على سبيل المثال
gzclient (لسطح المكتب) و
gzweb (للمتصفح). هم الذين يقدمون النماذج.
كل هذا يجعل من الممكن اختبار أنظمة روبوتية معقدة في الفضاء الافتراضي أسرع بكثير ودون التعرض لخطر التلف روبوتات باهظة الثمن.
يتم تضمين Gazebo في حزمة تثبيت ROS الكاملة ، لذلك لا تحتاج إلى تثبيت أي شيء آخر. لتكوين مقطوعة الرأس مطلوب
gzweb . سأتحدث عنه في الأجزاء التالية.
OpenAI رياضة
OpenAI هي شركة أبحاث ذكاء اصطناعي غير ربحية شارك في تأسيسها Ilon Max.
OpenAI Gym هي مكتبة Python توفر واجهة برمجة تطبيقات لتطوير ومقارنة خوارزميات RL مع عدد كبير من البيئات الافتراضية وواجهة برمجة التطبيقات المشتركة. الصالة الرياضية لديها بالفعل العديد من البيئات الجاهزة ، بما في ذلك ألعاب أتاري.
openai_ros
يعتمد
مشروعي على الحزمة
openai_ros . تنفذ هذه الحزمة البنية التي اقترحها فريق
Construct . طور شباب Construct إطار عمل مشترك يقوم بتنفيذ API الضروري لإدارة المحاكاة ويصف واجهة برمجة التطبيقات لدمج Gazebo في Gym ، مما يتطلب الحد الأدنى من التنفيذ. يتكون الهيكل المقترح من ثلاث طبقات منطقية (يمكنك بالفعل استخدام أي رقم) ، وأقلها عبارة عن "غراء" آخر يربط واجهة برمجة تطبيقات Gym مع Gazebo. المزيد عن هذا في الجزء التالي ، عندما سنقوم بتحليل الكود.
وضع كل ذلك معا
نحتاج أولاً إلى إنشاء دليل عمل للقطط.
catkin هو نظام أتمتة بناء مثل CMake ، والذي يتم تضمينه بشكل افتراضي في حزمة تثبيت ROS:
cd ~ mkdir catkin_ws cd catkin_ws/ mkdir src cd src/
واستنساخ حزم ROS اللازمة.
ميت racecar
نحتاج إلى نموذج روبوت طورته شركة MIT بجميع أجهزة الاستشعار.
git clone https://github.com/mit-racecar/racecar.git git clone https://github.com/mit-racecar/racecar-simulator.git
openai_ros
git clone https://bitbucket.org/theconstructcore/openai_ros.git
neuroracer
حسنا ، في الواقع ، المشروع نفسه
git clone https://github.com/karray/neuroracer.git
بعد ذلك ، تحتاج إلى تجميع كل هذه الحزم
cd ~/catkin_ws catkin_make
تحتاج أيضًا إلى تثبيت جميع مكتبات python اللازمة.
pip install -U numpy tensorflow gym keras
تشغيل المحاكاة
لتشغيل أي حزمة ROS ، نحتاج أولاً إلى تحميل جميع حزم ROS التي جمعناها في الجلسة النهائية الحالية:
source ~/catkin_ws/devel/setup.bash
الآن يمكننا تشغيل محاكاة روبوت Racecar:
roslaunch racecar_gazebo racecar_tunnel.launch
سيُطلق هذا الأمر خادم ROS الرئيسي وخادم Gazebo مع واجهة المستخدم الخاصة به (على سطح المكتب) ، ويقوم بتحميل الروبوت والعالم من أجله.
لقطة الشاشة:
والشيء نفسه في المحطة الثانية لخوارزمية RL لدينا:
source ~/catkin_ws/devel/setup.bash roslaunch neuroracer_gym_rl qlearning.launch
سيقوم هذا الفريق بإطلاق حزمة
neuroracer_gym_rl الخاصة بنا ، والتي تنفذ خوارزمية Q-Learning بسيطة في بيئة الصالة الرياضية لدينا. سنقوم بتحليلها في الجزء التالي.
أولئك الذين لا يستطيعون الانتظار يمكنهم العثور على الكود المصدري
هنا . في المستقبل ، أقول أنه بعد عدة أيام من التدريب على خادم باستخدام بطاقة ذاكرة الوصول العشوائي GeForce GTX 1080 Ti 11GB ، فإن هذه الخوارزمية البسيطة لم تتعلم شيئًا. في الجزء التالي ، سأذكر الأسباب المحتملة ، لكن الآن يمكنك تجربة التنفيذ.
الخاتمة
وهكذا ، لدينا محاكاة تعمل بشكل كامل لسيارة مستقلة وقوالب لوغاريتم RL جاهزة. في الجزء التالي ، سنقوم بتحليل openai_ros بمزيد من التفصيل ومناقشة أجهزة الاستشعار المثبتة على الروبوت ، وبعد ذلك سأوضح كيفية تنفيذ الخوارزميات الخاصة بي وما هي المشاكل التي قد تنشأ أثناء التدريب.
ملاحظة: هذه هي تجربتي الأولى في كتابة مقال. لذلك ، لا تتردد في الكتابة إذا وجدت أخطاء أو كانت لديك أفكار أو انتقادات بناءة. سأحاول أخذ هذا في الاعتبار في الأجزاء التالية.
المراجع
[1] (M. Quigley و K. Conley و B. Gerkey و J. Faust و T. Foote و J. Leibs و R. Wheeler و AY Ng. Ros: نظام تشغيل روبوت مفتوح المصدر. في ورشة عمل ICRA على برمجيات المصدر المفتوح ، المجلد 3 ، صفحة 5. كوبي ، اليابان ، 2009.
[2] NP Koenig و A. Howard. تصميم واستخدام نماذج لشرفة المراقبة ، محاكاة متعددة الروبوتات مفتوحة المصدر.
في IROS ، المجلد 4 ، الصفحات 2149-2154 . سايتسير ، 2004.
[3] LPJSJSJTWZ جريج بروكمان ، فيكي تشيونغ. Openai gym، 2016،
arXiv: 1606.01540