corrige r g b dans random_pcl_publisher & pcl_displayer
This commit is contained in:
parent
d45cde8b6d
commit
46d56b3297
5 changed files with 61 additions and 23 deletions
|
@ -1,6 +1,7 @@
|
|||
cmake_minimum_required(VERSION 2.8.3)
|
||||
project(hand_control)
|
||||
|
||||
#set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
|
||||
## Find catkin macros and libraries
|
||||
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
|
||||
## is used, also find other catkin packages
|
||||
|
@ -116,6 +117,10 @@ add_dependencies(filtre ${catkin_EXPORTED_TARGETS})
|
|||
add_executable(random_pcl_publisher src/random_pcl_publisher.cpp)
|
||||
target_link_libraries(random_pcl_publisher ${catkin_LIBRARIES})
|
||||
add_dependencies(random_pcl_publisher ${catkin_EXPORTED_TARGETS})
|
||||
|
||||
add_executable(pcl_displayer src/pcl_displayer.cpp)
|
||||
target_link_libraries(pcl_displayer ${catkin_LIBRARIES})
|
||||
add_dependencies(pcl_displayer ${catkin_EXPORTED_TARGETS})
|
||||
## Add cmake target dependencies of the executable/library
|
||||
## as an example, message headers may need to be generated before nodes
|
||||
# add_dependencies(hand_control_node hand_control_generate_messages_cpp)
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<launch>
|
||||
|
||||
<node name="filtre_z" pkg="hand_control" type="filtre">
|
||||
<remap from="/filtre/input" to="random_pcl"/>
|
||||
<remap from="/filtre/input" to="/random_pcl"/>
|
||||
</node>
|
||||
<param name="/filtre/zmax" value="100." type="double" />
|
||||
|
||||
<node name="publisher" pkg="hand_control" type="random_pcl_publisher" >
|
||||
<remap from="/random/output" to="random_pcl"/>
|
||||
<remap from="/random/output" to="/random_pcl"/>
|
||||
</node>
|
||||
<param name="/random/freq" value="1." type="double" />
|
||||
<param name="/random/length" value="5" type="int" />
|
||||
|
|
|
@ -25,17 +25,6 @@ class Callback {
|
|||
// publication
|
||||
publisher.publish(pcl);
|
||||
ROS_INFO("PointCloud published");
|
||||
ROS_INFO("filtered cloud :");
|
||||
for(int i = 0; i < pcl->points.size(); ++i)
|
||||
{
|
||||
ROS_INFO("\nx : %f\ny : %f\nz : %f\nr : %d\ng : %d\nb : %d",
|
||||
pcl->points[i].x,
|
||||
pcl->points[i].y,
|
||||
pcl->points[i].z,
|
||||
pcl->points[i].r,
|
||||
pcl->points[i].g,
|
||||
pcl->points[i].b);
|
||||
}
|
||||
}
|
||||
|
||||
Callback(ros::Publisher& pub) : publisher(pub), z_filtre()
|
||||
|
|
48
hand_control/src/pcl_displayer.cpp
Normal file
48
hand_control/src/pcl_displayer.cpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
#include <ros/ros.h>
|
||||
#include <pcl_ros/point_cloud.h>
|
||||
#include <pcl/point_types.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
typedef pcl::PointCloud<pcl::PointXYZRGB> PointCloud;
|
||||
|
||||
class Callback {
|
||||
public:
|
||||
void
|
||||
operator()(const PointCloud::ConstPtr& msg)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
stream << "PointCloud published :" << std::endl;
|
||||
for(int i = 0; i < msg->points.size(); ++i)
|
||||
{
|
||||
pcl::PointXYZRGB p = msg->points[i];
|
||||
stream << std::endl
|
||||
<< "point # " << i << std::endl
|
||||
<< "x : " << p.x << std::endl
|
||||
<< "y : " << p.y << std::endl
|
||||
<< "z : " << p.z << std::endl
|
||||
<< "r : " << (int) p.r << std::endl
|
||||
<< "g : " << (int) p.g << std::endl
|
||||
<< "b : " << (int) p.b << std::endl;
|
||||
}
|
||||
ROS_INFO("%s", stream.str().c_str());
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
ros::init(argc, argv, "pcl_displayer");
|
||||
ros::NodeHandle node("pcl_displayer");
|
||||
|
||||
// initialisation
|
||||
ros::Subscriber subscriber = node.subscribe<PointCloud>("input", 1, Callback());
|
||||
|
||||
// démarrage
|
||||
ROS_INFO("node started");
|
||||
ros::spin();
|
||||
ROS_INFO("exit");
|
||||
return 0;
|
||||
}
|
|
@ -12,7 +12,8 @@ typedef pcl::common::UniformGenerator<float> UGenerator;
|
|||
class Generator
|
||||
{
|
||||
public:
|
||||
Generator(int len, double m, double M) : length(len), min(m), max(M), cgen()
|
||||
Generator(int len, double m, double M)
|
||||
: length(len), min(m), max(M), cgen()
|
||||
{
|
||||
UGenerator::Parameters params(min, max, -1);
|
||||
cgen.setParameters(params);
|
||||
|
@ -23,16 +24,11 @@ class Generator
|
|||
{
|
||||
PointCloud::Ptr pcl(new PointCloud());
|
||||
cgen.fill(length, length, *pcl);
|
||||
ROS_INFO("random cloud :");
|
||||
for (int i = 0; i < pcl->points.size(); ++i)
|
||||
{
|
||||
ROS_INFO("\nx : %f\ny : %f\nz : %f\nr : %d\ng : %d\nb : %d",
|
||||
pcl->points[i].x,
|
||||
pcl->points[i].y,
|
||||
pcl->points[i].z,
|
||||
pcl->points[i].r,
|
||||
pcl->points[i].g,
|
||||
pcl->points[i].b);
|
||||
pcl->points[i].r = (uint8_t) 255;
|
||||
pcl->points[i].g = (uint8_t) 255;
|
||||
pcl->points[i].b = (uint8_t) 0;
|
||||
}
|
||||
return pcl;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue