تحتوي حاوية Docker هذه على ROS 2 Humble وGazebo Fortress ومحاكاة TurtleBot 4. تم تكوين حاوية Docker للعمل بشكل جيد على الأجهزة الأساسية بدون بطاقة رسومات. يجب أن تكون معظم الأجهزة التي تم تكوينها بشكل معقول قادرة على تشغيل المحاكاة بعامل الوقت الفعلي الذي لا يقل عن 0.2.
من المفترض أن يتم استخدام حاوية Docker هذه مع رمز المثال هذا لعقدة لعبة TB4 وPyCon 2024 talk أو ROSCon 2024 Workshop المرتبطة بها
يتضمن Docker أيضًا تثبيتًا كاملاً لـ ROS 2 Humble. إذا كنت ترغب في تحسين مهاراتك في ROS، فيمكنك العمل من خلال دروس ROS 2 التعليمية. نقترح عليك البدء ببرامج CLI التعليمية.
تتيح لك ورشة العمل هذه اختيار مغامرتك الخاصة. أمامك قراران كبيران عليك اتخاذهما:
ولكن انتظر، هناك المزيد! هل تريد فقط تجربة بعض البرامج التعليمية الرائعة الموجودة على docs.ros.org، فلدينا أيضًا تعليمات حول كيفية القيام بذلك أيضًا!
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
source .//bin/activate
قبل بدء الحاوية الخاصة بك.إذا كنت ترغب في إنشاء حاوية Docker من البداية:
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
إذا كنت ترغب في استخدام صورة Docker المضمنة مسبقًا، فقم بتشغيل:
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
لنبدأ بالحديث عن كيفية بدء الحاوية الخاصة بك. لقد قدمنا خيارين للتشغيل خلال ورشة العمل. ألقِ نظرة أدناه ولكن لا تبدأ الحاوية بعد! لديك عدد قليل من الخيارات لاتخاذ قرار بشأن!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
لاحظ أن كل ما تغير هنا هو اسم الحاوية، وهو المعلمة الثانية قبل الأخيرة!
الآن عليك أن تقرر المكان الذي تريد حفظ عملك فيه. لديك خياران، البدء من الصفر وبناء كل شيء بنفسك، أو المتابعة من المشروع النهائي. هناك أيضًا خيار ثالث، حيث تبدأ الحاوية للتو ولكن تستخدم أدوات Docker الداخلية لحفظ عملك. في حين أن هذا ممكن بالتأكيد، إلا أننا لا نوصي به.
إذا كنت تريد العمل من الصفر، وهو سير العمل المفضل لدينا، فكل ما عليك فعله هو إنشاء دليل:
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
حيث تم استبدال الدليل بـ الدليل الجديد، والحاوية هي الحاوية التي تريد استخدامها.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
إذا كنت تريد العمل من مثال التعليمات البرمجية النهائية، يرجى القيام بما يلي
git clone [email protected]:kscottz/tb4_toy.git
- إليك الرمز إذا كنت تريد إلقاء نظرة خاطفة فقط.rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
حيث تم استبدال الدليل بـ الدليل الجديد، والحاوية هي الحاوية التي تريد استخدامها.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
لاحظ أن هذا البرنامج التعليمي سيتطلب منك العمل داخل الحاوية في جميع الأوقات ويجب أن يترك نظامك المضيف دون تغيير. *إذا قمت بتغيير التكوين الداخلي لحاوية Docker وأردت حفظه، فستحتاج إلى استخدام [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
للحفظ عملك.
إذا كان الكمبيوتر المحمول الخاص بك يحتوي على بطاقة رسوميات فاخرة، فيمكنك تمكينها عن طريق حذف السطر: --devices=/dev/dri
عند بدء تشغيل الحاوية الخاصة بك. إذا كان لديك بطاقة رسومات منفصلة فننصحك باستخدامها! إذا لم يكن لديك بطاقة رسوميات، فلا تقلق! لقد قمنا بتكوين ورشة العمل هذه خصيصًا للعمل على أجهزة الكمبيوتر المحمولة القديمة.
تحتوي حاوية ورشة العمل هذه على معظم برامج التحرير الطرفية الشائعة الموجودة في أنظمة Linux. أنت أكثر من موضع ترحيب لاستخدامها. إذا قمت بتثبيت نظام الملفات الخاص بك في Docker، فيمكنك أيضًا استخدام أي محرر على الأنظمة المضيفة لديك لتحرير الملفات. إذا لم تستخدم مطلقًا محررًا طرفيًا من قبل، فقد يكون هذا هو الأسلوب الأسهل.
لدينا دليل شامل لاستخدام هذه الحاوية بدون Rocker المتوفر هنا. يتضمن هذا الدليل عددًا من نصوص Bash النصية التي تجعل بدء حاوية Docker المناسبة أمرًا سهلاً! يوفر هذا الدليل أيضًا بعض الأساليب البديلة لتنفيذ تطوير ROS داخل الحاوية.
بمجرد بدء تشغيل الحاوية الخاصة بك، يمكنك تشغيل ROS وGazebo عن طريق تشغيل الأوامر التالية:
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
source ./install/setup.bash
colcon build
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 30.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
ros2 run teleop_twist_keyboard teleop_twist_keyboard
ros2 run tb4_toy toy_node
ros2 service call /do_loopy std_srvs/Trigger '{}'