Hello World Publisher

建立工作區

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

構建你的工作區

cd ~/catkin_ws/
catkin_make

來源你的設定檔案

source devel/setup.bash

建立一個名為 hello_world 的新包,其中包含一些基本依賴項

catkin_create_pkg hello_world std_msgs rospy roscpp

導航到你的 src 目錄並建立一個名為 talker.cpp 的新檔案

cd hello_world/src
touch talker.cpp

編輯新檔案並貼上此程式碼以釋出 hello world 訊息

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

#include <sstream>

int main(int argc, char **argv)
{
  ros::init(argc, argv, "talker");

  ros::NodeHandle n;

  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  ros::Rate loop_rate(10);

  int count = 0;
  while (ros::ok())
  {
    std_msgs::String msg;

    std::stringstream ss;
    ss << "hello world " << count;
    msg.data = ss.str();

    ROS_INFO("%s", msg.data.c_str());

    chatter_pub.publish(msg);

    ros::spinOnce();

    loop_rate.sleep();
    ++count;
  }

  return 0;
}

返回包目錄的根目錄

cd ..

將這些行新增/取消註釋到你的 CMakeLists.txt

catkin_package(
 INCLUDE_DIRS include
 LIBRARIES hello_world
#  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
)

include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker hello_world_generate_messages_cpp)

返回工作區的根目錄

cd ..

建立新的釋出者

catkin_make  

再次獲取你的安裝檔案,以便擁有新的包和釋出者

source devel/setup.bash

啟動 ROS

roscore

讓 roscore 保持執行並在新的終端選項卡/視窗中啟動你的釋出者

rosrun hello_world talker

讓釋出者繼續執行,並在另一個新的終端選項卡/視窗中,回顯輸出

rostopic echo /chatter