在ros中有一套参数系统可以直接写到launch文件中,这样非常方便,不需要编译就能直接用,这对于c++来说非常的有好,这里记录一下如何使用。
主要步骤如下:
首先初始化节点
使用nodehandle进行管理,然后通过param管理参数
其他操作…
是不是非常简单,以下是一个例子:
#include <ros/ros.h>
#include <sensor_msgs/PointCloud2.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/pdc_io.h>
int main(int argc, char** argv){
ros::init(argc, argv, "UandBdetect");
ros::NodeHandle nh;
std::string file_path;
double wheel_base;
nh.param<std::string>("pcd_file_path", file_path, "/home/cyun/test_ws/p.pcd";
nh.param<double>("wheel_base", wheel_base, 1.75);
ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2>("pcl_output", 1);
pcl::PointCloud<pcl::PointXYZ> cloud;
snesor_msgs::PointCloud2 output;
//....
ROS_INFO("OK");
ros::spin();
return 0;
还是很简单的,然后使用launch进行启动:
<launch>
<param name="pcd_file_path" value="/home/cyun/test_ws/src/pcd2pgm/map/finalCloud.pcd" />
<param name="wheel_base" value=3 />
<node name="read_psc" pkg="read_pcd" type="read_pcd" output="screen">
</node>
最近遇到了两次rviz显示时看起来掉帧的问题:一个是录制的相机的数据,另一个是点云聚类时显示有掉帧。
可能得原因如下:
针对这两种问题,也许是显示的问题:
rviz接收数据的更新频率也是可以调的,如果显示rviz有掉帧,可以调一下rviz的接收帧率???待验证——但是打开不就是30hz吗?