gazebo里通過節(jié)點發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動實現(xiàn)詳解
通過終端是這樣發(fā)送得
rostopic pub -1 /swivel/swiveljoint1_position_controller/command std_msgs/Float64 "data: 1.5"
發(fā)布得消息類型是 std_msgs/Float64
這個應(yīng)該發(fā)布得topic得名稱 /swivel/swiveljoint1_position_controller/command
實驗一下
通過啟動后查看活躍得topic 發(fā)現(xiàn)了此topic 但是現(xiàn)在有發(fā)布得地方,應(yīng)該是有訂閱的地方所以此時該topic 活躍
是對應(yīng)得
創(chuàng)建功能包
$ catkin_create_pkg swivel_controller_cmd_publisher roscpp std_msgs
依賴 std_msgs 因為需要發(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 ; //實例化句柄,初始化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é)點名字
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é)點的名字 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ù)值按代碼進行自增0.1變化
與系統(tǒng)聯(lián)調(diào)
結(jié)果: 按之前方式啟動整個系統(tǒng)
在啟動發(fā)布消息得節(jié)點
云臺轉(zhuǎn)動了
但是會在敲下回車后延時1-2秒,延時 rostopic echo 也沒有信息打印說明還沒發(fā)布 可能是節(jié)點啟動得延時 ,并不是執(zhí)行器延時
實驗成功!
以上就是gazebo里通過節(jié)點發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動實現(xiàn)詳解的詳細內(nèi)容,更多關(guān)于gazebo發(fā)布topic節(jié)點轉(zhuǎn)動的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)超詳細講解單向鏈表
鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護一組數(shù)據(jù)集合時,就可以使用鏈表,這一點和數(shù)組很相似2022-03-03LeetCode 單調(diào)棧內(nèi)容小結(jié)
這篇文章主要介紹了LeetCode 單調(diào)棧內(nèi)容小結(jié),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07