استمرار سلسلة المقالات.
المشاركات في السلسلة:
8. نحن نتحكم من الهاتف ROS Control ، GPS العقدة7. توطين الروبوت: gmapping ، AMCL ، النقاط المرجعية على خريطة الغرفة6. المسافات مع ترميز عجلة ، خريطة الغرفة ، ليدار5. نحن نعمل في rviz وشرفة المراقبة: xacro ، أجهزة استشعار جديدة.4. قم بإنشاء محاكاة روبوت باستخدام محرري rviz و gazebo.3. تسريع ، تغيير الكاميرا ، إصلاح المشية2. البرمجيات1. الحديدعند إنشاء خرائط على روبوت داخل مساحة محدودة ، لا توجد مشاكل. من خلال التحكم في الروبوت من لوحة المفاتيح من محطة التحكم أو على الروبوت نفسه ، يمكنك مراقبة تحركاته بشكل مرئي وتجنب العقبات غير المرغوب فيها في الوقت المناسب. الوضع معقد إذا كان هناك عدة غرف. وهنا توجد عدة خيارات لمراقبة الروبوت الذي يبني خريطة إذا ما ترك غرفة المشغل:
- توصيل الكاميرا مباشرة إلى الروبوت.
- استخدام نظام المراقبة بالفيديو الموجود خارج الروبوت ؛
- التحكم مع واي فاي ، لوحة المفاتيح بلوتوث ، ويجري بالقرب من الروبوت
- "احمل الروبوت بين ذراعيك" حتى يجمع اللدائن البيانات ؛
- التحكم في الروبوت من الهاتف.
قد يبدو الخيار الأخير مناسبًا. للتحكم في الروبوت من الهاتف ، ما عليك سوى إمالة (الهاتف) في الاتجاه الصحيح ، بينما يقوم الروبوت بإنشاء خريطة. هذه المهمة ممكنة.
دعنا نفكر في كيفية توجيه الروبوت من الهاتف ، وإرسال الرسائل المناسبة إلى موضوعات ROS على الروبوت.
كتابة تطبيق منفصل على الهاتف للأغراض المذكورة ليست ضرورية. للاستفادة من الممارسات الحالية ، ما عليك سوى تنزيله على هاتفك وتثبيت تطبيق android من السوق - "ROS Control".
قم بإعداد تطبيق ROS Control على هاتفك.
التطبيق سهل الاستخدام - تتم إضافة روبوت بعلامة "+" ، يتم تعيين عنوان IP الخاص به:
بعد ذلك ، حدد "إظهار الخيارات المتقدمة" ووصف الموضوعات لعربة الروبوت:
ستنقل الرسائل من الهاتف إلى هذه المواضيع ، وسيتم قبولها أيضًا بتنسيق يفهمه نظام ROS.
في التطبيق ، تتوفر الموضوعات لنا:
- موضوع عصا التحكم - التحكم من الهاتف.
- موضوع المسح الضوئي بالليزر - بيانات من اللد ؛
- nav السبت الموضوع - بيانات الروبوت GPS.
- odom - odometry (كل ما يحصل هناك من أجهزة التشفير و / أو imu و / أو ليدار) ؛
- تشكل - "الموقف" ، وموقع الروبوت.
السيطرة على موضوع عصا التحكم.
لن يذهب الروبوت نفسه ، لذلك ، سنطلق موضوعًا على الروبوت باستخدام برنامج تشغيل الحركة ، والذي تم عرضه بالفعل في المشاركات السابقة:
المحطة الأولى:
rosrun rosbots_driver part2_cmr.py
على الهاتف في تطبيق التحكم ROS ، انقر فوق السطر الذي يحمل اسم الروبوت وفشل في قائمة التحكم في الروبوت:
الآن ، إذا قمت بسحب ذراع التحكم بإصبعك (في أي اتجاه) ، فستذهب العربة ، كل شيء بسيط هنا.
إذا نظرت إلى ما يحدث مع موضوع برنامج تشغيل المحرك الذي يعمل على التوت ، فسترى أن الهاتف ينشر ويتلقى برنامج التشغيل الرسائل بالتنسيق المناسب:

