gazebo里通過節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解
通過終端是這樣發(fā)送得
rostopic pub -1 /swivel/swiveljoint1_position_controller/command std_msgs/Float64 "data: 1.5"
發(fā)布得消息類型是 std_msgs/Float64
這個(gè)應(yīng)該發(fā)布得topic得名稱 /swivel/swiveljoint1_position_controller/command
實(shí)驗(yàn)一下
通過啟動(dòng)后查看活躍得topic 發(fā)現(xiàn)了此topic 但是現(xiàn)在有發(fā)布得地方,應(yīng)該是有訂閱的地方所以此時(shí)該topic 活躍
是對(duì)應(yīng)得
創(chuàng)建功能包
$ catkin_create_pkg swivel_controller_cmd_publisher roscpp std_msgs
依賴 std_msgs 因?yàn)樾枰l(fā)布std_msgs/Float64 類型得數(shù)據(jù)
寫發(fā)布功能得cpp
#include <ros/ros.h> #include "std_msgs/Float64.h" //要發(fā)布該類型得數(shù)據(jù) 需要包含該類型文件 int main(int argc, char **argv) { ros::init(argc,argv,"swivel_gimbal_controller_cmd_publisher"); ros::NodeHandle nh ; //實(shí)例化句柄,初始化node std_msgs::Float64 msg; //創(chuàng)建該類型消息 msg.data = 0.1; // 初始化消息 // 聲明發(fā)布句柄 <std_msgs::Float64> 消息類型 // "/swivel/swiveljoint1_position_controller/command" 模板名稱 // 數(shù)據(jù)緩存大小 ros::Publisher pub = nh.advertise<std_msgs::Float64>( "/swivel/swiveljoint1_position_controller/command", 1); ros::Rate loop_rate(10);//定義發(fā)布的頻率,1HZ while (ros::ok()) { msg.data = (msg.data)+0.1; pub.publish(msg); //發(fā)布消息 loop_rate.sleep();//根據(jù)前面的定義的loop_rate } return 0; }
修改CMakeLists.txt
其中 swivel_gimbal_controller_cmd_publisher 是節(jié)點(diǎn)名字
include_directories( include ${catkin_INCLUDE_DIRS} ) add_executable(swivel_gimbal_controller_cmd_publisher src/swivel_controller_cmd_publisher.cpp ) #生成可執(zhí)行文件 swivel_gimbal_controller_cmd_publisher 節(jié)點(diǎn)的名字 add_dependencies(swivel_gimbal_controller_cmd_publisher mastering_ros_demo_pkg_generate_messages_cpp) #必須添加add_dependencies,否則找不到自定義的msg產(chǎn)生的頭文件 target_link_libraries(swivel_gimbal_controller_cmd_publisher ${catkin_LIBRARIES})
執(zhí)行
roscore
rosrun swivel_controller_cmd_publisher swivel_gimbal_controller_cmd_publisher
查看
rostopic echo /swivel/swiveljoint1_position_controller/command
數(shù)值按代碼進(jìn)行自增0.1變化
與系統(tǒng)聯(lián)調(diào)
結(jié)果: 按之前方式啟動(dòng)整個(gè)系統(tǒng)
在啟動(dòng)發(fā)布消息得節(jié)點(diǎn)
云臺(tái)轉(zhuǎn)動(dòng)了
但是會(huì)在敲下回車后延時(shí)1-2秒,延時(shí) rostopic echo 也沒有信息打印說明還沒發(fā)布 可能是節(jié)點(diǎn)啟動(dòng)得延時(shí) ,并不是執(zhí)行器延時(shí)
實(shí)驗(yàn)成功!
以上就是gazebo里通過節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于gazebo發(fā)布topic節(jié)點(diǎn)轉(zhuǎn)動(dòng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++ vector容器實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了C++ vector容器實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02C語言數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解單向鏈表
鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護(hù)一組數(shù)據(jù)集合時(shí),就可以使用鏈表,這一點(diǎn)和數(shù)組很相似2022-03-03C++?std::array實(shí)現(xiàn)編譯器排序
這篇文章主要介紹了C++?std::array實(shí)現(xiàn)編譯器排序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06C++實(shí)現(xiàn)有向圖鄰接表的構(gòu)建
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)有向圖鄰接表的構(gòu)建,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04LeetCode 單調(diào)棧內(nèi)容小結(jié)
這篇文章主要介紹了LeetCode 單調(diào)棧內(nèi)容小結(jié),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07