pcl_ros 库学习

一 一个完整代码的编译及显示.

1.建立工作空间和功能包

mkdir -p workspace_name/src
cd workspace_name
source devel/setup.bash
catkin_create_pkg package_name ku_1 ku_2 ku_3 ...

应用:

mkdir -p 1/src
cd src
source devel/setup.bash
catkin_create_pkg xixinizuibang pcl_conversions pcl_ros roscpp sensor_msgs

2.在xixinizuibang的src中,写你自己的代码,这里example.cpp.

3.修改Cmakelists.txt

在里面加入

add_executable({PROJECT_NAME}_node src/example.cpp)
target_link_libraries({PROJECT_NAME}_node ${catkin_LIBRARIES})

这里{PROJECT_NAME}_node,命名可以自定义,代表node(节点)名称.

example.cpp代表需要进行编译的节点名称.

应用:

add_executable(example src/example.cpp)
target_link_libraries(example ${catkin_LIBRARIES})

最终编译成功节点名称为example

4.编译并source

在工作空间下,这里是1(workspace_name)
catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name"
这里
catkin_make -DCATKIN_WHITELIST_PACKAGES="xixinizhenbang"
source devel/setup.bash

编译结果,并可以看出节点名称为example,在rosrun rqt_graph rqt_graph 节点管理器中可以看到节点名称.

5.用rviz显示

window 1: roscore

window 2: rosrun package_name node_name input:=/topic

input内容为topic!!!!!!

此处为:rosrun xixinizuibang example input:/pcl_output     

此处的pcl_output为之前发布的节点,作用是发布点云(在pcd显示那节).

window 3: rosrun rviz rviz

将fixed_frame 设置成为odom,这个在代码里可以设置,在pcd显示那节.

add pointcloud2  ;   topic:  /output




二 pcl_ros的结合格式

内容来自http://wiki.ros.org/pcl/Tutorials,中文注释原创!

#include <ros/ros.h>
// PCL specific includes
#include <sensor_msgs/PointCloud2.h>
#include <pcl_conversions/pcl_conversions.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

ros::Publisher pub;   //ros发布话题并命名

void 
cloud_cb (const sensor_msgs::PointCloud2ConstPtr& input)
{
  // Create a container for the data.
  sensor_msgs::PointCloud2 output;

  // Do data processing here...
  output = *input;

  // Publish the data.
  pub.publish (output);
}

int
main (int argc, char** argv)
{
  // Initialize ROS
  ros::init (argc, argv, "my_pcl_tutorial");
  ros::NodeHandle nh;

  // Create a ROS subscriber for the input point cloud
  ros::Subscriber sub = nh.subscribe ("input", 1, cloud_cb);

  // Create a ROS publisher for the output point cloud
  pub = nh.advertise<sensor_msgs::PointCloud2> ("output", 1);

  // Spin
  ros::spin ();
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值