ROS學習之釋出訊息——Publisher_程式碼分析
//一個非常詳細的版本: //本檔名字為: publisher.cpp #include "ros/ros.h" #include "std_msgs/String.h" #include <iostream> //或者 #include<sstream> //使用名稱空間,省的每次都需要ros:: using namespace ros; //這裡使用cout進行列印輸出 using namespace std; int main(int argc, char** argv){ //使用控制代碼之前必須初始化節點 //第三個引數不能為空,最好和節點名相同,我試過,和節點名不同也沒事 init(argc, argv, "publisher_Node"); NodeHandle n; //廣播的訊息型別為:std_msgs::String,並把訊息放入話題“topic_m” 中可以試著使用rostopic list打印出該話題 //不同軟體包下的話題可以同名,但是在ros只允許同時執行一個,所以這裡最好是獨一無二的訊息名稱 Publisher pub = n.advertise<std_msgs::String>("topic_m",1000); //傳送訊息的頻率為2Hz, 1秒發2個,週期為500ms Rate loop_rate(2); while(ok()){ //定義一個msg,往msg中裝入需要廣播的訊息 std_msgs::String msg; //列印輸出hello cout<<"print from cout: Hello wanzew..."<<endl; //將需要廣播的字串裝入msg中 msg.data = "Hello wanzew!"; //使用ROS_INFO列印提醒訊息 ROS_INFO("%s",msg.data.c_str()); //把std_msgs::String型別的訊息msg pub.publish(msg); //釋出訊息時可以不寫spinOnce(),但訂閱某個訊息時必須要寫spin()函式 //spinOnce(); //靠sleep()函式保證連續兩個訊息之間的時間恰好為一個週期 loop_rate.sleep(); } return 0; }
//一個更加簡潔的版本 #include "ros/ros.h" #include "std_msgs/String.h" #include <iostream> using namespace ros; using namespace std; int main(int argc, char** argv){ init(argc, argv, "publisher_Node"); NodeHandle n; Publisher pub = n.advertise<std_msgs::String>("topic_m",1000); Rate loop_rate(2); while(ok()){ std_msgs::String msg; msg.data = "Hello wanzew!"; pub.publish(msg); loop_rate.sleep(); cout<<"print from cout: Hello wanzew..."<<endl; } return 0; }
對應的 CMakeList.txt 檔案內容如下:
下篇:ROS學習之訂閱訊息——Subscriber_程式碼分析cmake_minimum_required(VERSION 2.8.3) project(my_package) find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs ) catkin_package( # 下面註釋部分可開啟--> # INCLUDE_DIRS include # LIBRARIES my_package # CATKIN_DEPENDS roscpp rospy std_msgs # DEPENDS system_lib ) include_directories( # include ${catkin_INCLUDE_DIRS} ) # publisher_Node在ros中是獨一無二的,不能和其它節點名字重複 add_executable(publisher_Node src/publisher.cpp) target_link_libraries(publisher_Node ${catkin_LIBRARIES})
相關推薦
ROS學習之釋出訊息——Publisher_程式碼分析
//一個非常詳細的版本: //本檔名字為: publisher.cpp #include "ros/ros.h" #include "std_msgs/String.h" #include <i
ROS學習之訂閱訊息——Subscriber_程式碼分析
//詳解版本: //本程式碼檔名為:subscriber.cpp #include "ros/ros.h" #include "std_msgs/String.h" #include <iost
機器學習之K-近鄰演算法程式碼分析
在看Peter的K-近鄰實戰時,發現原來“手寫識別系統”不止是影象處理和影象識別可以解決,原來從影象也是矩陣資料的層面來看,不同數字的識別也是資料分類問題(2333……又打開了思維的新視角)。因本身是學影象處理出身,所以關於手寫識別系統,思維受限在怎樣進行影象處理、怎樣訓練數字模型、怎樣進行數字識別了。 該
ROS學習之 cpp訊息釋出者和訊息訂閱者
wiki連結: http://wiki.ros.org/roscpp/Overview/Publishers%20and%20Subscribers一、釋出一個話題 其它相關連結: ros::NodeHandle,ros::NodeHandle::
ROS開發筆記(9)——ROS 深度強化學習應用之keras版本dqn程式碼分析
在ROS開發筆記(8)中構建了ROS中DQN演算法的開發環境,在此基礎上,對演算法程式碼進行了分析,並做了簡單的修改: 修改1 : 改變了儲存模型引數在迴圈中的位置,原來是每個10整數倍數回合裡面每一步都修改(相當於修改episode_step次),改成了每個10整數倍數
ROS學習之編譯一個包
cti ges begin -s 包名 code start ner 一個 catkin_make -DCATKIN_WHITELIST_PACKAGES= "包名" $ catkin_make -DCATKIN_WHITELIST_PACKAGES="begin
ros學習之kobuki
key con core sta -i fig other del mini sudo apt-get install ros-indigo-kobuki ros-indigo-kobuki-corerosrun kobuki_ftdi create_udev_rules#
ROS學習之路的整理
ROS是基於linux系統的一個次級作業系統,目前被看做是機器人界的一套標準平臺,可以類比手機的安卓作業系統或者是電腦的windows作業系統。ROS最大的優點在於靈活、低耦合、分散式、開源以及功能強大而豐富的
C++PrimerPlus學習之C++中的程式碼重用
has-a關係 包含物件成員的類 易於理解及使用 可包含多個基類,易於區分。 建構函式初始化的是成員物件,而不是繼承的物件,所以在初始化列表中使用的是成員名,而不是類名。 當初始化列表包含多個專案時,這些專案被初始化的順序為
Android 學習之《第一行程式碼》第二版 筆記(十)探究碎片(二)
一個簡易版的新聞應用 同時相容手機和平板的應用程式 一、佈局 news_content_frag.xml額我的程式碼裡面是news_content_fragment.xml,圖片打錯了 二、程式碼編寫 1. 實體類(News.java) //新聞實體類 pub
Android 學習之《第一行程式碼》第二版 筆記(九)探究碎片(一)
一、碎片 1. 碎片是什麼: 碎片(Fragment)是一種可以嵌入在活動當中的UI片段,能讓程式更加合理和充分地利用大螢幕的空間。(可以理解成迷你型活動) 2. 簡單用法: 在一個活動當中新增兩個碎片,並讓這兩個碎片平分活動空間。 1.)效果圖(沒錢買平板,CPU不支援
Android 學習之《第一行程式碼》第二版 筆記(十一)詳解廣播機制(一)
一、廣播機制簡介 1. 四大元件之一 2. Android 提供了一套完整的API,允許應用程式自由地傳送和接收廣播。 A. 傳送廣播藉助Intent B. 接收廣播藉助廣播接收器(Broadcast Receiver) 3. 廣播型別: A. 標準廣播: 完全非同步執行
Android 學習之《第一行程式碼》第二版 筆記(十二)詳解廣播機制(二)
廣播的最佳實踐——實現強制下線功能 思路:在介面上彈出一個對話方塊,讓使用者無法進行任何操作,必須點選對話方塊中的確定按鈕,然後回到登入介面即可。 一、效果圖 1. 登入介面並輸入賬號密碼 2. 登陸後的介面 3. 強制下線 4. 退回登陸的介面
基於Visual C++之Windows核心程式設計程式碼分析(1)實現裝置管理器列舉裝置
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Ros學習——C++釋出器publisher和訂閱器subscriber
1.編寫釋出器 初始化 ROS 系統 在 ROS 網路內廣播我們將要在 chatter 話題上釋出 std_msgs/String 型別的訊息 以每秒 10 次的頻率在 chatter 上釋出訊息 在 beginner_tutorials pack
cocos2d-x學習之路(二)——分析AppDelegate和HelloWorldScene檔案
這裡我們來看一下cocos自動給我們生成的工程裡有些什麼東西,並且分析一下這些程式碼的用途,來為我們以後編寫cocos程式鋪下基礎。 這裡我建議看我這份隨筆的看官先看看cocos官網的快速入門手冊,不然可能會比較迷糊(因為待會要分析一些程式碼,如果以前沒見過的話會比較昏)。傳送門在這裡 其中一些基本不需要程式
機器學習之AdaBoost原理與程式碼實現
1 2.000000 1.000000 38.500000 66.000000 28.000000 3.000000 3.000000 0.000000 2.000000 5.000000 4.000000 4.000000 0.0
機器學習之KNN原理與程式碼實現
KNN原理與程式碼實現 KNN原理 KNN(k-Nearest Neighbour):K-近鄰演算法,主要思想可以歸結為一個成語:物以類聚 工作原理 給定一個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的 k (k
ROS學習之路(二)檔案系統
在ROS的檔案包裡面,有純粹的程式碼,也有編譯後的二進位制檔案。如何將這些檔案有條不紊的整理起來呢?於是就有了下面這種檔案系統: 對於每一個特定的功能,用一個資料夾包起來,就是所謂的功能包: (1)config:放置功能包中的配置檔案,由使用者建立,檔名可以不同
ros學習之camera calibration 單目攝像頭標定
環境:ubuntu16.04 ros版本 kinetic 標定筆記本單目攝像頭 需要的準備:1、標定圖:下面這張列印到a4紙上。 2、攝像機驅動,我使用的是usb_cam,下載地址:https://github.com/ros-drivers/usb_c