جميع المواضيع الأخرى تعمل على نفس المبدأ.
* مع ذلك ، إذا حدث خطأ ما ، فمن الضروري أن تكون في وضع التحكم في الروبوت ، انقر فوق ثلاثة أشرطة متوازية في الجزء العلوي الأيسر من شاشة التطبيق. فشل في "التفضيلات" ثم حدد "المواضيع":
بعد ذلك ، بالنقر فوق الموضوع المناسب ، قم بتسجيل المسار (القيمة):
دعونا نرى ما هو lidar في التطبيق.
على الروبوت ، قم بتشغيل عقدة lidar:
roslaunch rplidar_ros rplidar.launch
إذا قمت بإعادة إدخال التطبيق ، فسوف نرى على شاشة التحكم الآلي نقاط مميزة وسهم أزرق:
* يمكنك أيضًا ركوب السيارة عن طريق إمالة الهاتف في اتجاهات مختلفة وتحديد وضع التحكم في الإمالة:
هناك أوضاع أخرى من "القيادة" ، حتى مع القدرة على الإشارة إلى نقطة على الخريطة ، مباشرة على الهاتف ، ولكن نظرًا لأن الخريطة تعسفية للغاية ، ستكون الرحلة مشروطة أيضًا ، أي أنها لن تذهب إلى أي مكان.
مع موضوعات الحركة ، مثل الكاميرات (لن نفكر فيها) ، كل شيء أكثر أو أقل وضوحًا ، سنتعامل مع نظام تحديد المواقع العالمي (GPS).
لا يوجد أي معنى في الغرفة من خلال نظام تحديد المواقع العالمي (GPS) ، ولكن من المثير للاهتمام معرفة كيفية عمله.
للاختبارات ، أي صافرة GPS مناسبة. خياري هو كما يلي -
لجعله يعمل ، تحتاج أولاً إلى تثبيت عقدة GPS على التوت.
ولكن أولاً ، دعونا نتحقق مما إذا كانت صفارة GPS تعمل ، وإلا فإن جميع المحادثات الأخرى ستكون في صالح الفقراء.
نضع الحزم على التوت:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients
تحقق من تحديد صافرة GPS بين أجهزة USB:
lsusb

الآن ، تحقق من أن GPS يقبل شيئًا:
gpscat -s 9600 /dev/ttyACM1
* بدلاً من ttyACM1 ، قد تكون هناك قيم أخرى (ttyACM0 ، ttyUSB0 ، ttyAMA0) وفقًا للمنفذ الذي يتم تشغيل صفارة GPS عليه.
سوف تتناثر رسائل GPS في الجهاز:
يمكن الحصول على بيانات أكثر تنظيماً (إرضاء للعين) على النحو التالي:
gpsmon /dev/ttyACM1
* الإحداثيات ليست لي ، وهو أمر غريب. ليس من الواضح ما يرتبط هذا.
تثبيت العقدة GPS على التوت:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make
الآن بعد أن قمنا بتجميع عقدة GPS ، قم بتشغيلها (على الروبوت):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600
إذا نظرت إلى الموضوعات (في محطة أخرى من الروبوت) ، يمكنك أن ترى أن الهاتف مشترك في موضوع واحد ، وأن نشر عقدة GPS ينتقل إلى موضوع آخر:
قم بتغيير موضوع الاستلام على الهاتف إلى موضوع / fix من خلال الإعدادات كما هو موضح أعلاه.
بعد التغيير ، نشر واستقبال في موضوع واحد:
وعلى الهاتف ، يمكنك مراقبة الإحداثيات:
قياس المسافات (الموضوع / odom).
إذا قمت بتشغيل ملاحظة عداد المسافات من المشاركات السابقة ، فعندما يتحرك الروبوت ، يمكنك أيضًا الحصول على سرعات خطية وزاوية للروبوت على الهاتف (لا يتم حساب السرعات باستخدام نظام تحديد المواقع العالمي).
على الروبوت:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py
على الهاتف: