zoukankan      html  css  js  c++  java
  • ROS学习笔记(三)

    机器人建模与仿真
    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

  • 相关阅读:
    [POJ] 食物链
    [POJ] Palindrome
    [POJ] The Triangle
    [Cpp primer] Library vector Type
    Shift Operations on C
    Masking operations
    [CSAPP] The Unicode Standard for text coding
    [Cpp primer] Library string Type
    [Cpp primer] range for (c++11)
    [Cpp primer] Namespace using Declarations
  • 原文地址:https://www.cnblogs.com/rohens-hbg/p/10833509.html
Copyright © 2011-2022 走看看