添加了点云转2d
This commit is contained in:
		
							parent
							
								
									baec84c783
								
							
						
					
					
						commit
						13e648b894
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -49,4 +49,6 @@ qtcreator-*
 | 
				
			|||||||
.#*
 | 
					.#*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Catkin custom files
 | 
					# Catkin custom files
 | 
				
			||||||
CATKIN_IGNORE
 | 
					CATKIN_IGNORE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.catkin_workspace
 | 
				
			||||||
							
								
								
									
										2
									
								
								ptl.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ptl.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					source devel/setup.bash
 | 
				
			||||||
 | 
					roslaunch pointcloud_to_laserscan point_to_scan.launch
 | 
				
			||||||
							
								
								
									
										72
									
								
								src/pointcloud_to_laserscan/CHANGELOG.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								src/pointcloud_to_laserscan/CHANGELOG.rst
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,72 @@
 | 
				
			|||||||
 | 
					^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
				
			||||||
 | 
					Changelog for package pointcloud_to_laserscan
 | 
				
			||||||
 | 
					^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.4.0 (2017-11-14)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Added inf_epsilon parameter that determines the value added to max range when use_infs parameter is set to false
 | 
				
			||||||
 | 
					* Merge pull request `#11 <https://github.com/ros-perception/pointcloud_to_laserscan/issues/11>`_ from ros-perception/mikaelarguedas-patch-1
 | 
				
			||||||
 | 
					  update to use non deprecated pluginlib macro
 | 
				
			||||||
 | 
					* Migrate to package format 2; add roslint
 | 
				
			||||||
 | 
					* Add sane parameter defaults; fixup lint warnings
 | 
				
			||||||
 | 
					* update to use non deprecated pluginlib macro
 | 
				
			||||||
 | 
					* Contributors: Mikael Arguedas, Paul Bovbel, Prasanna Kannappan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.3.1 (2017-04-26)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Merge pull request `#4 <https://github.com/ros-perception/pointcloud_to_laserscan/issues/4>`_ from yoshimalucky/fix-miscalculation-in-angle-increment
 | 
				
			||||||
 | 
					  Fixed miscalculation in angle_increment in the launch files.
 | 
				
			||||||
 | 
					* fixed miscalculation in angle_increment in the launchfiles.
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel, yoshimalucky
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.3.0 (2015-06-09)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Fix pointcloud to laserscan transform tolerance issues
 | 
				
			||||||
 | 
					* Move pointcloud_to_laserscan to new repository
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.7 (2015-06-08)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cleanup pointcloud_to_laserscan launch files
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.6 (2015-02-04)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Fix default value for concurrency
 | 
				
			||||||
 | 
					* Fix multithreaded lazy pub sub
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.5 (2015-01-20)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Switch to tf_sensor_msgs for transform
 | 
				
			||||||
 | 
					* Set parameters in sample launch files to default
 | 
				
			||||||
 | 
					* Add tolerance parameter
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.4 (2015-01-15)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* Remove stray dependencies
 | 
				
			||||||
 | 
					* Refactor with tf2 and message filters
 | 
				
			||||||
 | 
					* Remove roslaunch check
 | 
				
			||||||
 | 
					* Fix regressions
 | 
				
			||||||
 | 
					* Refactor to allow debug messages from node and nodelet
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.3 (2015-01-10)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* add launch tests
 | 
				
			||||||
 | 
					* refactor naming and fix nodelet export
 | 
				
			||||||
 | 
					* set default target frame to empty
 | 
				
			||||||
 | 
					* clean up package.xml
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.2.2 (2014-10-25)
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					* clean up package.xml
 | 
				
			||||||
 | 
					* Fix header reference
 | 
				
			||||||
 | 
					* Fix flow
 | 
				
			||||||
 | 
					* Fix pointer assertion
 | 
				
			||||||
 | 
					* Finalize pointcloud to laserscan
 | 
				
			||||||
 | 
					* Initial pointcloud to laserscan commit
 | 
				
			||||||
 | 
					* Contributors: Paul Bovbel
 | 
				
			||||||
							
								
								
									
										51
									
								
								src/pointcloud_to_laserscan/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/pointcloud_to_laserscan/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 2.8.3)
 | 
				
			||||||
 | 
					project(pointcloud_to_laserscan)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_package(catkin REQUIRED COMPONENTS
 | 
				
			||||||
 | 
					  message_filters
 | 
				
			||||||
 | 
					  nodelet
 | 
				
			||||||
 | 
					  roscpp
 | 
				
			||||||
 | 
					  sensor_msgs
 | 
				
			||||||
 | 
					  tf2
 | 
				
			||||||
 | 
					  tf2_ros
 | 
				
			||||||
 | 
					  tf2_sensor_msgs
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					catkin_package(
 | 
				
			||||||
 | 
					  INCLUDE_DIRS include
 | 
				
			||||||
 | 
					  LIBRARIES pointcloud_to_laserscan
 | 
				
			||||||
 | 
					  CATKIN_DEPENDS roscpp message_filters nodelet sensor_msgs tf2 tf2_ros
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include_directories(
 | 
				
			||||||
 | 
					  include
 | 
				
			||||||
 | 
					  ${catkin_INCLUDE_DIRS}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(pointcloud_to_laserscan src/pointcloud_to_laserscan_nodelet.cpp)
 | 
				
			||||||
 | 
					target_link_libraries(pointcloud_to_laserscan ${catkin_LIBRARIES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(pointcloud_to_laserscan_node src/pointcloud_to_laserscan_node.cpp)
 | 
				
			||||||
 | 
					target_link_libraries(pointcloud_to_laserscan_node pointcloud_to_laserscan ${catkin_LIBRARIES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install(TARGETS pointcloud_to_laserscan pointcloud_to_laserscan_node
 | 
				
			||||||
 | 
						RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 | 
				
			||||||
 | 
						LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
 | 
				
			||||||
 | 
						ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install(DIRECTORY include/${PROJECT_NAME}/
 | 
				
			||||||
 | 
					  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					install(FILES nodelets.xml
 | 
				
			||||||
 | 
					  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install(DIRECTORY launch
 | 
				
			||||||
 | 
					  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CATKIN_ENABLE_TESTING)
 | 
				
			||||||
 | 
					  find_package(roslint REQUIRED)
 | 
				
			||||||
 | 
					  roslint_cpp()
 | 
				
			||||||
 | 
					  roslint_add_test()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
							
								
								
									
										2
									
								
								src/pointcloud_to_laserscan/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/pointcloud_to_laserscan/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					# pointcloud_to_laserscan
 | 
				
			||||||
 | 
					ROS1 Package for pointcloud_to_laserscan. Works well with ROS-Noetic
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Software License Agreement (BSD License)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Copyright (c) 2010-2012, Willow Garage, Inc.
 | 
				
			||||||
 | 
					 *  All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 *  modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 *  are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   * Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 *   * Redistributions in binary form must reproduce the above
 | 
				
			||||||
 | 
					 *     copyright notice, this list of conditions and the following
 | 
				
			||||||
 | 
					 *     disclaimer in the documentation and/or other materials provided
 | 
				
			||||||
 | 
					 *     with the distribution.
 | 
				
			||||||
 | 
					 *   * Neither the name of Willow Garage, Inc. nor the names of its
 | 
				
			||||||
 | 
					 *     contributors may be used to endorse or promote products derived
 | 
				
			||||||
 | 
					 *     from this software without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
				
			||||||
 | 
					 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
				
			||||||
 | 
					 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 | 
				
			||||||
 | 
					 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
				
			||||||
 | 
					 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 | 
				
			||||||
 | 
					 *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
				
			||||||
 | 
					 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 | 
				
			||||||
 | 
					 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					 *  POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Paul Bovbel
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef POINTCLOUD_TO_LASERSCAN_POINTCLOUD_TO_LASERSCAN_NODELET
 | 
				
			||||||
 | 
					#define POINTCLOUD_TO_LASERSCAN_POINTCLOUD_TO_LASERSCAN_NODELET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ros/ros.h"
 | 
				
			||||||
 | 
					#include "boost/thread/mutex.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "nodelet/nodelet.h"
 | 
				
			||||||
 | 
					#include "tf2_ros/buffer.h"
 | 
				
			||||||
 | 
					#include "tf2_ros/transform_listener.h"
 | 
				
			||||||
 | 
					#include "tf2_ros/message_filter.h"
 | 
				
			||||||
 | 
					#include "message_filters/subscriber.h"
 | 
				
			||||||
 | 
					#include "sensor_msgs/PointCloud2.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace pointcloud_to_laserscan
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  typedef tf2_ros::MessageFilter<sensor_msgs::PointCloud2> MessageFilter;
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* Class to process incoming pointclouds into laserscans. Some initial code was pulled from the defunct turtlebot
 | 
				
			||||||
 | 
					* pointcloud_to_laserscan implementation.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					  class PointCloudToLaserScanNodelet : public nodelet::Nodelet
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    PointCloudToLaserScanNodelet();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private:
 | 
				
			||||||
 | 
					    virtual void onInit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void cloudCb(const sensor_msgs::PointCloud2ConstPtr &cloud_msg);
 | 
				
			||||||
 | 
					    void failureCb(const sensor_msgs::PointCloud2ConstPtr &cloud_msg,
 | 
				
			||||||
 | 
					        tf2_ros::filter_failure_reasons::FilterFailureReason reason);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void connectCb();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void disconnectCb();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ros::NodeHandle nh_, private_nh_;
 | 
				
			||||||
 | 
					    ros::Publisher pub_;
 | 
				
			||||||
 | 
					    boost::mutex connect_mutex_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    boost::shared_ptr<tf2_ros::Buffer> tf2_;
 | 
				
			||||||
 | 
					    boost::shared_ptr<tf2_ros::TransformListener> tf2_listener_;
 | 
				
			||||||
 | 
					    message_filters::Subscriber<sensor_msgs::PointCloud2> sub_;
 | 
				
			||||||
 | 
					    boost::shared_ptr<MessageFilter> message_filter_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ROS Parameters
 | 
				
			||||||
 | 
					    unsigned int input_queue_size_;
 | 
				
			||||||
 | 
					    std::string target_frame_;
 | 
				
			||||||
 | 
					    double tolerance_;
 | 
				
			||||||
 | 
					    double min_height_, max_height_, angle_min_, angle_max_, angle_increment_, scan_time_, range_min_, range_max_;
 | 
				
			||||||
 | 
					    bool use_inf_;
 | 
				
			||||||
 | 
					    double inf_epsilon_;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}  // pointcloud_to_laserscan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif  // POINTCLOUD_TO_LASERSCAN_POINTCLOUD_TO_LASERSCAN_NODELET
 | 
				
			||||||
							
								
								
									
										52
									
								
								src/pointcloud_to_laserscan/launch/point_to_scan.launch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/pointcloud_to_laserscan/launch/point_to_scan.launch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<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="/rslidar_points"/>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        <rosparam>
 | 
				
			||||||
 | 
					            # target_frame: rslidar # Leave disabled to output scan in pointcloud frame
 | 
				
			||||||
 | 
					            transform_tolerance: 0.01
 | 
				
			||||||
 | 
					            min_height: -0.4
 | 
				
			||||||
 | 
					            max_height: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            angle_min: -3.1415926 # -M_PI
 | 
				
			||||||
 | 
					            angle_max: 3.1415926 # M_PI
 | 
				
			||||||
 | 
					            angle_increment: 0.003 # 0.17degree
 | 
				
			||||||
 | 
					            scan_time: 0.1
 | 
				
			||||||
 | 
					            range_min: 0.2
 | 
				
			||||||
 | 
					            range_max: 100
 | 
				
			||||||
 | 
					            use_inf: true
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # 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-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" 
 | 
				
			||||||
 | 
					         name="pointcloud_to_laserscan">
 | 
				
			||||||
 | 
					        <remap from="cloud_in" to="/cloud_registered_body"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="/scan"/>
 | 
				
			||||||
 | 
					 <param name="transform_tolerance" value="0.01" />
 | 
				
			||||||
 | 
					 <param name="min_height" value="-0.4" />
 | 
				
			||||||
 | 
					 <param name="max_height" value="1" />
 | 
				
			||||||
 | 
					 <param name="angle_min" value="-3.1425926" />
 | 
				
			||||||
 | 
					 <param name="angle_max" value="3.1415926" />
 | 
				
			||||||
 | 
					 <param name="angle_increment" value="0.007" />
 | 
				
			||||||
 | 
					 <param name="scan_time" value="0.1" />
 | 
				
			||||||
 | 
					 <param name="range_min" value="0.2" />
 | 
				
			||||||
 | 
					 <param name="range_max" value="100" />
 | 
				
			||||||
 | 
					 <param name="use_inf" value="true" />
 | 
				
			||||||
 | 
					 <param name="inf_epsilon" value="1.0" />
 | 
				
			||||||
 | 
					 <param name="concurrency_level" value="1" /> 
 | 
				
			||||||
 | 
					</node>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</launch>
 | 
				
			||||||
							
								
								
									
										41
									
								
								src/pointcloud_to_laserscan/launch/sample_node.launch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/pointcloud_to_laserscan/launch/sample_node.launch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<launch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <arg name="camera" default="camera" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- start sensor-->
 | 
				
			||||||
 | 
					    <include file="$(find openni2_launch)/launch/openni2.launch">
 | 
				
			||||||
 | 
					        <arg name="camera" default="$(arg camera)"/>
 | 
				
			||||||
 | 
					    </include>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- run pointcloud_to_laserscan node -->
 | 
				
			||||||
 | 
					    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <remap from="cloud_in" to="$(arg camera)/depth_registered/points_processed"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="$(arg camera)/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
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # 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>
 | 
				
			||||||
							
								
								
									
										41
									
								
								src/pointcloud_to_laserscan/launch/sample_nodelet.launch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/pointcloud_to_laserscan/launch/sample_nodelet.launch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<launch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <arg name="camera" default="camera" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- start sensor-->
 | 
				
			||||||
 | 
					    <include file="$(find openni2_launch)/launch/openni2.launch">
 | 
				
			||||||
 | 
					        <arg name="camera" default="$(arg camera)"/>
 | 
				
			||||||
 | 
					    </include>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- push pointcloud_to_laserscan nodelet into sensor's nodelet manager-->
 | 
				
			||||||
 | 
					    <node pkg="nodelet" type="nodelet" name="pointcloud_to_laserscan" args="load pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet $(arg camera)_nodelet_manager">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <remap from="cloud_in" to="$(arg camera)/depth_registered/points_processed"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="$(arg camera)/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
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # Concurrency level, affects number of pointclouds queued for processing, thread number governed by nodelet manager
 | 
				
			||||||
 | 
					            # 0 : Detect number of cores
 | 
				
			||||||
 | 
					            # 1 : Single threaded
 | 
				
			||||||
 | 
					            # 2->inf : Parallelism level
 | 
				
			||||||
 | 
					            concurrency_level: 1
 | 
				
			||||||
 | 
					        </rosparam>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </node>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</launch>
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<launch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- run pointcloud_to_laserscan node -->
 | 
				
			||||||
 | 
					    <node pkg="tf" type="static_transform_publisher" name="baselink2kinect_scan"
 | 
				
			||||||
 | 
					    args="0.1 0 0.3 0 0 0 base_link kinect_link 100" />  
 | 
				
			||||||
 | 
					    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <remap from="cloud_in" to="/kinect/depth/points"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="/kinect/scan"/>
 | 
				
			||||||
 | 
					        <rosparam>
 | 
				
			||||||
 | 
					            target_frame: kinect_link # Leave disabled to output scan in pointcloud frame
 | 
				
			||||||
 | 
					            transform_tolerance: 0.1
 | 
				
			||||||
 | 
					            min_height: -0.2
 | 
				
			||||||
 | 
					            max_height: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            angle_min: -0.79 # -M_PI
 | 
				
			||||||
 | 
					            angle_max: 0.79 # M_PI
 | 
				
			||||||
 | 
					            angle_increment: 0.003 # 0.17degree
 | 
				
			||||||
 | 
					            scan_time: 0.05
 | 
				
			||||||
 | 
					            range_min: 0.45
 | 
				
			||||||
 | 
					            range_max: 5.0
 | 
				
			||||||
 | 
					            use_inf: true
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # 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>
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<launch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- run pointcloud_to_laserscan node -->
 | 
				
			||||||
 | 
					    <node pkg="tf" type="static_transform_publisher" name="baselink2kinect_scan"
 | 
				
			||||||
 | 
					    args="-0.15 0 0.3 0 0 0 base_link kinect_link 100" />  
 | 
				
			||||||
 | 
					    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <remap from="cloud_in" to="/kinect/depth/points"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="/kinect/scan"/>
 | 
				
			||||||
 | 
					        <rosparam>
 | 
				
			||||||
 | 
					            target_frame: kinect_link # Leave disabled to output scan in pointcloud frame
 | 
				
			||||||
 | 
					            transform_tolerance: 0.1
 | 
				
			||||||
 | 
					            min_height: -0.2
 | 
				
			||||||
 | 
					            max_height: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            angle_min: -0.79 # -M_PI
 | 
				
			||||||
 | 
					            angle_max: 0.79 # M_PI
 | 
				
			||||||
 | 
					            angle_increment: 0.003 # 0.17degree
 | 
				
			||||||
 | 
					            scan_time: 0.05
 | 
				
			||||||
 | 
					            range_min: 0.45
 | 
				
			||||||
 | 
					            range_max: 5.0
 | 
				
			||||||
 | 
					            use_inf: true
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # 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>
 | 
				
			||||||
							
								
								
									
										34
									
								
								src/pointcloud_to_laserscan/launch/xiaoqiang_rslidar.launch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/pointcloud_to_laserscan/launch/xiaoqiang_rslidar.launch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<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="/rslidar_points"/>
 | 
				
			||||||
 | 
					        <remap from="scan" to="/rslidar/scan"/>
 | 
				
			||||||
 | 
					        <rosparam>
 | 
				
			||||||
 | 
					            # target_frame: rslidar # Leave disabled to output scan in pointcloud frame
 | 
				
			||||||
 | 
					            transform_tolerance: 0.01
 | 
				
			||||||
 | 
					            min_height: -0.4
 | 
				
			||||||
 | 
					            max_height: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            angle_min: -3.1415926 # -M_PI
 | 
				
			||||||
 | 
					            angle_max: 3.1415926 # M_PI
 | 
				
			||||||
 | 
					            angle_increment: 0.003 # 0.17degree
 | 
				
			||||||
 | 
					            scan_time: 0.1
 | 
				
			||||||
 | 
					            range_min: 0.2
 | 
				
			||||||
 | 
					            range_max: 100
 | 
				
			||||||
 | 
					            use_inf: true
 | 
				
			||||||
 | 
					            inf_epsilon: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # 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>
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/pointcloud_to_laserscan/nodelets.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/pointcloud_to_laserscan/nodelets.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					<library path="lib/libpointcloud_to_laserscan">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <class name="pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet"
 | 
				
			||||||
 | 
						 type="pointcloud_to_laserscan::PointCloudToLaserScanNodelet"
 | 
				
			||||||
 | 
						 base_class_type="nodelet::Nodelet">
 | 
				
			||||||
 | 
					    <description>
 | 
				
			||||||
 | 
					      Nodelet to convert sensor_msgs/PointCloud2 to sensor_msgs/LaserScans.
 | 
				
			||||||
 | 
					    </description>
 | 
				
			||||||
 | 
					  </class>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</library>
 | 
				
			||||||
							
								
								
									
										32
									
								
								src/pointcloud_to_laserscan/package.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/pointcloud_to_laserscan/package.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					<package format="2">
 | 
				
			||||||
 | 
					    <name>pointcloud_to_laserscan</name>
 | 
				
			||||||
 | 
					    <version>1.4.0</version>
 | 
				
			||||||
 | 
					    <description>Converts a 3D Point Cloud into a 2D laser scan. This is useful for making devices like the Kinect appear like a laser scanner for 2D-based algorithms (e.g. laser-based SLAM).</description>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <maintainer email="paul@bovbel.com">Paul Bovbel</maintainer>
 | 
				
			||||||
 | 
					    <author email="paul@bovbel.com">Paul Bovbel</author>
 | 
				
			||||||
 | 
					    <author>Tully Foote</author>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <license>BSD</license>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <url type="website">http://ros.org/wiki/perception_pcl</url>
 | 
				
			||||||
 | 
					    <url type="bugtracker">https://github.com/ros-perception/perception_pcl/issues</url>
 | 
				
			||||||
 | 
					    <url type="repository">https://github.com/ros-perception/perception_pcl</url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <buildtool_depend>catkin</buildtool_depend>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <depend>message_filters</depend>
 | 
				
			||||||
 | 
					    <depend>nodelet</depend>
 | 
				
			||||||
 | 
					    <depend>roscpp</depend>
 | 
				
			||||||
 | 
					    <depend>sensor_msgs</depend>
 | 
				
			||||||
 | 
					    <depend>tf2</depend>
 | 
				
			||||||
 | 
					    <depend>tf2_ros</depend>
 | 
				
			||||||
 | 
					    <depend>tf2_sensor_msgs</depend>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <test_depend>roslint</test_depend>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <export>
 | 
				
			||||||
 | 
					        <nodelet plugin="${prefix}/nodelets.xml"/>
 | 
				
			||||||
 | 
					    </export>
 | 
				
			||||||
 | 
					</package>
 | 
				
			||||||
							
								
								
									
										229
									
								
								src/pointcloud_to_laserscan/rviz/kinect.rviz
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								src/pointcloud_to_laserscan/rviz/kinect.rviz
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,229 @@
 | 
				
			|||||||
 | 
					Panels:
 | 
				
			||||||
 | 
					  - Class: rviz/Displays
 | 
				
			||||||
 | 
					    Help Height: 78
 | 
				
			||||||
 | 
					    Name: Displays
 | 
				
			||||||
 | 
					    Property Tree Widget:
 | 
				
			||||||
 | 
					      Expanded:
 | 
				
			||||||
 | 
					        - /Global Options1
 | 
				
			||||||
 | 
					        - /Status1
 | 
				
			||||||
 | 
					        - /Grid1
 | 
				
			||||||
 | 
					        - /PointCloud21
 | 
				
			||||||
 | 
					        - /LaserScan1
 | 
				
			||||||
 | 
					      Splitter Ratio: 0.689373314
 | 
				
			||||||
 | 
					    Tree Height: 722
 | 
				
			||||||
 | 
					  - Class: rviz/Selection
 | 
				
			||||||
 | 
					    Name: Selection
 | 
				
			||||||
 | 
					  - Class: rviz/Tool Properties
 | 
				
			||||||
 | 
					    Expanded:
 | 
				
			||||||
 | 
					      - /2D Pose Estimate1
 | 
				
			||||||
 | 
					      - /2D Nav Goal1
 | 
				
			||||||
 | 
					      - /Publish Point1
 | 
				
			||||||
 | 
					    Name: Tool Properties
 | 
				
			||||||
 | 
					    Splitter Ratio: 0.588679016
 | 
				
			||||||
 | 
					  - Class: rviz/Views
 | 
				
			||||||
 | 
					    Expanded:
 | 
				
			||||||
 | 
					      - /Current View1
 | 
				
			||||||
 | 
					    Name: Views
 | 
				
			||||||
 | 
					    Splitter Ratio: 0.5
 | 
				
			||||||
 | 
					  - Class: rviz/Time
 | 
				
			||||||
 | 
					    Experimental: false
 | 
				
			||||||
 | 
					    Name: Time
 | 
				
			||||||
 | 
					    SyncMode: 0
 | 
				
			||||||
 | 
					    SyncSource: PointCloud2
 | 
				
			||||||
 | 
					Toolbars:
 | 
				
			||||||
 | 
					  toolButtonStyle: 2
 | 
				
			||||||
 | 
					Visualization Manager:
 | 
				
			||||||
 | 
					  Class: ""
 | 
				
			||||||
 | 
					  Displays:
 | 
				
			||||||
 | 
					    - Alpha: 0.5
 | 
				
			||||||
 | 
					      Cell Size: 1
 | 
				
			||||||
 | 
					      Class: rviz/Grid
 | 
				
			||||||
 | 
					      Color: 160; 160; 164
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Line Style:
 | 
				
			||||||
 | 
					        Line Width: 0.0299999993
 | 
				
			||||||
 | 
					        Value: Lines
 | 
				
			||||||
 | 
					      Name: Grid
 | 
				
			||||||
 | 
					      Normal Cell Count: 0
 | 
				
			||||||
 | 
					      Offset:
 | 
				
			||||||
 | 
					        X: 0
 | 
				
			||||||
 | 
					        Y: 0
 | 
				
			||||||
 | 
					        Z: 0
 | 
				
			||||||
 | 
					      Plane: XY
 | 
				
			||||||
 | 
					      Plane Cell Count: 200
 | 
				
			||||||
 | 
					      Reference Frame: kinect_link
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Autocompute Intensity Bounds: true
 | 
				
			||||||
 | 
					      Autocompute Value Bounds:
 | 
				
			||||||
 | 
					        Max Value: 2.6387887
 | 
				
			||||||
 | 
					        Min Value: -0.46631065
 | 
				
			||||||
 | 
					        Value: true
 | 
				
			||||||
 | 
					      Axis: Z
 | 
				
			||||||
 | 
					      Channel Name: intensity
 | 
				
			||||||
 | 
					      Class: rviz/PointCloud2
 | 
				
			||||||
 | 
					      Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Color Transformer: AxisColor
 | 
				
			||||||
 | 
					      Decay Time: 0
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Invert Rainbow: false
 | 
				
			||||||
 | 
					      Max Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Max Intensity: 4096
 | 
				
			||||||
 | 
					      Min Color: 0; 0; 0
 | 
				
			||||||
 | 
					      Min Intensity: 0
 | 
				
			||||||
 | 
					      Name: PointCloud2
 | 
				
			||||||
 | 
					      Position Transformer: XYZ
 | 
				
			||||||
 | 
					      Queue Size: 10
 | 
				
			||||||
 | 
					      Selectable: true
 | 
				
			||||||
 | 
					      Size (Pixels): 3
 | 
				
			||||||
 | 
					      Size (m): 0.00999999978
 | 
				
			||||||
 | 
					      Style: Flat Squares
 | 
				
			||||||
 | 
					      Topic: /kinect/depth/points
 | 
				
			||||||
 | 
					      Unreliable: false
 | 
				
			||||||
 | 
					      Use Fixed Frame: true
 | 
				
			||||||
 | 
					      Use rainbow: true
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Autocompute Intensity Bounds: true
 | 
				
			||||||
 | 
					      Autocompute Value Bounds:
 | 
				
			||||||
 | 
					        Max Value: 10
 | 
				
			||||||
 | 
					        Min Value: -10
 | 
				
			||||||
 | 
					        Value: true
 | 
				
			||||||
 | 
					      Axis: Z
 | 
				
			||||||
 | 
					      Channel Name: intensity
 | 
				
			||||||
 | 
					      Class: rviz/LaserScan
 | 
				
			||||||
 | 
					      Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Color Transformer: Intensity
 | 
				
			||||||
 | 
					      Decay Time: 0
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Invert Rainbow: false
 | 
				
			||||||
 | 
					      Max Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Max Intensity: 4096
 | 
				
			||||||
 | 
					      Min Color: 0; 0; 0
 | 
				
			||||||
 | 
					      Min Intensity: 0
 | 
				
			||||||
 | 
					      Name: LaserScan
 | 
				
			||||||
 | 
					      Position Transformer: XYZ
 | 
				
			||||||
 | 
					      Queue Size: 10
 | 
				
			||||||
 | 
					      Selectable: true
 | 
				
			||||||
 | 
					      Size (Pixels): 3
 | 
				
			||||||
 | 
					      Size (m): 0.00999999978
 | 
				
			||||||
 | 
					      Style: Flat Squares
 | 
				
			||||||
 | 
					      Topic: /kinect/scan
 | 
				
			||||||
 | 
					      Unreliable: false
 | 
				
			||||||
 | 
					      Use Fixed Frame: true
 | 
				
			||||||
 | 
					      Use rainbow: true
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Class: rviz/RobotModel
 | 
				
			||||||
 | 
					      Collision Enabled: false
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Links:
 | 
				
			||||||
 | 
					        All Links Enabled: true
 | 
				
			||||||
 | 
					        Expand Joint Details: false
 | 
				
			||||||
 | 
					        Expand Link Details: false
 | 
				
			||||||
 | 
					        Expand Tree: false
 | 
				
			||||||
 | 
					        Link Tree Style: Links in Alphabetic Order
 | 
				
			||||||
 | 
					        base_link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        front1_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        front2_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        kinect_Link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        left_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        lidar_link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        right_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					      Name: RobotModel
 | 
				
			||||||
 | 
					      Robot Description: robot_description
 | 
				
			||||||
 | 
					      TF Prefix: ""
 | 
				
			||||||
 | 
					      Update Interval: 0
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					      Visual Enabled: true
 | 
				
			||||||
 | 
					  Enabled: true
 | 
				
			||||||
 | 
					  Global Options:
 | 
				
			||||||
 | 
					    Background Color: 48; 48; 48
 | 
				
			||||||
 | 
					    Default Light: true
 | 
				
			||||||
 | 
					    Fixed Frame: kinect_link
 | 
				
			||||||
 | 
					    Frame Rate: 30
 | 
				
			||||||
 | 
					  Name: root
 | 
				
			||||||
 | 
					  Tools:
 | 
				
			||||||
 | 
					    - Class: rviz/Interact
 | 
				
			||||||
 | 
					      Hide Inactive Objects: true
 | 
				
			||||||
 | 
					    - Class: rviz/MoveCamera
 | 
				
			||||||
 | 
					    - Class: rviz/Select
 | 
				
			||||||
 | 
					    - Class: rviz/FocusCamera
 | 
				
			||||||
 | 
					    - Class: rviz/Measure
 | 
				
			||||||
 | 
					    - Class: rviz/SetInitialPose
 | 
				
			||||||
 | 
					      Topic: /initialpose
 | 
				
			||||||
 | 
					    - Class: rviz/SetGoal
 | 
				
			||||||
 | 
					      Topic: /move_base_simple/goal
 | 
				
			||||||
 | 
					    - Class: rviz/PublishPoint
 | 
				
			||||||
 | 
					      Single click: true
 | 
				
			||||||
 | 
					      Topic: /clicked_point
 | 
				
			||||||
 | 
					  Value: true
 | 
				
			||||||
 | 
					  Views:
 | 
				
			||||||
 | 
					    Current:
 | 
				
			||||||
 | 
					      Class: rviz/Orbit
 | 
				
			||||||
 | 
					      Distance: 4.48610306
 | 
				
			||||||
 | 
					      Enable Stereo Rendering:
 | 
				
			||||||
 | 
					        Stereo Eye Separation: 0.0599999987
 | 
				
			||||||
 | 
					        Stereo Focal Distance: 1
 | 
				
			||||||
 | 
					        Swap Stereo Eyes: false
 | 
				
			||||||
 | 
					        Value: false
 | 
				
			||||||
 | 
					      Focal Point:
 | 
				
			||||||
 | 
					        X: 1.73725533
 | 
				
			||||||
 | 
					        Y: -0.717763484
 | 
				
			||||||
 | 
					        Z: -0.839548349
 | 
				
			||||||
 | 
					      Focal Shape Fixed Size: true
 | 
				
			||||||
 | 
					      Focal Shape Size: 0.0500000007
 | 
				
			||||||
 | 
					      Invert Z Axis: false
 | 
				
			||||||
 | 
					      Name: Current View
 | 
				
			||||||
 | 
					      Near Clip Distance: 0.00999999978
 | 
				
			||||||
 | 
					      Pitch: 0.46479708
 | 
				
			||||||
 | 
					      Target Frame: <Fixed Frame>
 | 
				
			||||||
 | 
					      Value: Orbit (rviz)
 | 
				
			||||||
 | 
					      Yaw: 2.29040217
 | 
				
			||||||
 | 
					    Saved: ~
 | 
				
			||||||
 | 
					Window Geometry:
 | 
				
			||||||
 | 
					  Displays:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Height: 1032
 | 
				
			||||||
 | 
					  Hide Left Dock: false
 | 
				
			||||||
 | 
					  Hide Right Dock: true
 | 
				
			||||||
 | 
					  QMainWindow State: 000000ff00000000fd00000004000000000000026e0000036dfc0200000009fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006200fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002a0000036d000000d900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d00610067006500000002b5000000fa0000000000000000000000010000010f0000036dfc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002a0000036d000000ba00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000074f00000047fc0100000002fb0000000800540069006d006501000000000000074f0000031800fffffffb0000000800540069006d00650100000000000004500000000000000000000004db0000036d00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
 | 
				
			||||||
 | 
					  Selection:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Time:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Tool Properties:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Views:
 | 
				
			||||||
 | 
					    collapsed: true
 | 
				
			||||||
 | 
					  Width: 1871
 | 
				
			||||||
 | 
					  X: 49
 | 
				
			||||||
 | 
					  Y: 24
 | 
				
			||||||
							
								
								
									
										233
									
								
								src/pointcloud_to_laserscan/rviz/rsldiar.rviz
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								src/pointcloud_to_laserscan/rviz/rsldiar.rviz
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,233 @@
 | 
				
			|||||||
 | 
					Panels:
 | 
				
			||||||
 | 
					  - Class: rviz/Displays
 | 
				
			||||||
 | 
					    Help Height: 89
 | 
				
			||||||
 | 
					    Name: Displays
 | 
				
			||||||
 | 
					    Property Tree Widget:
 | 
				
			||||||
 | 
					      Expanded:
 | 
				
			||||||
 | 
					        - /Global Options1
 | 
				
			||||||
 | 
					        - /Status1
 | 
				
			||||||
 | 
					        - /PointCloud21
 | 
				
			||||||
 | 
					        - /PointCloud21/Autocompute Value Bounds1
 | 
				
			||||||
 | 
					      Splitter Ratio: 0.5
 | 
				
			||||||
 | 
					    Tree Height: 735
 | 
				
			||||||
 | 
					  - Class: rviz/Selection
 | 
				
			||||||
 | 
					    Name: Selection
 | 
				
			||||||
 | 
					  - Class: rviz/Tool Properties
 | 
				
			||||||
 | 
					    Expanded:
 | 
				
			||||||
 | 
					      - /2D Pose Estimate1
 | 
				
			||||||
 | 
					      - /2D Nav Goal1
 | 
				
			||||||
 | 
					      - /Publish Point1
 | 
				
			||||||
 | 
					    Name: Tool Properties
 | 
				
			||||||
 | 
					    Splitter Ratio: 0.588679016
 | 
				
			||||||
 | 
					  - Class: rviz/Views
 | 
				
			||||||
 | 
					    Expanded:
 | 
				
			||||||
 | 
					      - /Current View1
 | 
				
			||||||
 | 
					    Name: Views
 | 
				
			||||||
 | 
					    Splitter Ratio: 0.5
 | 
				
			||||||
 | 
					  - Class: rviz/Time
 | 
				
			||||||
 | 
					    Experimental: false
 | 
				
			||||||
 | 
					    Name: Time
 | 
				
			||||||
 | 
					    SyncMode: 0
 | 
				
			||||||
 | 
					    SyncSource: PointCloud2
 | 
				
			||||||
 | 
					Visualization Manager:
 | 
				
			||||||
 | 
					  Class: ""
 | 
				
			||||||
 | 
					  Displays:
 | 
				
			||||||
 | 
					    - Alpha: 0.5
 | 
				
			||||||
 | 
					      Cell Size: 0.5
 | 
				
			||||||
 | 
					      Class: rviz/Grid
 | 
				
			||||||
 | 
					      Color: 160; 160; 164
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Line Style:
 | 
				
			||||||
 | 
					        Line Width: 0.0299999993
 | 
				
			||||||
 | 
					        Value: Lines
 | 
				
			||||||
 | 
					      Name: Grid
 | 
				
			||||||
 | 
					      Normal Cell Count: 0
 | 
				
			||||||
 | 
					      Offset:
 | 
				
			||||||
 | 
					        X: 0
 | 
				
			||||||
 | 
					        Y: 0
 | 
				
			||||||
 | 
					        Z: 0
 | 
				
			||||||
 | 
					      Plane: XY
 | 
				
			||||||
 | 
					      Plane Cell Count: 20
 | 
				
			||||||
 | 
					      Reference Frame: base_footprint
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Autocompute Intensity Bounds: true
 | 
				
			||||||
 | 
					      Autocompute Value Bounds:
 | 
				
			||||||
 | 
					        Max Value: 1.67712891
 | 
				
			||||||
 | 
					        Min Value: -1.40163112
 | 
				
			||||||
 | 
					        Value: true
 | 
				
			||||||
 | 
					      Axis: Z
 | 
				
			||||||
 | 
					      Channel Name: intensity
 | 
				
			||||||
 | 
					      Class: rviz/PointCloud2
 | 
				
			||||||
 | 
					      Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Color Transformer: Intensity
 | 
				
			||||||
 | 
					      Decay Time: 0
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Invert Rainbow: false
 | 
				
			||||||
 | 
					      Max Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Max Intensity: 0
 | 
				
			||||||
 | 
					      Min Color: 0; 0; 0
 | 
				
			||||||
 | 
					      Min Intensity: 0
 | 
				
			||||||
 | 
					      Name: PointCloud2
 | 
				
			||||||
 | 
					      Position Transformer: XYZ
 | 
				
			||||||
 | 
					      Queue Size: 255
 | 
				
			||||||
 | 
					      Selectable: true
 | 
				
			||||||
 | 
					      Size (Pixels): 2
 | 
				
			||||||
 | 
					      Size (m): 0.00999999978
 | 
				
			||||||
 | 
					      Style: Points
 | 
				
			||||||
 | 
					      Topic: /rslidar_points
 | 
				
			||||||
 | 
					      Unreliable: true
 | 
				
			||||||
 | 
					      Use Fixed Frame: true
 | 
				
			||||||
 | 
					      Use rainbow: true
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					    - Class: rviz/Axes
 | 
				
			||||||
 | 
					      Enabled: false
 | 
				
			||||||
 | 
					      Length: 1
 | 
				
			||||||
 | 
					      Name: Axes
 | 
				
			||||||
 | 
					      Radius: 0.100000001
 | 
				
			||||||
 | 
					      Reference Frame: <Fixed Frame>
 | 
				
			||||||
 | 
					      Value: false
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Class: rviz/RobotModel
 | 
				
			||||||
 | 
					      Collision Enabled: false
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Links:
 | 
				
			||||||
 | 
					        All Links Enabled: true
 | 
				
			||||||
 | 
					        Expand Joint Details: false
 | 
				
			||||||
 | 
					        Expand Link Details: false
 | 
				
			||||||
 | 
					        Expand Tree: false
 | 
				
			||||||
 | 
					        Link Tree Style: Links in Alphabetic Order
 | 
				
			||||||
 | 
					        base_link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        front1_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        front2_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        kinect_link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        left_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        lidar_link:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					        right_wheel:
 | 
				
			||||||
 | 
					          Alpha: 1
 | 
				
			||||||
 | 
					          Show Axes: false
 | 
				
			||||||
 | 
					          Show Trail: false
 | 
				
			||||||
 | 
					          Value: true
 | 
				
			||||||
 | 
					      Name: RobotModel
 | 
				
			||||||
 | 
					      Robot Description: robot_description
 | 
				
			||||||
 | 
					      TF Prefix: ""
 | 
				
			||||||
 | 
					      Update Interval: 0
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					      Visual Enabled: true
 | 
				
			||||||
 | 
					    - Alpha: 1
 | 
				
			||||||
 | 
					      Autocompute Intensity Bounds: true
 | 
				
			||||||
 | 
					      Autocompute Value Bounds:
 | 
				
			||||||
 | 
					        Max Value: 10
 | 
				
			||||||
 | 
					        Min Value: -10
 | 
				
			||||||
 | 
					        Value: true
 | 
				
			||||||
 | 
					      Axis: Z
 | 
				
			||||||
 | 
					      Channel Name: intensity
 | 
				
			||||||
 | 
					      Class: rviz/LaserScan
 | 
				
			||||||
 | 
					      Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Color Transformer: Intensity
 | 
				
			||||||
 | 
					      Decay Time: 0
 | 
				
			||||||
 | 
					      Enabled: true
 | 
				
			||||||
 | 
					      Invert Rainbow: false
 | 
				
			||||||
 | 
					      Max Color: 255; 255; 255
 | 
				
			||||||
 | 
					      Max Intensity: 4096
 | 
				
			||||||
 | 
					      Min Color: 0; 0; 0
 | 
				
			||||||
 | 
					      Min Intensity: 0
 | 
				
			||||||
 | 
					      Name: LaserScan
 | 
				
			||||||
 | 
					      Position Transformer: XYZ
 | 
				
			||||||
 | 
					      Queue Size: 10
 | 
				
			||||||
 | 
					      Selectable: true
 | 
				
			||||||
 | 
					      Size (Pixels): 3
 | 
				
			||||||
 | 
					      Size (m): 0.00999999978
 | 
				
			||||||
 | 
					      Style: Flat Squares
 | 
				
			||||||
 | 
					      Topic: /rslidar/scan
 | 
				
			||||||
 | 
					      Unreliable: false
 | 
				
			||||||
 | 
					      Use Fixed Frame: true
 | 
				
			||||||
 | 
					      Use rainbow: true
 | 
				
			||||||
 | 
					      Value: true
 | 
				
			||||||
 | 
					  Enabled: true
 | 
				
			||||||
 | 
					  Global Options:
 | 
				
			||||||
 | 
					    Background Color: 121; 129; 128
 | 
				
			||||||
 | 
					    Default Light: true
 | 
				
			||||||
 | 
					    Fixed Frame: rslidar
 | 
				
			||||||
 | 
					    Frame Rate: 10
 | 
				
			||||||
 | 
					  Name: root
 | 
				
			||||||
 | 
					  Tools:
 | 
				
			||||||
 | 
					    - Class: rviz/Interact
 | 
				
			||||||
 | 
					      Hide Inactive Objects: true
 | 
				
			||||||
 | 
					    - Class: rviz/MoveCamera
 | 
				
			||||||
 | 
					    - Class: rviz/Select
 | 
				
			||||||
 | 
					    - Class: rviz/FocusCamera
 | 
				
			||||||
 | 
					    - Class: rviz/Measure
 | 
				
			||||||
 | 
					    - Class: rviz/SetInitialPose
 | 
				
			||||||
 | 
					      Topic: /initialpose
 | 
				
			||||||
 | 
					    - Class: rviz/SetGoal
 | 
				
			||||||
 | 
					      Topic: /move_base_simple/goal
 | 
				
			||||||
 | 
					    - Class: rviz/PublishPoint
 | 
				
			||||||
 | 
					      Single click: true
 | 
				
			||||||
 | 
					      Topic: /clicked_point
 | 
				
			||||||
 | 
					  Value: true
 | 
				
			||||||
 | 
					  Views:
 | 
				
			||||||
 | 
					    Current:
 | 
				
			||||||
 | 
					      Class: rviz/ThirdPersonFollower
 | 
				
			||||||
 | 
					      Distance: 8.04747581
 | 
				
			||||||
 | 
					      Enable Stereo Rendering:
 | 
				
			||||||
 | 
					        Stereo Eye Separation: 0.0599999987
 | 
				
			||||||
 | 
					        Stereo Focal Distance: 1
 | 
				
			||||||
 | 
					        Swap Stereo Eyes: false
 | 
				
			||||||
 | 
					        Value: false
 | 
				
			||||||
 | 
					      Focal Point:
 | 
				
			||||||
 | 
					        X: -0.50192821
 | 
				
			||||||
 | 
					        Y: 0.66879797
 | 
				
			||||||
 | 
					        Z: -2.41525704e-05
 | 
				
			||||||
 | 
					      Focal Shape Fixed Size: true
 | 
				
			||||||
 | 
					      Focal Shape Size: 0.0500000007
 | 
				
			||||||
 | 
					      Invert Z Axis: false
 | 
				
			||||||
 | 
					      Name: Current View
 | 
				
			||||||
 | 
					      Near Clip Distance: 0.00999999978
 | 
				
			||||||
 | 
					      Pitch: 1.56979632
 | 
				
			||||||
 | 
					      Target Frame: aft_mapped
 | 
				
			||||||
 | 
					      Value: ThirdPersonFollower (rviz)
 | 
				
			||||||
 | 
					      Yaw: 2.59856272
 | 
				
			||||||
 | 
					    Saved: ~
 | 
				
			||||||
 | 
					Window Geometry:
 | 
				
			||||||
 | 
					  Displays:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Height: 1056
 | 
				
			||||||
 | 
					  Hide Left Dock: false
 | 
				
			||||||
 | 
					  Hide Right Dock: true
 | 
				
			||||||
 | 
					  QMainWindow State: 000000ff00000000fd00000004000000000000016f00000385fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006200fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002a00000385000000d900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000394fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000394000000ba00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000074f00000047fc0100000002fb0000000800540069006d006501000000000000074f0000031800fffffffb0000000800540069006d00650100000000000004500000000000000000000005da0000038500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
 | 
				
			||||||
 | 
					  Selection:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Time:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Tool Properties:
 | 
				
			||||||
 | 
					    collapsed: false
 | 
				
			||||||
 | 
					  Views:
 | 
				
			||||||
 | 
					    collapsed: true
 | 
				
			||||||
 | 
					  Width: 1871
 | 
				
			||||||
 | 
					  X: 49
 | 
				
			||||||
 | 
					  Y: 24
 | 
				
			||||||
@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Software License Agreement (BSD License)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Copyright (c) 2010-2012, Willow Garage, Inc.
 | 
				
			||||||
 | 
					 *  All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 *  modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 *  are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   * Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 *   * Redistributions in binary form must reproduce the above
 | 
				
			||||||
 | 
					 *     copyright notice, this list of conditions and the following
 | 
				
			||||||
 | 
					 *     disclaimer in the documentation and/or other materials provided
 | 
				
			||||||
 | 
					 *     with the distribution.
 | 
				
			||||||
 | 
					 *   * Neither the name of Willow Garage, Inc. nor the names of its
 | 
				
			||||||
 | 
					 *     contributors may be used to endorse or promote products derived
 | 
				
			||||||
 | 
					 *     from this software without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
				
			||||||
 | 
					 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
				
			||||||
 | 
					 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 | 
				
			||||||
 | 
					 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
				
			||||||
 | 
					 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 | 
				
			||||||
 | 
					 *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
				
			||||||
 | 
					 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 | 
				
			||||||
 | 
					 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					 *  POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Paul Bovbel
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <ros/ros.h>
 | 
				
			||||||
 | 
					#include <nodelet/loader.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char **argv){
 | 
				
			||||||
 | 
					  ros::init(argc, argv, "pointcloud_to_laserscan_node");
 | 
				
			||||||
 | 
					  ros::NodeHandle private_nh("~");
 | 
				
			||||||
 | 
					  int concurrency_level;
 | 
				
			||||||
 | 
					  private_nh.param<int>("concurrency_level", concurrency_level, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  nodelet::Loader nodelet;
 | 
				
			||||||
 | 
					  nodelet::M_string remap(ros::names::getRemappings());
 | 
				
			||||||
 | 
					  nodelet::V_string nargv;
 | 
				
			||||||
 | 
					  std::string nodelet_name = ros::this_node::getName();
 | 
				
			||||||
 | 
					  nodelet.load(nodelet_name, "pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet", remap, nargv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  boost::shared_ptr<ros::MultiThreadedSpinner> spinner;
 | 
				
			||||||
 | 
					  if(concurrency_level) {
 | 
				
			||||||
 | 
					    spinner.reset(new ros::MultiThreadedSpinner(concurrency_level));
 | 
				
			||||||
 | 
					  }else{
 | 
				
			||||||
 | 
					    spinner.reset(new ros::MultiThreadedSpinner());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  spinner->spin();
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,248 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Software License Agreement (BSD License)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Copyright (c) 2010-2012, Willow Garage, Inc.
 | 
				
			||||||
 | 
					 *  All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 *  modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 *  are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   * Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 *   * Redistributions in binary form must reproduce the above
 | 
				
			||||||
 | 
					 *     copyright notice, this list of conditions and the following
 | 
				
			||||||
 | 
					 *     disclaimer in the documentation and/or other materials provided
 | 
				
			||||||
 | 
					 *     with the distribution.
 | 
				
			||||||
 | 
					 *   * Neither the name of Willow Garage, Inc. nor the names of its
 | 
				
			||||||
 | 
					 *     contributors may be used to endorse or promote products derived
 | 
				
			||||||
 | 
					 *     from this software without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
				
			||||||
 | 
					 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
				
			||||||
 | 
					 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 | 
				
			||||||
 | 
					 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
				
			||||||
 | 
					 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 | 
				
			||||||
 | 
					 *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
				
			||||||
 | 
					 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 | 
				
			||||||
 | 
					 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					 *  POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Paul Bovbel
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet.h>
 | 
				
			||||||
 | 
					#include <sensor_msgs/LaserScan.h>
 | 
				
			||||||
 | 
					#include <pluginlib/class_list_macros.h>
 | 
				
			||||||
 | 
					#include <sensor_msgs/point_cloud2_iterator.h>
 | 
				
			||||||
 | 
					#include <tf2_sensor_msgs/tf2_sensor_msgs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace pointcloud_to_laserscan
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  PointCloudToLaserScanNodelet::PointCloudToLaserScanNodelet() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void PointCloudToLaserScanNodelet::onInit()
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    boost::mutex::scoped_lock lock(connect_mutex_);
 | 
				
			||||||
 | 
					    private_nh_ = getPrivateNodeHandle();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private_nh_.param<std::string>("target_frame", target_frame_, "");
 | 
				
			||||||
 | 
					    private_nh_.param<double>("transform_tolerance", tolerance_, 0.01);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("min_height", min_height_, std::numeric_limits<double>::min());
 | 
				
			||||||
 | 
					    private_nh_.param<double>("max_height", max_height_, std::numeric_limits<double>::max());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private_nh_.param<double>("angle_min", angle_min_, - M_PI);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("angle_max", angle_max_, M_PI);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("angle_increment", angle_increment_, M_PI / 180.0);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("scan_time", scan_time_, 1.0 / 30.0);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("range_min", range_min_, 0.0);
 | 
				
			||||||
 | 
					    private_nh_.param<double>("range_max", range_max_, std::numeric_limits<double>::max());
 | 
				
			||||||
 | 
					    private_nh_.param<double>("inf_epsilon", inf_epsilon_, 1.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int concurrency_level;
 | 
				
			||||||
 | 
					    private_nh_.param<int>("concurrency_level", concurrency_level, 1);
 | 
				
			||||||
 | 
					    private_nh_.param<bool>("use_inf", use_inf_, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Check if explicitly single threaded, otherwise, let nodelet manager dictate thread pool size
 | 
				
			||||||
 | 
					    if (concurrency_level == 1)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      nh_ = getNodeHandle();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      nh_ = getMTNodeHandle();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Only queue one pointcloud per running thread
 | 
				
			||||||
 | 
					    if (concurrency_level > 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      input_queue_size_ = concurrency_level;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      input_queue_size_ = boost::thread::hardware_concurrency();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // if pointcloud target frame specified, we need to filter by transform availability
 | 
				
			||||||
 | 
					    if (!target_frame_.empty())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      tf2_.reset(new tf2_ros::Buffer());
 | 
				
			||||||
 | 
					      tf2_listener_.reset(new tf2_ros::TransformListener(*tf2_));
 | 
				
			||||||
 | 
					      message_filter_.reset(new MessageFilter(sub_, *tf2_, target_frame_, input_queue_size_, nh_));
 | 
				
			||||||
 | 
					      message_filter_->registerCallback(boost::bind(&PointCloudToLaserScanNodelet::cloudCb, this, _1));
 | 
				
			||||||
 | 
					      message_filter_->registerFailureCallback(boost::bind(&PointCloudToLaserScanNodelet::failureCb, this, _1, _2));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else // otherwise setup direct subscription
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      sub_.registerCallback(boost::bind(&PointCloudToLaserScanNodelet::cloudCb, this, _1));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub_ = nh_.advertise<sensor_msgs::LaserScan>("scan", 10,
 | 
				
			||||||
 | 
					                                                 boost::bind(&PointCloudToLaserScanNodelet::connectCb, this),
 | 
				
			||||||
 | 
					                                                 boost::bind(&PointCloudToLaserScanNodelet::disconnectCb, this));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void PointCloudToLaserScanNodelet::connectCb()
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    boost::mutex::scoped_lock lock(connect_mutex_);
 | 
				
			||||||
 | 
					    if (pub_.getNumSubscribers() > 0 && sub_.getSubscriber().getNumPublishers() == 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      NODELET_INFO("Got a subscriber to scan, starting subscriber to pointcloud");
 | 
				
			||||||
 | 
					      sub_.subscribe(nh_, "cloud_in", input_queue_size_);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void PointCloudToLaserScanNodelet::disconnectCb()
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    boost::mutex::scoped_lock lock(connect_mutex_);
 | 
				
			||||||
 | 
					    if (pub_.getNumSubscribers() == 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      NODELET_INFO("No subscibers to scan, shutting down subscriber to pointcloud");
 | 
				
			||||||
 | 
					      sub_.unsubscribe();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void PointCloudToLaserScanNodelet::failureCb(const sensor_msgs::PointCloud2ConstPtr &cloud_msg,
 | 
				
			||||||
 | 
					                                               tf2_ros::filter_failure_reasons::FilterFailureReason reason)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    NODELET_WARN_STREAM_THROTTLE(1.0, "Can't transform pointcloud from frame " << cloud_msg->header.frame_id << " to "
 | 
				
			||||||
 | 
					        << message_filter_->getTargetFramesString() << " at time " << cloud_msg->header.stamp << ", reason: " << reason);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void PointCloudToLaserScanNodelet::cloudCb(const sensor_msgs::PointCloud2ConstPtr &cloud_msg)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //build laserscan output
 | 
				
			||||||
 | 
					    sensor_msgs::LaserScan output;
 | 
				
			||||||
 | 
					    output.header = cloud_msg->header;
 | 
				
			||||||
 | 
					    if (!target_frame_.empty())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      output.header.frame_id = target_frame_;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    output.angle_min = angle_min_;
 | 
				
			||||||
 | 
					    output.angle_max = angle_max_;
 | 
				
			||||||
 | 
					    output.angle_increment = angle_increment_;
 | 
				
			||||||
 | 
					    output.time_increment = 0.0;
 | 
				
			||||||
 | 
					    output.scan_time = scan_time_;
 | 
				
			||||||
 | 
					    output.range_min = range_min_;
 | 
				
			||||||
 | 
					    output.range_max = range_max_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //determine amount of rays to create
 | 
				
			||||||
 | 
					    uint32_t ranges_size = std::ceil((output.angle_max - output.angle_min) / output.angle_increment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //determine if laserscan rays with no obstacle data will evaluate to infinity or max_range
 | 
				
			||||||
 | 
					    if (use_inf_)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      output.ranges.assign(ranges_size, std::numeric_limits<double>::infinity());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      output.ranges.assign(ranges_size, output.range_max + inf_epsilon_);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sensor_msgs::PointCloud2ConstPtr cloud_out;
 | 
				
			||||||
 | 
					    sensor_msgs::PointCloud2Ptr cloud;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Transform cloud if necessary
 | 
				
			||||||
 | 
					    if (!(output.header.frame_id == cloud_msg->header.frame_id))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      try
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        cloud.reset(new sensor_msgs::PointCloud2);
 | 
				
			||||||
 | 
					        tf2_->transform(*cloud_msg, *cloud, target_frame_, ros::Duration(tolerance_));
 | 
				
			||||||
 | 
					        cloud_out = cloud;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      catch (tf2::TransformException &ex)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_ERROR_STREAM("Transform failure: " << ex.what());
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      cloud_out = cloud_msg;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Iterate through pointcloud
 | 
				
			||||||
 | 
					    for (sensor_msgs::PointCloud2ConstIterator<float>
 | 
				
			||||||
 | 
					              iter_x(*cloud_out, "x"), iter_y(*cloud_out, "y"), iter_z(*cloud_out, "z");
 | 
				
			||||||
 | 
					              iter_x != iter_x.end();
 | 
				
			||||||
 | 
					              ++iter_x, ++iter_y, ++iter_z)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (std::isnan(*iter_x) || std::isnan(*iter_y) || std::isnan(*iter_z))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_DEBUG("rejected for nan in point(%f, %f, %f)\n", *iter_x, *iter_y, *iter_z);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (*iter_z > max_height_ || *iter_z < min_height_)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_DEBUG("rejected for height %f not in range (%f, %f)\n", *iter_z, min_height_, max_height_);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      double range = hypot(*iter_x, *iter_y);
 | 
				
			||||||
 | 
					      if (range < range_min_)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_DEBUG("rejected for range %f below minimum value %f. Point: (%f, %f, %f)", range, range_min_, *iter_x, *iter_y,
 | 
				
			||||||
 | 
					                      *iter_z);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (range > range_max_)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_DEBUG("rejected for range %f above maximum value %f. Point: (%f, %f, %f)", range, range_max_, *iter_x, *iter_y,
 | 
				
			||||||
 | 
					                      *iter_z);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      double angle = atan2(*iter_y, *iter_x);
 | 
				
			||||||
 | 
					      if (angle < output.angle_min || angle > output.angle_max)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        NODELET_DEBUG("rejected for angle %f not in range (%f, %f)\n", angle, output.angle_min, output.angle_max);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      //overwrite range at laserscan ray if new range is smaller
 | 
				
			||||||
 | 
					      int index = (angle - output.angle_min) / output.angle_increment;
 | 
				
			||||||
 | 
					      if (range < output.ranges[index])
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        output.ranges[index] = range;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    pub_.publish(output);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PLUGINLIB_EXPORT_CLASS(pointcloud_to_laserscan::PointCloudToLaserScanNodelet, nodelet::Nodelet)
 | 
				
			||||||
@ -11,13 +11,13 @@
 | 
				
			|||||||
      "log_data_port": 56500
 | 
					      "log_data_port": 56500
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "host_net_info" : {
 | 
					    "host_net_info" : {
 | 
				
			||||||
      "cmd_data_ip" : "192.168.1.5",
 | 
					      "cmd_data_ip" : "192.168.1.50",
 | 
				
			||||||
      "cmd_data_port": 56101,
 | 
					      "cmd_data_port": 56101,
 | 
				
			||||||
      "push_msg_ip": "192.168.1.5",
 | 
					      "push_msg_ip": "192.168.1.50",
 | 
				
			||||||
      "push_msg_port": 56201,
 | 
					      "push_msg_port": 56201,
 | 
				
			||||||
      "point_data_ip": "192.168.1.5",
 | 
					      "point_data_ip": "192.168.1.50",
 | 
				
			||||||
      "point_data_port": 56301,
 | 
					      "point_data_port": 56301,
 | 
				
			||||||
      "imu_data_ip" : "192.168.1.5",
 | 
					      "imu_data_ip" : "192.168.1.50",
 | 
				
			||||||
      "imu_data_port": 56401,
 | 
					      "imu_data_port": 56401,
 | 
				
			||||||
      "log_data_ip" : "",
 | 
					      "log_data_ip" : "",
 | 
				
			||||||
      "log_data_port": 56501
 | 
					      "log_data_port": 56501
 | 
				
			||||||
@ -25,7 +25,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "lidar_configs" : [
 | 
					  "lidar_configs" : [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "ip" : "192.168.1.12",
 | 
					      "ip" : "192.168.1.176",
 | 
				
			||||||
      "pcl_data_type" : 1,
 | 
					      "pcl_data_type" : 1,
 | 
				
			||||||
      "pattern_mode" : 0,
 | 
					      "pattern_mode" : 0,
 | 
				
			||||||
      "extrinsic_parameter" : {
 | 
					      "extrinsic_parameter" : {
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					Subproject commit 7fae5d1f9c0d9f6a64c6ac936f2239b9ee9cb18d
 | 
				
			||||||
							
								
								
									
										207
									
								
								src/rc_navigation/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								src/rc_navigation/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,207 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 3.0.2)
 | 
				
			||||||
 | 
					project(rc_navigation)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 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
 | 
				
			||||||
 | 
					  amcl
 | 
				
			||||||
 | 
					  gmapping
 | 
				
			||||||
 | 
					  map_server
 | 
				
			||||||
 | 
					  move_base
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## System dependencies are found with CMake's conventions
 | 
				
			||||||
 | 
					# find_package(Boost REQUIRED COMPONENTS system)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Uncomment this if the package has a setup.py. This macro ensures
 | 
				
			||||||
 | 
					## modules and global scripts declared therein get installed
 | 
				
			||||||
 | 
					## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
 | 
				
			||||||
 | 
					# catkin_python_setup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################
 | 
				
			||||||
 | 
					## Declare ROS messages, services and actions ##
 | 
				
			||||||
 | 
					################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## To declare and build messages, services or actions from within this
 | 
				
			||||||
 | 
					## package, follow these steps:
 | 
				
			||||||
 | 
					## * Let MSG_DEP_SET be the set of packages whose message types you use in
 | 
				
			||||||
 | 
					##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
 | 
				
			||||||
 | 
					## * In the file package.xml:
 | 
				
			||||||
 | 
					##   * add a build_depend tag for "message_generation"
 | 
				
			||||||
 | 
					##   * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
 | 
				
			||||||
 | 
					##   * If MSG_DEP_SET isn't empty the following dependency has been pulled in
 | 
				
			||||||
 | 
					##     but can be declared for certainty nonetheless:
 | 
				
			||||||
 | 
					##     * add a exec_depend tag for "message_runtime"
 | 
				
			||||||
 | 
					## * In this file (CMakeLists.txt):
 | 
				
			||||||
 | 
					##   * add "message_generation" and every package in MSG_DEP_SET to
 | 
				
			||||||
 | 
					##     find_package(catkin REQUIRED COMPONENTS ...)
 | 
				
			||||||
 | 
					##   * add "message_runtime" and every package in MSG_DEP_SET to
 | 
				
			||||||
 | 
					##     catkin_package(CATKIN_DEPENDS ...)
 | 
				
			||||||
 | 
					##   * uncomment the add_*_files sections below as needed
 | 
				
			||||||
 | 
					##     and list every .msg/.srv/.action file to be processed
 | 
				
			||||||
 | 
					##   * uncomment the generate_messages entry below
 | 
				
			||||||
 | 
					##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generate messages in the 'msg' folder
 | 
				
			||||||
 | 
					# add_message_files(
 | 
				
			||||||
 | 
					#   FILES
 | 
				
			||||||
 | 
					#   Message1.msg
 | 
				
			||||||
 | 
					#   Message2.msg
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generate services in the 'srv' folder
 | 
				
			||||||
 | 
					# add_service_files(
 | 
				
			||||||
 | 
					#   FILES
 | 
				
			||||||
 | 
					#   Service1.srv
 | 
				
			||||||
 | 
					#   Service2.srv
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generate actions in the 'action' folder
 | 
				
			||||||
 | 
					# add_action_files(
 | 
				
			||||||
 | 
					#   FILES
 | 
				
			||||||
 | 
					#   Action1.action
 | 
				
			||||||
 | 
					#   Action2.action
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generate added messages and services with any dependencies listed here
 | 
				
			||||||
 | 
					# generate_messages(
 | 
				
			||||||
 | 
					#   DEPENDENCIES
 | 
				
			||||||
 | 
					#   std_msgs  # Or other packages containing msgs
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################
 | 
				
			||||||
 | 
					## Declare ROS dynamic reconfigure parameters ##
 | 
				
			||||||
 | 
					################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## To declare and build dynamic reconfigure parameters within this
 | 
				
			||||||
 | 
					## package, follow these steps:
 | 
				
			||||||
 | 
					## * In the file package.xml:
 | 
				
			||||||
 | 
					##   * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
 | 
				
			||||||
 | 
					## * In this file (CMakeLists.txt):
 | 
				
			||||||
 | 
					##   * add "dynamic_reconfigure" to
 | 
				
			||||||
 | 
					##     find_package(catkin REQUIRED COMPONENTS ...)
 | 
				
			||||||
 | 
					##   * uncomment the "generate_dynamic_reconfigure_options" section below
 | 
				
			||||||
 | 
					##     and list every .cfg file to be processed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generate dynamic reconfigure parameters in the 'cfg' folder
 | 
				
			||||||
 | 
					# generate_dynamic_reconfigure_options(
 | 
				
			||||||
 | 
					#   cfg/DynReconf1.cfg
 | 
				
			||||||
 | 
					#   cfg/DynReconf2.cfg
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###################################
 | 
				
			||||||
 | 
					## catkin specific configuration ##
 | 
				
			||||||
 | 
					###################################
 | 
				
			||||||
 | 
					## The catkin_package macro generates cmake config files for your package
 | 
				
			||||||
 | 
					## Declare things to be passed to dependent projects
 | 
				
			||||||
 | 
					## INCLUDE_DIRS: uncomment this if your package contains header files
 | 
				
			||||||
 | 
					## LIBRARIES: libraries you create in this project that dependent projects also need
 | 
				
			||||||
 | 
					## CATKIN_DEPENDS: catkin_packages dependent projects also need
 | 
				
			||||||
 | 
					## DEPENDS: system dependencies of this project that dependent projects also need
 | 
				
			||||||
 | 
					catkin_package(
 | 
				
			||||||
 | 
					#  INCLUDE_DIRS include
 | 
				
			||||||
 | 
					#  LIBRARIES rc_navigation
 | 
				
			||||||
 | 
					#  CATKIN_DEPENDS amcl gmapping map_server move_base
 | 
				
			||||||
 | 
					#  DEPENDS system_lib
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###########
 | 
				
			||||||
 | 
					## Build ##
 | 
				
			||||||
 | 
					###########
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Specify additional locations of header files
 | 
				
			||||||
 | 
					## Your package locations should be listed before other locations
 | 
				
			||||||
 | 
					include_directories(
 | 
				
			||||||
 | 
					# include
 | 
				
			||||||
 | 
					  ${catkin_INCLUDE_DIRS}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Declare a C++ library
 | 
				
			||||||
 | 
					# add_library(${PROJECT_NAME}
 | 
				
			||||||
 | 
					#   src/${PROJECT_NAME}/rc_navigation.cpp
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Add cmake target dependencies of the library
 | 
				
			||||||
 | 
					## as an example, code may need to be generated before libraries
 | 
				
			||||||
 | 
					## either from message generation or dynamic reconfigure
 | 
				
			||||||
 | 
					# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Declare a C++ executable
 | 
				
			||||||
 | 
					## With catkin_make all packages are built within a single CMake context
 | 
				
			||||||
 | 
					## The recommended prefix ensures that target names across packages don't collide
 | 
				
			||||||
 | 
					# add_executable(${PROJECT_NAME}_node src/rc_navigation_node.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Rename C++ executable without prefix
 | 
				
			||||||
 | 
					## The above recommended prefix causes long target names, the following renames the
 | 
				
			||||||
 | 
					## target back to the shorter version for ease of user use
 | 
				
			||||||
 | 
					## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
 | 
				
			||||||
 | 
					# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Add cmake target dependencies of the executable
 | 
				
			||||||
 | 
					## same as for the library above
 | 
				
			||||||
 | 
					# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Specify libraries to link a library or executable target against
 | 
				
			||||||
 | 
					# target_link_libraries(${PROJECT_NAME}_node
 | 
				
			||||||
 | 
					#   ${catkin_LIBRARIES}
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#############
 | 
				
			||||||
 | 
					## Install ##
 | 
				
			||||||
 | 
					#############
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# all install targets should use catkin DESTINATION variables
 | 
				
			||||||
 | 
					# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Mark executable scripts (Python etc.) for installation
 | 
				
			||||||
 | 
					## in contrast to setup.py, you can choose the destination
 | 
				
			||||||
 | 
					# catkin_install_python(PROGRAMS
 | 
				
			||||||
 | 
					#   scripts/my_python_script
 | 
				
			||||||
 | 
					#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Mark executables for installation
 | 
				
			||||||
 | 
					## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
 | 
				
			||||||
 | 
					# install(TARGETS ${PROJECT_NAME}_node
 | 
				
			||||||
 | 
					#   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Mark libraries for installation
 | 
				
			||||||
 | 
					## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
 | 
				
			||||||
 | 
					# install(TARGETS ${PROJECT_NAME}
 | 
				
			||||||
 | 
					#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
 | 
				
			||||||
 | 
					#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
 | 
				
			||||||
 | 
					#   RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Mark cpp header files for installation
 | 
				
			||||||
 | 
					# install(DIRECTORY include/${PROJECT_NAME}/
 | 
				
			||||||
 | 
					#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
 | 
				
			||||||
 | 
					#   FILES_MATCHING PATTERN "*.h"
 | 
				
			||||||
 | 
					#   PATTERN ".svn" EXCLUDE
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Mark other files for installation (e.g. launch and bag files, etc.)
 | 
				
			||||||
 | 
					# install(FILES
 | 
				
			||||||
 | 
					#   # myfile1
 | 
				
			||||||
 | 
					#   # myfile2
 | 
				
			||||||
 | 
					#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
 | 
				
			||||||
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#############
 | 
				
			||||||
 | 
					## Testing ##
 | 
				
			||||||
 | 
					#############
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Add gtest based cpp test target and link libraries
 | 
				
			||||||
 | 
					# catkin_add_gtest(${PROJECT_NAME}-test test/test_rc_navigation.cpp)
 | 
				
			||||||
 | 
					# if(TARGET ${PROJECT_NAME}-test)
 | 
				
			||||||
 | 
					#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
 | 
				
			||||||
 | 
					# endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Add folders to be run by python nosetests
 | 
				
			||||||
 | 
					# catkin_add_nosetests(test)
 | 
				
			||||||
							
								
								
									
										51
									
								
								src/rc_navigation/launch/t1_slam.launch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/rc_navigation/launch/t1_slam.launch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					<launch>
 | 
				
			||||||
 | 
					    <!-- 设置为true表示当前环境是仿真环境 -->
 | 
				
			||||||
 | 
					    <param name="use_sim_time" value="false" />
 | 
				
			||||||
 | 
					    <!-- gamping 节点 -->
 | 
				
			||||||
 | 
					    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
 | 
				
			||||||
 | 
					        <!-- 设置雷达话题 -->
 | 
				
			||||||
 | 
					        <remap from="scan" to="scan" />
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        <!-- 关键参数:坐标系 -->
 | 
				
			||||||
 | 
					        <param name="base_frame" value="base_footprint" /> <!--底盘坐标系-->
 | 
				
			||||||
 | 
					        <param name="odom_frame" value="odom" /> <!--里程计坐标系-->
 | 
				
			||||||
 | 
					        <param name="map_frame" value="map" /> <!--地图坐标系-->
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        <param name="map_update_interval" value="5.0" />
 | 
				
			||||||
 | 
					        <param name="maxUrange" value="16.0" />
 | 
				
			||||||
 | 
					        <param name="sigma" value="0.05" />
 | 
				
			||||||
 | 
					        <param name="kernelSize" value="1" />
 | 
				
			||||||
 | 
					        <param name="lstep" value="0.05" />
 | 
				
			||||||
 | 
					        <param name="astep" value="0.05" />
 | 
				
			||||||
 | 
					        <param name="iterations" value="5" />
 | 
				
			||||||
 | 
					        <param name="lsigma" value="0.075" />
 | 
				
			||||||
 | 
					        <param name="ogain" value="3.0" />
 | 
				
			||||||
 | 
					        <param name="lskip" value="0" />
 | 
				
			||||||
 | 
					        <param name="srr" value="0.1" />
 | 
				
			||||||
 | 
					        <param name="srt" value="0.2" />
 | 
				
			||||||
 | 
					        <param name="str" value="0.1" />
 | 
				
			||||||
 | 
					        <param name="stt" value="0.2" />
 | 
				
			||||||
 | 
					        <param name="linearUpdate" value="1.0" />
 | 
				
			||||||
 | 
					        <param name="angularUpdate" value="0.5" />
 | 
				
			||||||
 | 
					        <param name="temporalUpdate" value="3.0" />
 | 
				
			||||||
 | 
					        <param name="resampleThreshold" value="0.5" />
 | 
				
			||||||
 | 
					        <param name="particles" value="30" />
 | 
				
			||||||
 | 
					        <param name="xmin" value="-50.0" />
 | 
				
			||||||
 | 
					        <param name="ymin" value="-50.0" />
 | 
				
			||||||
 | 
					        <param name="xmax" value="50.0" />
 | 
				
			||||||
 | 
					        <param name="ymax" value="50.0" />
 | 
				
			||||||
 | 
					        <param name="delta" value="0.05" />
 | 
				
			||||||
 | 
					        <param name="llsamplerange" value="0.01" />
 | 
				
			||||||
 | 
					        <param name="llsamplestep" value="0.01" />
 | 
				
			||||||
 | 
					        <param name="lasamplerange" value="0.005" />
 | 
				
			||||||
 | 
					        <param name="lasamplestep" value="0.005" />
 | 
				
			||||||
 | 
					    </node>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    <node pkg="joint_state_publisher" name="joint_state_publisher" type="joint_state_publisher" />
 | 
				
			||||||
 | 
					    <node pkg="robot_state_publisher" name="robot_state_publisher" type="robot_state_publisher" />
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    <node pkg="rviz" type="rviz" name="rviz" />
 | 
				
			||||||
 | 
					    <!-- 使用之前保存过的 rviz 配置-->
 | 
				
			||||||
 | 
					    <!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf_gazebo)/config/t7_car.rviz" /> -->
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					</launch>
 | 
				
			||||||
							
								
								
									
										71
									
								
								src/rc_navigation/package.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/rc_navigation/package.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					<package format="2">
 | 
				
			||||||
 | 
					  <name>rc_navigation</name>
 | 
				
			||||||
 | 
					  <version>0.0.0</version>
 | 
				
			||||||
 | 
					  <description>The rc_navigation package</description>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- One maintainer tag required, multiple allowed, one person per tag -->
 | 
				
			||||||
 | 
					  <!-- Example:  -->
 | 
				
			||||||
 | 
					  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
 | 
				
			||||||
 | 
					  <maintainer email="robofish@todo.todo">robofish</maintainer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- One license tag required, multiple allowed, one license per tag -->
 | 
				
			||||||
 | 
					  <!-- Commonly used license strings: -->
 | 
				
			||||||
 | 
					  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
 | 
				
			||||||
 | 
					  <license>TODO</license>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- Url tags are optional, but multiple are allowed, one per tag -->
 | 
				
			||||||
 | 
					  <!-- Optional attribute type can be: website, bugtracker, or repository -->
 | 
				
			||||||
 | 
					  <!-- Example: -->
 | 
				
			||||||
 | 
					  <!-- <url type="website">http://wiki.ros.org/rc_navigation</url> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- Author tags are optional, multiple are allowed, one per tag -->
 | 
				
			||||||
 | 
					  <!-- Authors do not have to be maintainers, but could be -->
 | 
				
			||||||
 | 
					  <!-- Example: -->
 | 
				
			||||||
 | 
					  <!-- <author email="jane.doe@example.com">Jane Doe</author> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- The *depend tags are used to specify dependencies -->
 | 
				
			||||||
 | 
					  <!-- Dependencies can be catkin packages or system dependencies -->
 | 
				
			||||||
 | 
					  <!-- Examples: -->
 | 
				
			||||||
 | 
					  <!-- Use depend as a shortcut for packages that are both build and exec dependencies -->
 | 
				
			||||||
 | 
					  <!--   <depend>roscpp</depend> -->
 | 
				
			||||||
 | 
					  <!--   Note that this is equivalent to the following: -->
 | 
				
			||||||
 | 
					  <!--   <build_depend>roscpp</build_depend> -->
 | 
				
			||||||
 | 
					  <!--   <exec_depend>roscpp</exec_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use build_depend for packages you need at compile time: -->
 | 
				
			||||||
 | 
					  <!--   <build_depend>message_generation</build_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use build_export_depend for packages you need in order to build against this package: -->
 | 
				
			||||||
 | 
					  <!--   <build_export_depend>message_generation</build_export_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use buildtool_depend for build tool packages: -->
 | 
				
			||||||
 | 
					  <!--   <buildtool_depend>catkin</buildtool_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use exec_depend for packages you need at runtime: -->
 | 
				
			||||||
 | 
					  <!--   <exec_depend>message_runtime</exec_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use test_depend for packages you need only for testing: -->
 | 
				
			||||||
 | 
					  <!--   <test_depend>gtest</test_depend> -->
 | 
				
			||||||
 | 
					  <!-- Use doc_depend for packages you need only for building documentation: -->
 | 
				
			||||||
 | 
					  <!--   <doc_depend>doxygen</doc_depend> -->
 | 
				
			||||||
 | 
					  <buildtool_depend>catkin</buildtool_depend>
 | 
				
			||||||
 | 
					  <build_depend>amcl</build_depend>
 | 
				
			||||||
 | 
					  <build_depend>gmapping</build_depend>
 | 
				
			||||||
 | 
					  <build_depend>map_server</build_depend>
 | 
				
			||||||
 | 
					  <build_depend>move_base</build_depend>
 | 
				
			||||||
 | 
					  <build_export_depend>amcl</build_export_depend>
 | 
				
			||||||
 | 
					  <build_export_depend>gmapping</build_export_depend>
 | 
				
			||||||
 | 
					  <build_export_depend>map_server</build_export_depend>
 | 
				
			||||||
 | 
					  <build_export_depend>move_base</build_export_depend>
 | 
				
			||||||
 | 
					  <exec_depend>amcl</exec_depend>
 | 
				
			||||||
 | 
					  <exec_depend>gmapping</exec_depend>
 | 
				
			||||||
 | 
					  <exec_depend>map_server</exec_depend>
 | 
				
			||||||
 | 
					  <exec_depend>move_base</exec_depend>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- The export tag contains other, unspecified, tags -->
 | 
				
			||||||
 | 
					  <export>
 | 
				
			||||||
 | 
					    <!-- Other tools can request additional information be placed here -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  </export>
 | 
				
			||||||
 | 
					</package>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user