كيفية استخدام كاميرا USB مع ROS على Raspberry Pi أو BeagleBone Blue - لدفق الفيديو إلى جهاز كمبيوتر كبير



تتعلق هذه التعليمات بكيفية توصيل كاميرا 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> <!-- This node description you can take from usb_cam-test.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> <!-- This node will launch web video server --> <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 الرئيسي).

Source: https://habr.com/ru/post/ar414859/


All Articles