ros topic和service的使用

在做ldiar slam的時候,最常用的當屬topic,偶爾也會用一下service,action則很少使用。現在一塊來看一下topic的使用。

一、topic的使用

topic的消息訂閱和發布

#include<ros/ros.h>
#include<rosbag/bag.h>
#include<rosbag/view.h>
#include<std_msgs/String.h>
#include<pcl/point_types.h>
#include<pcl/point_cloud.h>
#include<pcl/conversions.h>
#include<pcl_conversions/pcl_conversions.h>
#include<opencv2/opencv.hpp>#include<image_transport/image_transport.h>
#include<cv_bridge/cv_bridge.h>
#include<sensor_msgs/PointCloud2.h>
#include<sensor_msgs/Imu.h>
#include<nav_msgs/Odometry.h>
#include<sensor_msgs/LaserScan.h>
#include<sensor_msgs/Range.h>
#include<turtlesim/Spawn.h>
#include<std_srvs/Trigger.h>class DataProcess
{public:DataProcess(){}public:void processPointCloud2(const sensor_msgs::PointCloud2::ConstPtr& pc){}void imuCallback(const sensor_msgs::Imu::ConstPtr& imuMsg){std::cout<< imuMsg->linear_acceleration.x<< "   "<<  imuMsg->linear_acceleration.y<< "   "<<  imuMsg->linear_acceleration.z<< " \n";}pcl::PointCloud<pcl::PointXYZI> pointxyz;pointxyz.width = 100;pointxyz.height = 1;pointxyz.resize(pointxyz.height * pointxyz.width);srand(time(nullptr));for(int i = 0;i < 100; i ++){pointxyz.points[i].x = (rand()% 1000) / 10.0;pointxyz.points[i].y = (rand()% 1000) / 10.0;pointxyz.points[i].z = (rand()% 1000) / 10.0;}//-------------------------------------------點云的生成和轉化----------------------------順利完成---------------------// 這個函數在pcl_conversion./pcl_conversion.h文件中sensor_msgs::PointCloud2 pointCloudMsg;pointCloudMsg.header.stamp = ros::Time().now();pointCloudMsg.header.frame_id = "/camera_init";pcl::toROSMsg(pointxyz,pointCloudMsg);pcl::PointCloud<pcl::PointXYZI> pointxyzi2;pcl::fromROSMsg(pointCloudMsg, pointxyzi2);for( int i = 0; i < pointxyzi2.points.size();i ++ ){std::cout<< pointxyzi2.points[i].x<<"   "<< pointxyzi2.points[i].y<<"   "<< pointxyzi2.points[i].z<<"\n";}pcl::PointCloud<pcl::PointXYZI> point3;pcl::moveFromROSMsg(pointCloudMsg,point3);for( int i = 0; i < point3.points.size();i ++ ){std::cout<< point3.points[i].x<<"   "<< point3.points[i].y<<"   "<< point3.points[i].z<<"****\n";}}

二、service的使用

以spawn為例子,學習service的使用。這個例子比較簡潔,這樣很容易學會。

1)客戶端

#include<ros/ros.h>
#include<turtlesim/spawn.h>int main(int argc, char** argv)
{turtlesim::Spawn  spawn;spawn.request.x = 0.0;spawn.request.y = 1.0;spawn.request.theta = 1.0;spawn.request.name = "turtle2";ros::service::waitForService("/showspawn");ros::ServiceClient client = nh_.serviceClient<turtlesim::Spawn>("/showspawn");client.call(spawn);
}

2)服務端

