日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

gazebo里通過節點發布topic讓關節轉動實現詳解_C 語言

作者:月照銀海似蛟龍 ? 更新時間: 2023-01-20 編程語言

通過終端是這樣發送得

rostopic pub -1 /swivel/swiveljoint1_position_controller/command std_msgs/Float64 "data: 1.5" 

發布得消息類型是? std_msgs/Float64

這個應該發布得topic得名稱? /swivel/swiveljoint1_position_controller/command

實驗一下

通過啟動后查看活躍得topic 發現了此topic 但是現在有發布得地方,應該是有訂閱的地方所以此時該topic 活躍

是對應得

創建功能包

$ catkin_create_pkg swivel_controller_cmd_publisher roscpp std_msgs

依賴 std_msgs 因為需要發布std_msgs/Float64 類型得數據

寫發布功能得cpp

#include <ros/ros.h>
#include "std_msgs/Float64.h"  //要發布該類型得數據 需要包含該類型文件
int main(int argc, char **argv)
{
   ros::init(argc,argv,"swivel_gimbal_controller_cmd_publisher");
   ros::NodeHandle nh ;	//實例化句柄,初始化node
   std_msgs::Float64 msg; //創建該類型消息
    msg.data = 0.1; // 初始化消息
    // 聲明發布句柄  <std_msgs::Float64> 消息類型  
    // "/swivel/swiveljoint1_position_controller/command"  模板名稱
    // 數據緩存大小
    ros::Publisher pub = nh.advertise<std_msgs::Float64>( "/swivel/swiveljoint1_position_controller/command", 1);
    ros::Rate loop_rate(10);//定義發布的頻率,1HZ
    while (ros::ok())
    {
         msg.data = (msg.data)+0.1;
        pub.publish(msg); //發布消息
        loop_rate.sleep();//根據前面的定義的loop_rate
    }
    return 0;
}

修改CMakeLists.txt

其中 swivel_gimbal_controller_cmd_publisher 是節點名字

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)
add_executable(swivel_gimbal_controller_cmd_publisher src/swivel_controller_cmd_publisher.cpp )  	#生成可執行文件          swivel_gimbal_controller_cmd_publisher  節點的名字
add_dependencies(swivel_gimbal_controller_cmd_publisher mastering_ros_demo_pkg_generate_messages_cpp)   #必須添加add_dependencies,否則找不到自定義的msg產生的頭文件
target_link_libraries(swivel_gimbal_controller_cmd_publisher ${catkin_LIBRARIES})

執行

roscore

 rosrun swivel_controller_cmd_publisher swivel_gimbal_controller_cmd_publisher

查看

 rostopic echo /swivel/swiveljoint1_position_controller/command

數值按代碼進行自增0.1變化

與系統聯調

結果: 按之前方式啟動整個系統

在啟動發布消息得節點

云臺轉動了

但是會在敲下回車后延時1-2秒,延時 rostopic echo 也沒有信息打印說明還沒發布 可能是節點啟動得延時 ,并不是執行器延時

實驗成功!

原文鏈接:https://juejin.cn/post/7178652307184156732

欄目分類
最近更新