كيف يعمل النظام؟
2 دقيقتان قراءة
شرائح الدرس
1 / 12
كيف يعمل النظام؟
لديك مساحة عمل (Workspace) واحدة (مثال: خاصة بالمؤسسة كلها)، وهذه المساحة تحتوي على مجموعة من الحزم (packages) بحيث تكون كل حزمة مسؤولة عن مهمة محددة (مثال: متحكم الروبوت "Robot controller" أو مُشغِّل الكاميرا "camera driver")، وكل حزمة تحتوي على مجموعة من الـnodes التي تتواصل مع بعضها البعض باستخدام نموذج النشر والاشتراك (pub-sub).
تثبيت colcon (أداة البناء التي تستخدم نظام البناء "ament")
colcon هي أداة سطر أوامر تُحسِّن سير عمل بناء واختبار واستخدام حزم برمجية متعددة. فهي تُؤتمت هذه العملية، وتتولى ترتيب الحزم، وتُهيئ البيئة اللازمة لاستخدامها.
sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install python3-colcon-common-extensions
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bashإنشاء مساحة العمل الخاصة بك
mkdir -p ros_ws/src
cd ros_ws
colcon build
source install/setup.bashإنشاء حزمة (pkg)
-
لإنشاء حزمة ++C
ros2 pkg create my_first_pkg -
لإنشاء حزمة بايثون (Python)
ros2 pkg create my_first_py_pkg --build-type ament_python --dependencies rclpy -
الآن أعد بناء مساحة العمل (WS) من جديد
إنشاء أول node تكتبه
touch ./my_first_py_pkg/my_first_py_pkg/my_first_node.py
chmod +x ./my_first_py_pkg/my_first_py_pkg/my_first_node.py
اكتب الكود الخاص بالـnode
- يمكنك الرجوع إلى هذا المقال Write a Minimal ROS2 Python Node
أضِف الملف التنفيذي (executable) لحزمة node الخاصة بـROS وشغّل الـnode
- أضِف هذا إلى الملف "ros_ws/my_first_py_pkg/setup.py"
entry_points={
'console_scripts': [
"test_node = my_first_py_pkg.my_first_node:main"
],
},-
الآن أعد بناء مساحة العمل (WS)
-
يمكننا استخدام خيار symlink install من colcon حتى لا نحتاج لإعادة بناء مساحة العمل كل مرة نُغيّر فيها كود بايثون
colcon build --symlink-install -
ثم شغّل الـnode باستخدام أمر ros
ros2 run my_first_py_pkg test_node
الحصول على معلومات حول الـnodes
# عرض الـnodes قيد التشغيل - الـtopics وعمليات النشر والاشتراك
rqt_graph
# عرض قائمة الـnodes
ros2 node list
# الحصول على معلومات حول node معينة
ros2 node info /my_first_node