#include<ros/ros.h>
#include<turtlesim/Spawn.h>bool srvCallback1(turtlesim::Spawn::Request &req, turtlesim::Spawn::Response& respond){respond.name = req.name;std::cout<<  respond.name <<std::endl;return true;}
int main(int argc, char** argv)
{ros::init(argc, argv, "rosbaglearn1");ros::NodeHandle nh_;ros::ServiceServer srv = nh_.advertiseService("/showspawn",  srvCallback1 );ros::spin();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914036.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914036.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914036.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【TCP/IP】18. 因特網服務質量

18. 因特網服務質量18. 因特網服務質量18.1 服務質量&#xff08;QoS&#xff09;18.2 實時傳輸協議&#xff08;RTP&#xff09;18.3 實時傳輸控制協議&#xff08;RTCP&#xff09;18.4 集成業務&#xff08;IntServ&#xff09;18.5 區分業務&#xff08;DiffServ&#xff0…

數據集相關類代碼回顧理解 | StratifiedShuffleSplit\transforms.ToTensor\Counter

【PyTorch】圖像多分類項目 目錄 StratifiedShuffleSplit transforms.ToTensor Counter StratifiedShuffleSplit sss StratifiedShuffleSplit(n_splits1, test_size0.2, random_state0) 創建StratifiedShuffleSplit對象&#xff0c;用于將數據集劃分為訓練集和測試集。 …

【環境配置】KAG - Windows 安裝部署

前言 本博客將介紹如何在 Windows 系統上 部署運行 KAG 項目&#xff0c;將使用 WSL 和 Docker 和 Vscode 幫助我們之后利用 KAG 開發個人知識庫問答項目。 KAG&#xff08;Knowledge-Augmented Generation&#xff09;知識增強生成系統 是一個融合知識圖譜與大語言模型能力的…

《探索電腦麥克風聲音采集多窗口實時可視化技術》

引言在當今數字化信息飛速發展的時代&#xff0c;聲音作為一種重要的信息載體&#xff0c;其處理和分析技術日益受到廣泛關注。聲音可視化技術&#xff0c;作為聲音處理領域的關鍵技術之一&#xff0c;具有極為重要的價值。它能夠將抽象的聲音信號轉化為直觀的視覺圖像&#xf…

加工進化論:SPL 一鍵加速日志轉指標

作者&#xff1a;勞貴泓&#xff08;泓逸&#xff09; 1. 背景 日志服務的 SPL&#xff08;Search Processing Language&#xff09;自推出以來&#xff0c;憑借其強大的數據處理能力&#xff0c;已經成為眾多開發者和企業實現高效數據分析的首選工具。隨著業務場景的不斷拓展…

Web 應用防火墻:守護應用安全的核心屏障

當你在調試 Web 應用時&#xff0c;是否遇到過這樣的情況&#xff1a;剛修復的 XSS 漏洞又被繞過&#xff0c;數據庫日志里突然出現詭異的 SQL 語句&#xff0c;或者用戶反饋登錄后信息被篡改&#xff1f;這些問題的背后&#xff0c;往往是 Web 應用面臨的持續安全威脅。據 OWA…

Python 網絡爬蟲的基本流程及 robots 協議詳解

數據驅動的時代,網絡爬蟲作為高效獲取互聯網信息的工具,其規范化開發離不開對基本流程的掌握和對 robots 協議的遵守。本文將系統梳理 Python 網絡爬蟲的核心流程,并深入解讀 robots 協議的重要性及實踐規范。 一、Python 網絡爬蟲的基本流程 Python 網絡爬蟲的工作過程可…

字節二面(狠狠拷打系列):什么是http1.1,2.0,3.0,分別在什么場景里面用的多

文章目錄從單行到新紀元&#xff1a;HTTP/0.9、1.0、1.1、2.0與3.0的核心區別HTTP/0.9&#xff1a;協議的黎明 (1991)HTTP/1.0&#xff1a;功能擴展與標準化 (1996)HTTP/1.1&#xff1a;持久連接與性能優化 (1997)HTTP/2.0&#xff1a;二進制與多路復用 (2015)HTTP/3.0&#xf…

Java教程:JavaWeb ---MySQL高級

?博客主頁&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客內容》&#xff1a;大數據開發、.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 &#x1f4e2;博客專欄&#xff1a; https://blog.csdn.net/m0_…

Audio筆試和面試題型解析

本專欄預計更新90期左右。當前第27期-音頻部分. 音頻硬件在消費電子(手機、電腦、耳機、智能音箱)、汽車、專業音響等領域是用戶體驗的關鍵組成部分。大廠(如蘋果、三星、Google、華為、小米、各種汽車Tier 1供應商等)的硬件工程師在設計和優化音頻系統時,需要對喇叭(揚…

DeepSeek俄羅斯方塊網頁版HTML5(附源碼)

用DeepSeek生成一個俄羅斯方塊游戲網頁版的&#xff0c;基于HTML5&#xff0c;效果很棒。 提示詞prompt 幫我做一個俄羅斯方塊 網頁版的 基于HTML5游戲功能說明 基本功能&#xff1a; 完整的俄羅斯方塊游戲邏輯 7種不同形狀的方塊 分數計算系統 等級提升系統(速度會隨等級提高)…

企業電商平臺搭建:ZKmall開源商城服務器部署與容災方案

企業級電商平臺最核心的訴求&#xff0c;就是得讓 “業務一直在線”—— 不管是平時運營要穩如磐石&#xff0c;還是突然出故障了能火速恢復&#xff0c;都離不開靠譜的服務器部署架構和周全的容災方案。ZKmall 開源商城攢了 6000 多家企業客戶的實戰經驗&#xff0c;琢磨出一套…

【軟件運維】前后端部署啟動的幾種方式

.sh啟動 #!/bin/bash# 解析軟鏈接&#xff0c;獲取真實腳本目錄 SOURCE"${BASH_SOURCE[0]}" while [ -L "$SOURCE" ]; doDIR"$( cd -P "$( dirname "$SOURCE" )" && pwd )"SOURCE"$(readlink "$SOURCE&q…

[爬蟲知識] DrissionPage:強大的自動化工具

相關爬蟲實戰案例&#xff1a;[爬蟲實戰] 使用 DrissionPage 自動化采集小紅書筆記 相關爬蟲專欄&#xff1a;JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 逆向知識點合集 前言&#xff1a; 在當今數據驅動的世界里&#xff0c;網絡爬蟲和自動化測試扮演著越來越重要的角…

數據分析師如何構建自己的底層邏輯?

目錄 一、什么是“底層邏輯”&#xff1f; 二、底層邏輯的核心是什么&#xff1f;三句話講清楚 1. 你到底在解決什么問題&#xff1f; 2. 你有沒有一套“框架”來組織你的分析思路&#xff1f; 3. 你能不能用數據說出“結論 因果 建議”&#xff1f; 三、從 BI 視角出發…

殘差連接+層歸一化:Transformer訓練穩定秘訣

什么是:殘差連接+層歸一化 殘差連接 (Residual Connection):防止梯度消失 核心原理 簡單理解:走樓梯時,既可以走樓梯,也可以坐電梯,最后在同一層匯合。 # 殘差連接的數學表示 輸出 = F(輸入) + 輸入 # ↑處理后 ↑原始輸入具體數值例子 處理句子"我愛學習…

公網 IP 不穩定監控實戰:用多點 Ping 策略實現高可達率保障

更多云服務器知識&#xff0c;盡在hostol.com 你有沒有遇到過這種情況&#xff1a;明明服務器的監控系統說一切正常&#xff0c;服務狀態綠油油一片&#xff0c;但用戶那邊卻反饋“時好時壞”、“丟包嚴重”甚至“根本連不上”。你掏出手機連上公網去試試&#xff0c;誒&#…

uniapp類似抖音視頻滑動

最近需求說要做個類似抖音那種視頻的&#xff0c;我二話不說就用了swiper-view組件&#xff0c;但是效果不太理想&#xff0c;后面改用css屬性先放效果圖&#xff1a;<template><view class"video-scroll-container" touchstart"handleTouchStart"…

Umi-OCR 的 Docker(win制作鏡像,Linux(Ubuntu Server 22.04)離線部署)

前置博客&#xff1a;Ubuntu-Server 22.04.4 詳細安裝圖文教程 wget命令在windows終端下不能使用的原因及解決辦法 在 Ubuntu 22.04 LTS 上離線安裝 Docker 手把手教你在Win11下安裝docker Umi-OCR 完整部署流程 第一步&#xff1a;在 Windows 上構建/獲取 Umi-OCR Docker…

AI Agent革命:當大模型學會使用工具、記憶與規劃

以下是針對Lilian Weng的AI Agent綜述文章&#xff08;原文鏈接&#xff09;的深度解析與整理&#xff1a; AI Agent革命&#xff1a;當大模型學會使用工具、記憶與規劃 ——解析LLM驅動的下一代智能體技術架構 一、核心范式轉變 傳統AI模型&#xff08;如ChatGPT&#xff09…