ROS2 0 從零開始編寫乙個發布 訂閱節點

2021-09-17 23:28:22 字數 1710 閱讀 5391

mkdir ros2test

cd ros2test

mkdir src

cd src

ros2 pkg create pkg_name --dependencies rclcpp std_msgs  --cpp-node-name node_name
pkg_name是要建立的包名,node_name是節點名,可以根據功能需要命名。

依賴包的名字需要寫在--dependencies 後面,不同於ros1直接接在包名後面。

--cpp-node-name後面寫上準備寫入原始碼的cpp的名字(注意不需要.cpp),會在/pkg_name/src下自動生成cpp檔案

#include

#include

"rclcpp/rclcpp.hpp"

#include

"std_msgs/msg/string.hpp"

using

namespace std::chrono_literals;

/* this example creates a subclass of node and uses std::bind() to register a

* member function as a callback from the timer. */

class

minimalpublisher

:public rclcpp::node

private

:void

timer_callback()

rclcpp::timerbase::sharedptr timer_;

rclcpp::publisher

::sharedptr publisher_;

size_t count_;};

intmain

(int argc,

char

* ar**)

#include

"rclcpp/rclcpp.hpp"

#include

"std_msgs/msg/string.hpp"

using std::placeholders::_1;

class

minimalsubscriber

:public rclcpp::node

private

:void

topic_callback

(const std_msgs::msg::string::sharedptr msg)

rclcpp::subscription

::sharedptr subscription_;};

intmain

(int argc,

char

* ar**)

這種寫法和ros1官方的發布者寫法有些差別,類似ros1的寫法在ros2中也可執行,但是官方建議使用這種方式進行編寫節點,方便以後寫成元件,可以在同乙個執行緒中執行多個節點,類似ros1中的nodelet。

cd ..

colcon build

source install/setup.bash

ros2 run pkg_name node_name

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...

IntelliJ IDEA 從零開始建立乙個專案

1 如果intellij idea中當前沒有開啟的專案,單擊歡迎介面上的建立新專案。否則,選擇 然後會開啟新建專案嚮導視窗 2 在嚮導的第一頁,在左側窗格中,選擇專案類別。這可能是你要使用的技術,專案的目標平台或執行時等。在頁面的右側部分以及後續步驟中的設定取決於所選專案類別。對於相應的說明,請參閱...