在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ROS操作系統學習筆記4

jf_78858299 ? 來源:機器人網 ? 作者:機器人網 ? 2023-05-19 17:37 ? 次閱讀

第3步,設置CMakeLists.txt&package.xmlCMakeLists.txt:

find_package(catkin REQUIRED COMPONENTS
 roscpp
 std_msgs
)//告訴系統編譯本包時,需要找到這兩個包

catkin_package(
# INCLUDE_DIRS include
# LIBRARIES study
CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
)//聲明依賴本包同時需要里面這兩個ros包

add_executable(${PROJECT_NAME}_node src/study_listen_node.cpp)//編譯本包生成的可執行文件

add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})//鏈接可執行文件和依賴庫

//一般情況而已,CMakeLists.txt是創建包同時,系統自動生成的,然后,我們需要的工作,一般情況就是把上面基本地方去掉#號就行了(目的告訴系統,關于該包,在哪,依賴是啥)

package.xml:

roscppclass="hljs-name"build_depend>
std_msgsclass="hljs-name"build_depend>
roscppclass="hljs-name"exec_depend>
std_msgsclass="hljs-name"exec_depend>
//主要修改類似樣式,當然,本例子比較簡單,系統生成的,不需要做其他修改,但是,如果節點添加新的依賴,需要在這些地方添加相應的包

第4步,編譯

$ catkin_make  #注意在要做工作空間的一級目錄下使用該指令

第5步,驗證

$ roscore & #運行一個ROS master
$ rosrun study study_node & #包名+節點名;由于測試listener的節點,所以需要啟動一個talker的node才行
$ rostopic echo #study_topic
data: "hello study world!432"
---
data: "hello study world!433" //表示發布成功
#開啟一個新終端
$ rosrun study study_listen_node #包名+節點名
[ INFO] [1606043574.419247936]: I can see you again,hello study world!178 //表示監聽成功

這時,從零開始創建的listener節點node,成功創建完成

  1. 自定義消息類型并發布演示

這里主要就是定義一個消息類型是重點,然后,在上面創建的talker以及listener包里面頭文件包含,然后在CMakeLists.txt&package.xml兩文件中,添加新的頭文件類型即可使用新定義的消息類型了。

第一步,創建一個包:

$ catkin_create_pkg study_msgs std_msgs roscpp

第二步,在包創建一個msg文件夾( 注意文件夾名稱一定是這樣子的,否則,在cmakelists要修改很多 )

第三步,在文件夾中新建文件,StudyMsg.msg(注意命名方式以及后綴)

string detail
int32 id

注意,自定義的消息類型,記得一定不能寫其他說明性內容進去,否則發生編譯錯誤

第四步,設置CMakeLists.txt&package.xmlCMakeLists.txt:

find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs message_generation
)

## Generate messages in the 'msg' folder//這里可以看出,系統只會在msg文件夾中查找,對應第二步
add_message_files(
  FILES
  StudyMsg.msg
)

## Generate added messages and services with any dependencies listed here
generate_messages(
  DEPENDENCIES
  std_msgs
)

package.xml:

<build_depend>message_generation<span class="hljs-name"build_depend>
  <exec_depend>message_runtime<span class="hljs-name"exec_depend>

第五步,編譯,catkin_make

第六步,查看

$ cd include/study_msgs
$ ls
StudyMsg.h   //表示該頭文件生成成功

這時候,自定義消息類型生成成功,并且,可以被其他包通過頭文件#include"study_msgs/StudyMsg.h"方式,就可以正常使用。下面,以發布一個talker節點來展示,并且發布的topic名稱為/study_topic_new當然,CMakeLists.txt&package.xml要做相應的補充,CMakeLists.txt:

find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs study_msgs
)

catkin_package(
# INCLUDE_DIRS include
# LIBRARIES study
CATKIN_DEPENDS roscpp std_msgs study_msgs
# DEPENDS system_lib
)
//兩者都是添加新消息類型study_msgs

package.xml:

study_msgsclass="hljs-name"build_depend>
study_msgsclass="hljs-name"exec_depend>
//添加新消息類型study_msgs

此時,study_node.cpp為:

#include"ros/ros.h"
#include"std_msgs/String.h"
#include
#include"study_msgs/StudyMsg.h"//使用自定義消息類型

