Depthimage_to_laserscan安装并执行

Depthimage_to_laserscan安装并执行

前提:以正确安装kinect驱动

方法1:

1、下载fuerte版本的,并放在ros的执行路径,即ROS_PACKAGE_PATH。

2、执行roscore。

3、执行make,make all,maketest,在bin文件里会生成3个可执行文件,分别是

depthimage_to_laserscan,libtest,test_dtl。其中depthimage_to_laserscan为主要节点。

4、执行rostopic list –v,会有很多camera下的话题,包括订阅的话题scan。

5、mkdir构建.launch文件,并加入以下内容。

-------------简洁版----------------

<launch>

    <nodepkg="depthimage_to_laserscan"  type="depthimage_to_laserscan"name="depthimage_to_laserscan" args= “standalone depthimage_to_lasersacn/DepthImageToLaserScanNodelet”>

     <remap from="image"    to="/camera/depth_registered/image_raw"/> 

     <remap from="camera_info" to="/camera/depth_registered/camera_info"/>

     <remap from="scan" to="/kinect_scan"/>

     <param name="range_max" type="double"value="4"/>

</node>

</launch>

-----------------------------------

----------- depthimage_to_laserscan节点---------

发布的话题:

Image(sensor_msgs/Image)

Camera_info(sensor_msgs/CameraInfo)

订阅的话题:

Scan(sensor_msgs/LaserScan)

6、执行roslaunch 包名 .launch文件

7、在.launch文件中加载openni.launch文件(因为要启动ASUSXtion pro live摄像头),launch文件必须包含摄像头节点信息。

以下就是在一个包里嵌套其它的包。

如下:

---------------------包含openni.launch文件-----------------------

<launch>

   <include file="$(find openni_launch)/launch/openni.launch"/ >

    <nodepkg="depthimage_to_laserscan"  type="depthimage_to_laserscan"name="depthimage_to_laserscan" args= “standalone depthimage_to_lasersacn/DepthImageToLaserScanNodelet  /camera/rgb/image_viewer”>

     <remap from="image"    to="/camera/depth_registered/image_raw"/> 

     <remap from="camera_info"to="/camera/depth_registered/camera_info"/>

     <remap from="scan" to="/kinect_scan"/>

      <param name="range_max"type="double" value="4"/>

</node>

</launch>

--------------------------------------------

 

8、执行roslaunch depthimage_to_laserscan depthimage_to_laserscan.launch

执行 rosrun depthimage_to_laserscan depthimage_to_laserscanimage:=/camera/depth/image_raw

9、执行rosrun rviz rviz,添加camera和laserscan,就能正确输出depth image和伪激光点,如下所示:

 

10、附件

复杂的.launch文件

-------------------------------------------

<launch>

 <!-- "camera" should uniquelyidentify the device. All topics are pushed down

      into the "camera" namespace, and it is prepended to tf frameids. -->

 <arg name="camera"     default="camera"/>

 <arg name="publish_tf" default="true"/>

 

 <!-- Factory-calibrated depth registration -->

 <arg name="depth_registration"              default="true"/>

 <arg     if="$(argdepth_registration)" name="depth"value="depth_registered" />

 <arg unless="$(arg depth_registration)"name="depth" value="depth" />

 

  <!--Driver parameters -->

 <arg name="color_depth_synchronization"     default="false" />

 <arg name="auto_exposure"                   default="true"/>

 <arg name="auto_white_balance"              default="true" />

 

 <!-- Processing Modules -->

  <argname="rgb_processing"                 default="true"/>

 <arg name="ir_processing"                  default="true"/>

 <arg name="depth_processing"                default="true"/>

 <arg name="depth_registered_processing"     default="true"/>

 <arg name="disparity_processing"            default="true"/>

 <arg name="disparity_registered_processing"default="true"/>

 <arg name="scan_processing"                 default="true"/>

 

 <!-- Worker threads for the nodelet manager -->

 <arg name="num_worker_threads" default="4" />

<include file="$(findopenni_launch)/launch/openni.launch">

</include>

 

 <!-- Laserscan topic -->

 <arg name="scan_topic" default="scan"/>

 <!--                       Laserscan

    This uses lazy subscribing, so will not activate until scan isrequested.

  -->

 <group if="$(arg scan_processing)">

   <node pkg="depthimage_to_laserscan"type="depthimage_to_laserscan"name="depthimage_to_laserscan" args="loaddepthimage_to_laserscan/DepthImageToLaserScanNodelet $(arg camera)/$(argcamera)_nodelet_manager">

     <!-- Pixel rows to use to generate the laserscan. For each column,the scan will

          return the minimum value for those pixels centered vertically in theimage. -->

     <param name="scan_height" value="10"/>

     <param name="output_frame_id" value="/$(argcamera)_depth_frame"/>

     <param name="range_min" value="0.45"/>

     <remap from="image" to="$(arg camera)/$(argdepth)/image_raw"/>

     <remap from="scan" to="$(arg scan_topic)"/>

     <remap from="$(arg camera)/image" to="$(argcamera)/$(arg depth)/image_raw"/>

     <remap from="$(arg camera)/scan" to="$(argscan_topic)"/>

   </node>

 </group>

