精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器人多節點話題通信編程方法

麥辣雞腿堡 ? 來源:古月居 ? 作者:古月居 ? 2023-11-27 17:48 ? 次閱讀

編程方法

了解了話題的基本原理,接下來我們就要開始編寫代碼啦。

創建工作空間

請大家先按照這個流程創建工作空間、下載課程的例程代碼,并進行編譯。

$ mkdir –p dev_ws/src
$ cd /userdata/dev_ws/src
$ git clone https://gitee.com/guyuehome/togetherros_tutorials.git
$ cd /userdata/dev_ws/
$ colcon build

圖片

運行示例程序

編譯成功后,我們嘗試運行話題通信的Hello World例程,在這個例程中,我們會先創建一個發布者,發布話題“chatter”,周期發送“Hello World”這個字符串,消息類型是ROS中標準定義的String,再創建一個訂閱者,訂閱“chatter”這個話題,從而接收到“Hello World”這個字符串。

圖片

$ source /opt/tros/local_setup.bash
$ source install/local_setup.bash
$ ros2 run learning_topic_cpp talker
$ ros2 run learning_topic_cpp listener

圖片

這就是TogetherROS系統中話題通信的方法,依然沿用了ROS2中話題通信的完整流程。

代碼解析

發布者的實現方法

publisher_member_function.cpp:

#include < chrono >
#include < functional >
#include < memory >
#include < string >


#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
{
  public:
    MinimalPublisher()
    : Node("minimal_publisher"), count_(0)
    {
      publisher_ = this- >create_publisher< std_msgs::msg::String >("topic", 10);
      timer_ = this- >create_wall_timer(
      500ms, std::bind(&MinimalPublisher::timer_callback, this));
    }


  private:
    void timer_callback()
{
      auto message = std_msgs::msg::String();
      message.data = "Hello, world! " + std::to_string(count_++);
      RCLCPP_INFO(this- >get_logger(), "Publishing: '%s'", message.data.c_str());
      publisher_- >publish(message);
    }
    rclcpp::TimerBase::SharedPtr timer_;
    rclcpp::Publisher< std_msgs::msg::String >::SharedPtr publisher_;
    size_t count_;
};


int main(int argc, char * argv[])
{
  rclcpp::init(argc, argv);
  rclcpp::spin(std::make_shared< MinimalPublisher >());
  rclcpp::shutdown();
  return 0;
}

訂閱者的實現方法

subscriber_member_function.cpp:

#include < memory >
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
using std::placeholders::_1;


