
本指南是关于将USB摄像机连接到Raspberry Pi或BeagleBone Blue并将其与ROS(机器人操作系统)一起使用-通过ROS image_view从摄像机读取数据,甚至将视频流传输到Web浏览器!
视频末尾是EduMip机器人的演示。
1)作为奖励,我们将创建一个分布式ROS系统。
2)Roscore应用程序和用于查看图像的应用程序将在PC(主机)和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)通过ssh连接到Raspberry Pi:
$ ssh {user}@{raspberry_ip}
9)对于RPi,作为从属,添加ROS_MASTER_URI的主IP地址
10)以及Raspberry Pi的ROS_IP的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)在开始此文件之前,让我们在master上运行ROS内核:
$ roscore
16)现在在slave上运行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)使用nano,vim等创建启动文件:
$ mkdir -p vidsrv/launch $ nano vidsrv/launch/vidsrv.launch
从这里发布
代码在带有A4Tech usb相机的Beaglebone Blue上,此代码对我有用:
<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)再次在master上运行ROS内核:
$ roscore
31)并运行创建的启动文件:
$ roslaunch vidsrv vidsrv.launch
32)默认的Web视频服务器端口为8080
33)在网络浏览器中打开URL:{RPi_IP}:8080
文档链接:
→
视频服务器节点→
USB摄像头节点→
rqt图像查看器→
Raspberry Pi相机模块节点USB摄像头几乎可以用于任何具有linux驱动程序的驱动器,您也可以类似使用Raspberry Pi摄像头模块链接。
使用A4Tech相机在BeagleBone Blue上如何工作的示例:
从BealeBone Blue USB摄像机的视频中搜索三张卡(识别算法可在具有主ROS的笔记本电脑上使用)。
