blade_ 发表于 2017-4-6 16:29:57

基于Firefly-RK3399使用Kinectv1通过freenect和pointcloud_to_laserscan得到伪激光

本帖最后由 blade_ 于 2017-4-21 10:05 编辑

开发环境:Firefly-RK3399 + Ubuntu 16.04 + ROS Kinetic + Kinect V1
0x00 开始前请确保你的Kinect v1通过USB2.0与ROS计算机相连接,并且Kinect v1的电源功率足够;0x01 确保已经安装freenect(如果没安装请移步freenect安装教程);0x02 安装pointcloud_to_laserscan:方式一:源码安装(编译缺少tf2_sensor_msg)
[*]    cd ~/catkin_ws/src
[*]    git clone --branch indigo-devel https://github.com/ros-perception/pointcloud_to_laserscan.git
[*]    cd ..
[*]    catkin_make
方式二:功能包安装(推荐)
[*]    sudo apt-get install ros-<rosdistro>-pointcloud-to-laserscan
0x03 以下是基于freenect和pointcloud_to_laserscan的fake_laser.launch代码:
[*]<?xml version="1.0"?>
[*]<launch>
[*]      <!--                freenect                -->
[*]    <include file="$(find freenect_launch)/launch/freenect.launch">
[*]    <arg name="rgb_processing"                  value="true" />
[*]    <arg name="ir_processing"                   value="true" />
[*]    <arg name="depth_processing"                value="true" />
[*]    <arg name="depth_registered_processing"   value="false" />
[*]    <arg name="disparity_processing"            value="false" />
[*]    <arg name="disparity_registered_processing" value="false" />
[*]    </include>
[*]
[*]      <!--                rviz                -->
[*]      <!--<include file="$(find robot_launch)/launch/debug_gui.launch"/>-->
[*]
[*]    <!-- run pointcloud_to_laserscan node -->
[*]    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
[*]
[*]      <remap from="cloud_in" to="/camera/depth/points"/>
[*]      <remap from="scan" to="/scan"/>
[*]      <rosparam>
[*]            target_frame: camera_link # Leave disabled to output scan in pointcloud frame
[*]            transform_tolerance: 0.01
[*]            min_height: 0.0
[*]            max_height: 1.0
[*]
[*]            angle_min: -1.5708 # -M_PI/2
[*]            angle_max: 1.5708 # M_PI/2
[*]            angle_increment: 0.0087 # M_PI/360.0
[*]            scan_time: 0.3333
[*]            range_min: 0.45
[*]            range_max: 4.0
[*]            use_inf: true
[*]
[*]            # Concurrency level, affects number of pointclouds queued for processing and number of threads used
[*]            # 0 : Detect number of cores
[*]            # 1 : Single threaded
[*]            # 2->inf : Parallelism level
[*]            concurrency_level: 1
[*]      </rosparam>
[*]      </node>
[*]</launch>
      第4-11行中调用了freenect.launch,参考freenect_launch/exampl/中的freenect-xyz.launch这个例程,通过设置参数决定你要启动的节点,同时该话题默认启动TF和Point;      第17-41行是为激光生成包的参数设置,cloud_in是pointcloud_to_laserscan节点订阅的topic,需要通过remap链接到你自己的平台;scan是pointcloud_to_laserscan节点发布的topic,输出直接可用的伪激光数据。      其中21-40行描述对于Kinect传输性能设置的参数,包括目标TF、变换容忍偏差、最大/小目标高度、最大/小角度、角度增量(决定laserscan输出点的密集程度)、扫描周期、最远/近距离等。0x04 打开fake_laser.launch启动文件和rqt_rviz并添加laserscan到display窗口
[*]    roslaunch your_workspace/fake_laser.launch
      应该得到类似下图的状态http://oarap.org/wp-content/uploads/2017/04/pointclou_to_laserscan_rviz.png常见问题:      如果没有得到伪激光数据可以尝试运行如下命令:
[*]    rosnode info /pointcloud_to_laserscan
      观察pointcloud_to_laserscan节点是否成功的订阅了指定的点云topic。

暴走的阿Sai 发表于 2017-4-7 09:33:52

好贴,已设置精华

水中的鱼 发表于 2017-4-8 11:18:27

疑似 广告贴,我买的rk3399板子 使用318 和324的固件网络都不可用,也不见回复和解决,最郁闷的是不知道该怎么处理,该死的firefly难道就这样晾着,好等过不能退货或其他恶心的...关键你不知道到底有没有问题,毕竟网络才是可用的第一小步。

如果这种帖子是firefly的广告贴就太恶心啦!真实的问题不确认/不处理就发各种广告性软文
页: [1]
查看完整版本: 基于Firefly-RK3399使用Kinectv1通过freenect和pointcloud_to_laserscan得到伪激光