class MinimalSubscriber : public rclcpp::Node
{
  public:
    MinimalSubscriber()
    : Node("minimal_subscriber")
    {
      subscription_ = this- >create_subscription< std_msgs::msg::String >(
      "topic", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
    }


  private:
    void topic_callback(const std_msgs::msg::String::SharedPtr msg) const
{
      RCLCPP_INFO(this- >get_logger(), "I heard: '%s'", msg- >data.c_str());
    }
    rclcpp::Subscription< std_msgs::msg::String >::SharedPtr subscription_;
};


int main(int argc, char * argv[])
{
  rclcpp::init(argc, argv);
  rclcpp::spin(std::make_shared< MinimalSubscriber >());
  rclcpp::shutdown();
  return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    210

    文章

    28205

    瀏覽量

    206532
  • 編程
    +關注

    關注

    88

    文章

    3592

    瀏覽量

    93596
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80851
收藏 人收藏

    評論

    相關推薦

    機器人設計中PID控制的編程方法是什么?

    什么是PID控制?機器人設計中PID控制的編程方法是什么?
    發表于 06-30 06:53

    機器人編程的區別

    在前一篇文章中講了機器人編程的區別,但總感覺講的比較空泛,這篇文章繼續講講那些區別。計算機編程機器人編程最大的區別就是一個是控制虛擬的,
    發表于 09-01 07:12

    Motoman機器人離線編程

    歡迎關注Jungle的Motoman機器人離線編程專欄系列文章:Motoman機器人離線編程——Motocom32開發簡介Motoman機器人
    發表于 09-07 07:33

    多節點大容量FPGA系統的遠程升級方法

    多節點大容量FPGA系統的遠程升級方法:針對目前廣泛使用的以大容量FPGA 實現主要功能的多節點系統的遠程升級問題,提出了一種基于ATmega64 單片機和RS485 總線以及接入以太網的主控
    發表于 11-20 17:42 ?17次下載

    多節點大容量FPGA系統的遠程升級方法

    多節點大容量FPGA系統的遠程升級方法 針對目前廣泛使用的以大容量FPGA實現主要功能的多節點系統的遠程升級問題,提出了一種基于ATmega64單片機和RS485總
    發表于 03-29 15:09 ?807次閱讀
    <b class='flag-5'>多節點</b>大容量FPGA系統的遠程升級<b class='flag-5'>方法</b>

    機器人多傳感器測距系統研究與設計

    機器人多傳感器測距系統研究與設計......
    發表于 12-23 14:46 ?10次下載

    機器人多傳感器信息融合測距系統設計

    機器人多傳感器信息融合測距系統設計....
    發表于 12-23 15:00 ?16次下載

    智能機器人多傳感器融合感知方法

    智能機器人多傳感器融合感知方法,感興趣的小伙伴們可以瞧一瞧。
    發表于 09-20 16:10 ?19次下載

    常用的機器人編程方法有哪些

    機器人編程【robotprogramming】為使機器人完成某種任務而設置的動作順序描述。機器人運動和作業的指令都是由程序進行控制,常見的編制方法
    發表于 08-15 17:41 ?1.6w次閱讀

    基于區塊鏈的智能機器人多傳感信息加密控制方法

    基于區塊鏈的智能機器人多傳感信息加密控制方法
    發表于 06-23 10:44 ?5次下載

    焊接機器人編程方法及流程技巧

    焊接機器人編程方法有什么?所謂焊接機器人是從事焊接的工業機器人,廣泛應用于汽車制造、造船、航空等領域。使用
    的頭像 發表于 01-13 10:47 ?1.4w次閱讀
    焊接<b class='flag-5'>機器人</b><b class='flag-5'>編程</b><b class='flag-5'>方法</b>及流程技巧

    焊接機器人多少錢一臺?

    焊接機器人多少錢一臺?根據機器人本體的型號、臂長和焊機型號的不同價格也不盡相同,市面上的焊接機器人價格范圍在3-20萬不等。
    的頭像 發表于 03-08 09:17 ?3716次閱讀
    焊接<b class='flag-5'>機器人多</b>少錢一臺?

    焊接機器人編程方法及流程技巧

    焊接機器人編程方法有什么?所謂焊接機器人是從事焊接的工業機器人,廣泛應用于汽車制造、造船、航空等領域。使用
    的頭像 發表于 07-13 16:46 ?2066次閱讀
    焊接<b class='flag-5'>機器人</b><b class='flag-5'>編程</b><b class='flag-5'>方法</b>及流程技巧

    機器人多節點動作通信編程方法

    編程方法 相比之前話題和服務的程序,動作通信的例程相對較長,我們一起來運行并分析一下。 運行示例程序 $ source /opt/tros/local_setup.bash $ sou
    的頭像 發表于 11-27 17:10 ?399次閱讀
    <b class='flag-5'>機器人多節點</b>動作<b class='flag-5'>通信</b><b class='flag-5'>編程</b><b class='flag-5'>方法</b>

    機器人多節點話題通信模型介紹

    節點實現了機器人各種各樣的功能,但這些功能并不是獨立的,之間會有千絲萬縷的聯系,其中最重要的一種聯系方式就是話題,它是節點間傳遞數據的橋梁。 通信
    的頭像 發表于 11-27 17:25 ?451次閱讀
    <b class='flag-5'>機器人多節點</b><b class='flag-5'>話題</b><b class='flag-5'>通信</b>模型介紹