ROS中訂閱兩個訊息,發布乙個資料。

2021-07-14 05:59:01 字數 1165 閱讀 4408

今天測試轉換出來的點雲資料,利用rviz顯示不出來結果。提示錯誤如下:

no message received in rviz

status:error.

points showing [0] points from [0] messages.

topic no messages received.

transform for frame: frame does not exist.

在網上google了一下,就把網友的例子和回答,在部落格裡面備份一下吧!

**如下:通過訂閱兩個訊息,發布乙個資料。

typedef pcl::pointcloud> pointcloud;

typedef pcl::pointxyz pointtype;

ros::publisher pub;

pcl::pointcloudkeypoint_indices;

pcl::pointcloud::ptr keypoints_ptr (new pcl::pointcloud);

pcl::pointcloud& keypoints = *keypoints_ptr;

float angular_resolution_;

float support_size_ =0.2f;

image_geometry::pinholecameramodel model_;

void cameramodelcallback(const sensor_msgs::camerainfoconstptr &info_msg)

void depthimage_cb(const sensor_msgs::imageconstptr &depth_msg)

解決方法:

參考參考2

參考3所發布資料,需要給定frame_id和stamp標籤。因為rviz顯示資料,需要知道資料的frame_id和時間戳。

keypoints.header.frame_id = depth_msg->header.frame_id;

keypoints.header.stamp = depth_msg->header.stamp;

ROS學習 在同乙個節點實現發布 訂閱訊息

在ros的應用中,常常會遇見乙個節點接收了某個資料後,經過處理再 出來。下面就這種情況給出在同乙個節點實現發布 訂閱訊息的例子。include ros ros.h include std msgs float64.h include class tl1 intmain int argc,char a...

乙個陣列實現兩個棧

題目 乙個陣列a 1.n 來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。思路 1 建立乙個陣列,分別從兩邊開始,依次往中間走。思路 2 建立乙個陣列,乙個走奇數字,乙個走偶數字。奇偶方式 define crt secure no warnings includeusing nam...

乙個陣列實現兩個棧

乙個陣列實現兩個棧,和 共享棧其實是很類似的。有兩種方式實現 看圖就知道 一種是兩個棧增長方向一樣的 另一種起始位置分別在棧的兩端,往中間增長。方法一 增長方向一樣 方法 把陣列下標分為奇數和偶數 分別給兩個棧使用 如下 我在程式中注釋的 部分,可以放開 看看是什麼效果,注釋掉的那部分是我剛開始的想...