ROS2學習 建立自己的ROS2功能包

2021-10-08 20:39:45 字數 2654 閱讀 1410

建立資料夾

mkdir -p ~/ros2_ws/src

cd ~/ros2_ws

colcon build

1 建立功能包

建立乙個pubsub的包

ros2 pkg create --build-type ament_cmake cpp_pubsub
xml檔案裡的郵箱

2 寫發布節點

建立ros2_talker.cpp檔案

touch ros2_talker.cpp
具體**如下:

#include

#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**)

注意!!!

記得右擊ros2_talker.cpp檔案,選擇成為可執行檔案

3 寫訂閱節點

建立ros2_listener.cpp檔案

touch ros2_listener.cpp
具體**如下:

#include

#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)

const

rclcpp::subscription

::sharedptr subscription_;};

intmain

(int argc,

char

* ar**)

4 修改 cmakelists.txt

在 find_package(ament_cmake required)下面新增

find_package(rclcpp required)

find_package(std_msgs required)

5 新增可執行檔案的名字為ros2_talker和ros2_listener

add_executable(ros2_talker src/ros2_talker.cpp)

ament_target_dependencies(ros2_talker rclcpp std_msgs)

add_executable(ros2_listener src/ros2_listener.cpp)

ament_target_dependencies(ros2_listener rclcpp std_msgs)

6 新增 install(targets…) 把可執行檔案安裝到install去

install(targets

ros2_talker

ros2_listener

destination lib/$

)

7 編譯和執行

cd ~/ros2_ws

colcon build --packages-select cpp_pubsub

source install/setup.bash

執行兩個節點

ros2 run cpp_pubsub ros2_talker

ros2 run cpp_pubsub ros2_listener

ROS2官方教程 ROS2 概念概覽

原文 ros是乙個基於匿名訊息發布 publish 或訂閱 subscribe 機制的中間層,這種機制可以幫助訊息能夠在不同的ros程序之間傳輸。在ros2系統中的核心是ros圖 ros graph ros圖指的是乙個ros系統中的節點網路以及它們之間通訊時的聯絡。在ros圖中,節點是必要的組成部分...

ROS2官網教程學習筆記理解ROS2節點篇

提前準備 學習任務 3 ros2 node info 總結以下內容主要對官網教程進行翻譯 在ros2中單獨提出了graph概念,在接下來的教程中,將學習構成ros2網路的一系列關於ros2核心概念。ros網路乙個由ros2中的元素在同一時刻進行資料處理組成的網路。換個視覺化的方式來說它包含所有可執行...

ros2學習 CLI Tools 配置環境

總結 ros 2依賴於使用shell環境組合工作空間的概念。工作區 是乙個ros術語,表示您在系統中使用ros 2開發的位置。核心ros 2工作區稱為底層。後續的本地工作區稱為覆蓋。在使用ros 2開發時,通常會同時啟用多個工作區。工作去通過setup.bash 進行設定和切換,跟ros1 一樣的操...