ROS中階筆記(一):機器人系統設計—ROS系統下連接外部傳感器
01 連接攝像頭
1.1 ROS下連接usb_cam
https://answers.ros.org/question/197651/how-to-install-a-driver-like-usb_cam/
1.1.1 前期准備
步驟一,虛擬機設置(vmware15.0 以上)
在虛擬機菜單欄中選擇“虛擬機(M)”->選擇“可移動設備”->選擇“xxxx Camera”->選擇“連接(斷開與主機連接)”,設置完這項之后,虛擬機接管了筆記本攝像頭。
步驟二,檢測電腦是安裝usb_cam還是應該安裝uvc_cam
$ lsusb #查看usb攝像頭
打開網址:http://www.ideasonboard.org/uvc/,查看與自己攝像頭匹配的ID號。
如果有,就說明你的筆記本攝像頭比較好,有他的廠商提供的linux驅動,是uvc_cam
沒有匹配的ID,說明是usb_cam。
Bus 001 Device 002: ID 04f2:b6d9 Chicony Electronics Co., Ltd #攝像頭
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc.
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
步驟三,查看攝像頭設備
$ ls /dev/video* #默認筆記本自帶攝像頭是video0
步驟四,測試您的網絡攝像頭;(虛擬機+ubuntu16.04)
$ sudo apt-get install cheese
$ cheese # 啟動cheese查看攝像頭情況
1.1.2 問題
- 問題一:步驟四 的問題
(cheese:5620): Clutter-WARNING **: Whoever translated default:LTR did so wrongly.
說明:因為我的筆記本為拯救者Y7000最新版2020,usb端口都為3.0以上,usb2.0根本沒有,因此攝像頭也開啟不了;
解決方法:虛擬機設置—usb控制器—usb兼容性—改為(usb3.0),注意一定要關閉虛擬機設置;然后重啟。
1.1.3 安裝usb_cam
官網:http://wiki.ros.org/usb_cam
在ROS下常用的主要有兩種驅動包:usb_cam和uvc_cam。
$ sudo apt-get install ros-kinetic-usb-cam # 安裝攝像頭功能包
$ roslaunch usb_cam usb_cam-test.launch # 啟動功能包
$ rqt_image_view # 可視化工具
新版本的usb_cam包在launch文件夾下有自帶的launch文件,名叫usb_cam-test.launch
如果工作空間的usb_cam包中不帶這個launch文件我們就要新建它:
用文本編輯器打開,寫入以下代碼:
<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="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
保存,並關閉這個文件。
1.2 連接Kinect
$ sudo apt-get install ros-kinetic-freenect-* # 安裝功能包
$ git clone https://github.com/avin2/SensorKinect.git # 下載底層驅動
$ cd SensorKinect/Bin
$ tar xvf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2 # 64bit
$ cd Sensor-Bin-Linux-x64-v5.1.2.1/
$ sudo ./install.sh #install腳本安裝
kinect的驅動文件在/opt/ros/kinetic/share/freenect_launch/launch/freenect.launch
第一步,可將freenect.launch文件復制出來,在當前頁面打開終端,輸入以下命令:
$ roslaunch freenect.launch
第二步,新打開一個終端:
$ rosrun rviz rviz #在rviz工具中查看kinect獲取圖像
在rviz界面中添加點雲和Image插件,設置點雲的話題,和Fixed Frame
02 連接激光雷達
$ sudo apt-get install ros-kinetic-rplidar-ros # 安裝功能包,包含驅動
$ rosrun rplidar_ros rplidarNode # 運行rplidar激光雷達,激光雷達360度旋轉
$ sudo gpasswd --add USER_NAME dialout # 解決串口權限問題
$ rostopic echo /scan # 激光雷達數據顯示
$ rosrun rviz rviz
03 參考教程
ARM架構開發板可參考:http://wiki.ros.org/indigo/Installation/UbuntuARM
常用傳感器的ROS驅動可參考:http://wiki.ros.org/Sensors
