如何使用ROS的service读取Kinect图像

如何使用ROS的service读取Kinect图像

我们经常会使用各种ROS包,而如何在ROS程序中导入Kinect图像呢?

1.先写一个service文件

学了挺久了,这个还没有好好整理过。其实步骤很简单:

  • 先在工作空间下创建一个ros package。

    $ catkin_create_pkg kinect_srv roscpp rospy std_msgs message_generation sensor_msgs
  • 然后在这个包下,新建一个srv文件夹,并建立srv文件。

    $ mkdir srv
    $ gedit rgbd_image.srv

    在srv文件里填写自己需要的srv形式。我需要一个输入一个call信号,就可以输出rgb和depth图像的srv。

    
    bool start
    ---
    
    sensor_msgs/Image rgb_image
    sensor_msgs/Image depth_image
  • 增添以下内容到package.xml里

    <build_depend>message_generation</build_depend>
    <exec_depend>message_runtime</exec_depend>
  • 修改CMakelists.txt
cmake_minimum_required(VERSION 2.8.3)
project(kinect_srv)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
 sensor_msgs
)

add_service_files(
    FILES
#   Service1.srv
#   Service2.srv
    rgbd_image.srv
)

generate_messages(
   DEPENDENCIES
   sensor_msgs
   std_msgs
)

catkin_package(
   CATKIN_DEPENDS message_runtime
)

include_directories(
  ${catkin_INCLUDE_DIRS}
)

到这里就可以使用编译了

$ catkin_make

如果一切正确,应该在工作空间的devel/include/kinect_srv文件下找到rgbd_image.h文件。这个会在后面引用。

2.发布Service

在工作空间下再建一个包

$ catkin_create_pkg kinect_driver roscpp rospy std_msgs sensor_msgs cv_bridge image_transport

在src中新建一个get_image.cpp文件,开始设定service内容。

#include "kinect_driver/common
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值