
تتعلق هذه التعليمات بكيفية توصيل كاميرا USB بجهاز Raspberry Pi أو BeagleBone Blue واستخدامها مع ROS (نظام تشغيل الروبوت) - لقراءة البيانات من الكاميرا عبر ROS image_view وحتى دفق الفيديو إلى متصفح الويب!
في نهاية الفيديو يظهر عرض على الروبوت EduMip.
1) كمكافأة ، سنقوم بإنشاء نظام ROS الموزع.
2) سيعمل تطبيق Roscore وتطبيق عرض الصور على الكمبيوتر (الرئيسي) وعقدة الكاميرا على Raspberry Pi (الرقيق).
3) لتكوين الرئيسي والعبد ، نحتاج إلى تحديث متغيرات البيئة على كلا الجهازين.
4) في المعالج: ابحث عن عنوان IP الخاص بالجهاز. بالنسبة إلى إيثرنت ، يمكن أن يكون net_dev إما enpXXs0 أو ethX:
$ ifconfig {net_dev} ifconfig enp61s0 ifconfig
5) استخدم عنوان IP كقيمة للمتغير ROS_IP:
$ export ROS_IP="10.42.0.1"
6) وبالنسبة لـ ROS_MASTER_URI:
$ export ROS_MASTER_URI="http://10.42.0.1:11311"
7) إذا كنت ترغب في استخدام هذه القيم للجلسات المستقبلية ، يمكنك حفظ القيم في ملف .bashrc في الدليل الرئيسي الخاص بك:
$ echo 'export ROS_IP="10.42.0.1"' >> ~/.bashrc $ echo 'export ROS_MASTER_URI="http://10.42.0.1:11311"' >> ~/.bashrc
8) الاتصال بـ Raspberry Pi عبر ssh:
$ ssh {user}@{raspberry_ip}
9) بالنسبة لـ RPi ، كعبد ، أضف عنوان IP الرئيسي لـ ROS_MASTER_URI
10) وعنوان IP لـ Raspberry Pi لـ ROS_IP
$ export ROS_IP="10.42.0.65" $ export ROS_MASTER_URI="http://10.42.0.1:11311" $ echo 'export ROS_IP="10.42.0.65"' >> ~/.bashrc $ echo 'export ROS_MASTER_URI="http://10.42.0.1:11311"' >> ~/.bashrc
11) حان الوقت الآن لتوصيل كاميرا USB.
12) تحقق مما إذا كان النظام يتعرف على الكاميرا:
$ lsusb $ ls /dev | grep video*
13) قم بتثبيت عقدة usb_cam ROS مع التبعيات اللازمة:
$ sudo apt install ros-kinetic-usb-cam
14) لدى مضيف usb_cam بالفعل ملف تشغيل اختبار:
$ cat /opt/ros/kinetic/share/usb_cam/launch/usb_cam-test.launch
15) قبل بدء هذا الملف ، دعنا ندير ROS kernel على الصفحة الرئيسية:
$ roscore
16) والآن قم بتشغيل عقدة usb_cam على الرقيق:
$ roslaunch usb_cam usb_cam-test.launch
17) الآن يمكننا رؤية المواضيع التي تم إنشاؤها. يمكننا التحقق منها على سيد أو عبد.
18) انقل العملية الحالية إلى الخلفية باستخدام CTRL + Z وقم بتشغيل الأمر bg لمتابعة التشغيل في الخلفية. (في إصدار Ubuntu ليس سطح مكتب كامل وبدون شاشة ، فقط قم بتشغيل محطة طرفية أخرى)
19) لمعرفة الموضوعات في المحطة:
$ rostopic list
20) ... أو في الواجهة الرسومية:
$ rqt_graph
21) قراءة بيانات الكاميرا باستخدام image_view:
$ rosrun image_view image_view image:=/usb_cam/image_raw

22) أو باستخدام rqt_image_view
23) اصطحب مهمة الخلفية إلى المقدمة:
$ fg
24) أحدث تجربة حتى الآن هي بث الويب
25) تثبيت خادم فيديو مضيف ROS على الويب:
$ sudo apt install ros-kinetic-web-video-server
26) للقيام بذلك بشكل صحيح ، قم بإنشاء مساحة عمل لـ catkin لملف بدء التشغيل المخصص الخاص بنا:
$ mkdir -p ~/rosvid_ws/src $ cd ~/rosvid_ws $ catkin_make $ source devel/setup.bash
27) ثم قم بإنشاء حزمة ROS:
$ cd src $ catkin_create_pkg vidsrv std_msgs rospy roscpp
28) إنشاء ملف بدء تشغيل باستخدام نانو ، فيم ، وما إلى ذلك:
$ mkdir -p vidsrv/launch $ nano vidsrv/launch/vidsrv.launch
أضف
الرمز من هناعلى Beaglebone Blue مع كاميرا A4Tech USB ، عمل هذا الرمز بالنسبة لي:
<launch> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" > <param name="video_device" value="/dev/video0" /> <param name="image_width" value="352" /> <param name="image_height" value="288" /> <param name="pixel_format" value="mjpeg" /> <param name="camera_frame_id" value="usb_cam" /> <param name="io_method" value="mmap"/> </node> <node name="web_video_server" pkg="web_video_server" type="web_video_server" \ /> </launch>
29) اجمع الحزمة:
$ cd .. $ catkin_make
30) قم بتشغيل نواة ROS على الماجستير مرة أخرى:
$ roscore
31) وقم بتشغيل ملف بدء التشغيل الذي تم إنشاؤه:
$ roslaunch vidsrv vidsrv.launch
32) منفذ خادم فيديو الويب الافتراضي هو 8080
33) فتح URL في متصفح الويب: {RPi_IP}: 8080
روابط التوثيق:
←
عقدة خادم الفيديو←
عقدة كاميرا USB→
عارض صور rqt←
عقدة Raspberry Pi Camera Moduleيمكن استخدام كاميرات USB تقريبًا مع أي برامج تشغيل للينكس ، ويمكنك أيضًا استخدام رابط Raspberry Pi Camera Module بالمثل أعلاه.
مثال على كيفية عمل ذلك على BeagleBone Blue مع كاميرا A4Tech:
ابحث عن بطاقة ثلاثية على الفيديو من كاميرا BealeBone Blue USB (تعمل خوارزمية التعرف على كمبيوتر محمول مع ROS الرئيسي).