</launch>

--------------------------------------------

方法2:

不使用launch文件,直接先执行$roslauch openni_launch openni.launch,再执行$rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw,最后再调用rviz显示图像。

第2种方法是最简单的。


总结:

输入输出就是所谓的话题,用rviz进行显示

发布的话题:

Image(sensor_msgs/Image)

Camera_info(sensor_msgs/CameraInfo)

订阅的话题:

Scan(sensor_msgs/LaserScan)

 

问题:rosmake与make的区别?

rosmake是用在rosbuild(roscreate-pkg)创建工作空间的编译,rosbuild是ROS传统的编译系统,属于老版本。

而make是对已经存在了的包进行的编译。

 

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: depthimage_to_laserscan是ROS中的一个软件包,用于将深度图像转换为激光扫描数据。安装该软件包的步骤如下: 1. 打开终端,进入ROS工作空间的src目录: cd ~/catkin_ws/src 2. 使用git命令从GitHub上下载depthimage_to_laserscan软件包: git clone https://github.com/ros-perception/depthimage_to_laserscan.git 3. 返回ROS工作空间的根目录,使用catkin_make命令编译软件包: cd ~/catkin_ws catkin_make 4. 如果编译成功,就可以使用rosrun命令启动depthimage_to_laserscan节点: rosrun depthimage_to_laserscan depthimage_to_laserscan 5. 在启动节点之前,需要确保已经有深度图像的话题发布。可以使用以下命令启动深度图像的发布节点: rosrun openni2_camera openni2_camera 或 roslaunch freenect_launch freenect.launch 6. 启动节点后,可以使用rviz等工具查看转换后的激光扫描数据。 ### 回答2: depthimage_to_laserscan是一个ROS软件包,可以将RGB图像或深度图像转换为激光雷达扫描数据。因为在一些应用场合中只有单目或RGBD相机,不能直接使用激光雷达,但需要激光雷达扫描的信息,因此就需要使用这个软件包。 depthimage_to_laserscan软件包并不是ROS的默认包,需要手动安装。下面是安装步骤: 第一步:打开终端 首先需要使用Linux终端来进行软件包的安装和配置。 第二步:安装ROS 如果还没有安装ROS,需要先安装ROS。可以使用以下命令在Ubuntu中安装ROS: $ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop-full 其中,ros-kinetic-desktop-full是ROS的完整版,用户可以根据需求选择安装合适的版本。 第三步:下载软件包 在终端中,使用以下命令来下载depthimage_to_laserscan软件包: $ cd ~/catkin_ws/src $ git clone https://github.com/ros-perception/depthimage_to_laserscan.git 上述命令将安装ROS激光雷达转换软件包,并将其安装到catkin工作区源目录中(~/catkin_ws/src)。 第四步:编译软件包 使用以下命令编译安装软件包: $ cd ~/catkin_ws $ catkin_make catkin_make是ROS的编译工具,会将软件包编译成二进制文件,并将它们安装到ROS环境中。 第五步:测试软件包 使用以下命令测试软件包的功能: $ roslaunch depthimage_to_laserscan example.launch 该命令将启动节点,生成激光雷达扫描数据。可以使用以下命令查看数据: $ rostopic echo /scan 至此,depthimage_to_laserscan软件包的安装已经完成,并测试成功。需要注意的是,depthimage_to_laserscan节点需要重定向图像话题输入,比如激光雷达通常会提供深度数据,并将其放在“/camera/depth/image”话题的sensor_msgs/Image消息中。如果要使用其他数据源,请根据需要进行调整。 ### 回答3: depthimage_to_laserscan是一个ROS软件包,用于将深度图像转换为激光扫描数据,使得可以使用已有的激光扫描程序来分析深度图像。depthimage_to_laserscan软件包可以在ROS Kinetic和ROS Melodic版本下使用。 以下是depthimage_to_laserscan安装的步骤: 1. 在ROS系统中进入工作空间(catkin_ws),运行以下命令: cd ~/catkin_ws/src 2. 克隆depthimage_to_laserscan软件包到src目录: git clone https://github.com/ros-perception/depthimage_to_laserscan.git 3. 编译软件包: cd ~/catkin_ws catkin_make 4. 配置深度相机: depthimage_to_laserscan可以与不同类型的深度相机一起使用。深度相机应该配置好并在ROS系统中可用。示例代码涉及使用Kinect v2相机。 5. 运行depthimage_to_laserscan节点: 在一个终端中输入以下命令: roscore 在另一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash roslaunch freenect_launch freenect.launch depth_registration:=true 在另一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw 6. 使用RViz显示生成的激光扫描数据: 在一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash rosrun rviz rviz 在RViz中,设置Fixed Frame为相机坐标系(camera_link),然后添加一个LaserScan消息显示器,将Topic设置为/laser_scan。 如此一来,depthimage_to_laserscan软件包就成功安装,并且可以将深度图像转换为激光扫描数据,使得可以使用已有的激光扫描程序来分析深度图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值