int main(int argc,char **argv){
   ros::init(argc,argv,"study_talker");//node's attribute name
   ros::NodeHandle n;
   ros::Publisher study_pub=n.advertise

終端查看:

$ rostopic echo /study_topic_new
---
detail: "hello study world! new"
id: 29975
---

4.** 參數中心rosparam的使用演示**

開始展示之前,一定要記得在study_listen包的CMakeLists.txt&package.xml做好跟上面的talker包study一樣準備,保證可以使用自定義消息類型。

study_node.cpp:

#include"ros/ros.h"
#include"std_msgs/String.h"
#include
#include"study_msgs/StudyMsg.h"

int main(int argc,char **argv){
   ros::init(argc,argv,"study_talker");//node's attribute name
   ros::NodeHandle n;
   ros::Publisher study_pub=n.advertise

study_listen_node.cpp:

#include"ros/ros.h"
#include"std_msgs/String.h"
#include"study_msgs/StudyMsg.h"


void studyCallback(const std_msgs::String::ConstPtr& msg){
  ROS_INFO("I can see you again,%s ",msg->data.c_str());
}//測試是監聽study_topic成功與否

void studyCallback_new(const study_msgs::StudyMsg::ConstPtr& msg){
  ROS_INFO("I think I cant forget you,%s,%d",msg->detail.c_str(),msg->id);
}//測試監聽自定義消息成功與否

void studyCallback_param(const study_msgs::StudyMsg::ConstPtr& msg){
  ROS_INFO("I think I cant forget you,%s,%d",msg->detail.c_str(),msg->id);
}//測試rosparam參數中心是否工作成功

int main(int argc,char ** argv){
  ros::init(argc,argv,"study_listener");
  ros::NodeHandle n;
  ros::Subscriber sub=n.subscribe("/study_topic",10,studyCallback);
  ros::Subscriber sub_new=n.subscribe("study_topic_new",10,studyCallback_new);
  ros::Subscriber sub_param=n.subscribe("/params_topic",10,studyCallback_param);
  ros::spin();
  return 0;
}

修改了上面的兩個文件,接下來就是編譯整個工作空間并成功,接著在終端執行

$ roscore &  #啟動ros master
$ rosrun study study_node & #啟動talker節點
$ rosrun study_listen study_listen_node #啟動listener節點
[ INFO] [1606047990.464340880]: I can see you again,hello study world!99
[ INFO] [1606047990.464436530]: I think I cant forget you,hello study world! new,100
[ INFO] [1606047990.476383810]: I think I cant forget you,cc,100

這時候我們發現,上面我們定義的回調函數,都成功調用了(表示上面的talker/listener/自定義消息 類型都是編寫并運行正常的)當我們在終端2啟動參數中心rosparam設置參數:

$ rosparam set /myparam "yqy"

終端1的顯示調整為:

[ INFO] [1606048163.371016634]: I can see you again,hello study world!368
[ INFO] [1606048163.371113447]: I think I cant forget you,hello study world! new,369
[ INFO] [1606048163.394940978]: I think I cant forget you,yqy,369

也就是將周期第三個,cc調整為yqy了。

本章小結:創建一個包,需要定義好CmakeLists.txt 、package.xml兩個文件,主要就是告訴系統,我這個包編譯和運行時依賴是什么;talker和listener的編寫也是基本套路一樣的,重新發布的主題以及消息類型以及內容就發布ok了;listener的回調函數,注意是無返回類型的;重新自定義一個消息類型,注意文件夾命名以及文件后綴名稱。基本是這些。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真
    +關注

    關注

    50

    文章

    4114

    瀏覽量

    133826
  • 調試
    +關注

    關注

    7

    文章

    587

    瀏覽量

    34021
  • ROS
    ROS
    +關注

    關注

    1

    文章

    279

    瀏覽量

    17043
收藏 人收藏

    評論

    相關推薦

    嵌入式Linux操作系統學習規劃,不看肯定后悔

    嵌入式Linux操作系統學習規劃,不看肯定后悔
    發表于 04-28 06:22

    探討嵌入式操作系統

    嵌入式操作系統學習筆記
    發表于 10-27 06:56

    嵌入式Linux操作系統學習規劃

    嵌入式Linux操作系統學習規劃ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)(2) 必須掌握一個嵌入式
    發表于 11-05 06:45

    Linux操作系統下的Python語言程序設計

    文章目錄前言導引前言由于本專欄涉及內容較多,如果大家希望系統學習Linux操作系統下的Python語言程序設計,可參考此文章。按本文章所列文章內容進行學習即可,其它文章作為輔助參考資料使用。導引(1
    發表于 12-22 06:17

    UCOSII操作系統的簡介

    前言這是我將UCOSII操作系統移植在STM32單片機上后進行UCOSII操作系統學習的一些筆記與理解,此文最后會附上我自己在UCOSII操作系統下使用STM32寫
    發表于 01-12 06:00

    ROS是什么?機器人操作系統ROS的介紹

    Robotics Foundation,Inc) 公司維護的開源項目。 1、首先是一個操作系統 根據 wikipedia 定義,操作系統是用來管理計算機硬件與軟件資源,并提供一些公用的 服務的系統軟件。而
    發表于 09-13 17:23 ?14次下載
    <b class='flag-5'>ROS</b>是什么?機器人<b class='flag-5'>操作系統</b><b class='flag-5'>ROS</b>的介紹

    ROS的含義與機器人操作系統ROS的介紹

    Operating System 的縮寫,原本是斯坦福大學的一個機器人項目,后來由 WillowGarage 公司發展,目前由 OSRF(Open Source Robotics Foundation,Inc)公司維護的開源項目。 1、首先是一個操作系統 根據 wikipedia 定義,
    發表于 09-26 14:08 ?12次下載

    機器人操作系統ROS詳細介紹

    機器人操作系統ROS詳細介紹 ROS( 機器人 操作系統,RobotOperatingSystem),是專為機器人軟件開發所設計出來的一套電腦操作系
    發表于 11-18 18:09 ?2422次閱讀

    嵌入式操作系統學習筆記

    嵌入式操作系統學習筆記
    發表于 10-20 13:51 ?3次下載
    嵌入式<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>

    嵌入式系統學習筆記

    嵌入式系統學習筆記https://app.yinxiang.com/fx/97dd59b5-21f1-470c-969c-d3509ee38fce
    發表于 10-20 19:50 ?0次下載
    嵌入式<b class='flag-5'>系統學習</b><b class='flag-5'>筆記</b>

    51操作系統學習筆記(三):建立一個屬于自己的AVR的RTOS(1)

    這篇筆記雖然是“51操作系統學習筆記”,但沒有找到合適的代碼。用楊明記的感覺還有點難度。因而轉學《建立一個屬于自己的AVR的RTOS》這篇文章絕對是學操作系統入門經典之作。經典之處在于
    發表于 11-15 18:36 ?9次下載
    51<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>(三):建立一個屬于自己的AVR的RTOS(1)

    51操作系統學習筆記(四):建立一個屬于自己的AVR的RTOS(2)

    承接51操作系統學習筆記(三):建立一個屬于自己的AVR的RTOS(1),在avr中調試一下下面的程序.為了加深學習應用,決定把代碼全部輸一遍,比復制的學些效果應該好一些吧。打開Avr studio
    發表于 11-15 21:06 ?7次下載
    51<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>(四):建立一個屬于自己的AVR的RTOS(2)

    ROS操作系統學習筆記1

    機器人操作系統(Robot operating system ,ROS)是一個應用于機器人上的基礎框架,它把原本松散的零部件耦合在一起,提供通信的架構,近似上ROS是一個中間件。 ros
    的頭像 發表于 05-19 17:20 ?809次閱讀
    <b class='flag-5'>ROS</b><b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>1

    ROS操作系統學習筆記2

    機器人操作系統(Robot operating system ,ROS)是一個應用于機器人上的基礎框架,它把原本松散的零部件耦合在一起,提供通信的架構,近似上ROS是一個中間件。 ros
    的頭像 發表于 05-19 17:21 ?635次閱讀

    ROS操作系統學習筆記3

    摘要:這篇文章主要介紹ROS常用工具、ROSPY和ROSCPP常用模塊,完全看完三篇文章,可以說ROS就基本入門,可以自己動手做實驗了。 **ROS常用工具** ROS工具
    的頭像 發表于 05-19 17:37 ?1037次閱讀
    <b class='flag-5'>ROS</b><b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>3
    主站蜘蛛池模板: 九色视频在线看| 高清视频在线播放| 超级狂色而且免费又超好看| 国内久久精品视频| 国产精品一区二区三区免费视频 | 18性夜影院午夜寂寞影院免费| 国产九九热| 啪啪小视频网站| 免费成人看片| 猛操女人| 国产欧美色图| 一级看片| 久久老色鬼天天综合网观看| jiucao在线观看精品| 69xxxx欧美老师| 伊人五月婷婷| 天天色图| 免费看毛片网| 国产日本三级在线播放线观看 | 特级做a爰片毛片免费看一区| 三级毛片网| 黄色美女网站在线观看| l欧美18一19sex性| 国产一区二区三区四卡| 国产欧美高清| 午夜视频在线观看网站| 黑色丝袜美女被网站| 在线免费亚洲| 性欧美17一18sex性高清| 日本三级在线| 国产亚洲人成网站观看| 久久免费99精品久久久久久| 国内真实实拍伦视频在线观看| 4虎.最新地址| 精品久草| 亚洲欧美日本视频| 婷婷久久综合九色综合九七| 六月婷婷综合| 天天干在线影院| 椎名空中文字幕一区二区| 亚洲黄色性视频|