機器人建模與仿真
URDF(Unified Robot Descrption Format,統一機器人描述格式),ROS提供了URDF的c++解析器。
安裝語法檢查工具
sudo apt-get install liburdfdom-tools
檢查urdf語法
check_urdf xxx.urdf
查看urdf模型的整體結構
urdf_to_graphiz xxx.urdf
===========================================================
機器視覺
攝像頭標定:攝像頭本身存在光學畸變,可以使用camera_calibration功能包實現雙目和單目攝像頭的標定。
基於OpenCV的人臉識別和物體跟蹤:可以使用cv_bridge功能包實現
二維碼識別:可以使用ar_track_alvar功能包創建多種二維碼標簽,並且可以使用攝像頭或Kinect實現二維碼的識別與定位
物體識別:ORK是ROS中的物體識別框架,提供了多種物體識別的方法。需要將已知物體模型進行訓練,通過模式匹配的方式識別三維物體的位置。
二維圖像數據
啟動攝像頭
roslaunch usb_cam usb_cam-test.launch
查看當前系統中的圖像話題
rostopic info /usb_cam/image_raw
查看圖像信息的詳細定義
rosmsg show sensor_msgs/Image
查看圖像的壓縮消息類型
rosmsg show sensor_msgs/CompressedImage
三維點雲數據
查看三維點雲數據消息類型
rostopic info /camera/depth_registered/points
rosmsgs show sensor_msgs/PointCloud2
攝像頭標定(camera_calibration)
安裝
sudo apt-get install ros-kinetic-camera-calibration
啟動攝像頭
roslaunch robot_version usb_cam.launch
啟動標定程序
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0254 image:=/usb_cam/image_raw camera:=/usb/cam
標定Kinect
包含兩個攝像頭:一個RGB攝像頭,一個紅外深度攝像頭,兩個攝像頭需要分別標定,方法同USB攝像頭的標定相同
命令如下:
roslaunch robot_vision freenect.launch
rosrun camera_calibration cameracalibrator.py image:=/camera/rgb/image_raw camera:=/camera/rgb --size 8x6 --square 0.024
rosrun camera_calibration cameracalibrator.py image:=/camera/ir/image_raw camera:=/camera/ir --size 8x6 --square 0.024
加載標定參數的文件(YAML格式)
例如攝像頭文件為:robot_vision/launch/usb_cam_with_calibration.launch
OpenCV庫(Open Source Computer Vision Library)開源計算機視覺庫
實現了圖像處理和計算機視覺方面很多通用算法。
安裝
sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv
使用cv_bridge實現ROS和OpenCV之間圖像的轉換
roslaunch robot_vision usb_cam.launch
rosrun robot_vision cv_bridge_test.py
rqt_image_view
主要應用 人臉識別 和 物體跟蹤。
二維碼識別(ar_track_alvar)
安裝
sudo apt-get install ros-kinetic-ar-track-alvar
生成二維碼
rosrun ar_track_alvar createMarker AR_ID
eg:
rosrun ar_track_alvar createMarker 0
查看幫助
rosrun ar_track_alvar createMarker
創建一系列二維碼標簽
roscd robot_vision/config
rosrun ar_track_alvar createMarker -s 5 0
rosrun ar_track_alvar createMarker -s 5 1
rosrun ar_track_alvar createMarker -s 5 2
攝像頭識別二維碼
ar_track_alvar功能包支持USB和RGB-D攝像頭作為識別二維碼的視覺傳感器,分別對應於individualMarkersNoKinect和invidualMarkers兩個不同的識別節點。
物體識別框架(OKR, Object Recognition Kitchen)
包含了多種三維物體識別的方法。
安裝
sudo apt-get install ros-indigo-object-recognition-kitchen-* 備注:沒有安裝成功(ubuntu16.04)
kinetic版本下的安裝:
1)安裝依賴庫
sudo apt-get install meshlab
sudo apt-get install libosmesa6-dev
sudo apt-get install python-pyside.qtcore
sudo apt-get install python-pyside.qtgui
2)下載源碼安裝
mkdir ork_ws && cd ork_ws
wstool init src https://raw.github.com/wg-perception/object_recognition_core/master/doc/source/ork.rosinstall.kinetic.plus
cd src && wstool update -j8
cd .. && rosdep install --from-paths src -i -y
cd src && git clone https://github.com/jbohren/xdot.git
cd .. && catkin_make
echo "export ~/ork_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
該命令會安裝OKR中以下功能包:
1)object-recognition-core: 核心功能包,提供多種物體識別的算法,以及模型訓練和模型數據庫配置的工具
2)object-recognition-linemod:基於OpenCV中linemod方法的物體識別,擅長剛性物體的識別
3)object-recognition-tabletop:用於同一平面上pick-and-place操作中的物體識別方法
4)object-recognition-tod: Textured Object Recognition,基於物體外部文理的識別方法
5)object-recognition-reconstruction: 使用RGB-D攝像頭構建物體3D模型
6)object-recognition-renderer: 渲染物體模型的可視化顯示
7)object-recognition-msgs:定義object-recognition-core功能包中所需要的message和action
8)object-recognition-capture: 從3D視圖中獲取物體信息
9)object-recognition-transparent-objects:識別和估計物體的位姿
10)object-recognition-ros-visualization: 物體識別可視化顯示的rviz插件
建立物體模型庫
安裝
sudo apt-get install couchdb
測試是否安裝完成
curl -X GET http://localhost:5984