当前位置: 首页 > wzjs >正文

做网站公司 衡阳公司推广公司名字大全

做网站公司 衡阳公司,推广公司名字大全,十大经典随身空间小说推荐,怎么制作微信表情包我使用的是humble版本 创建工作空间和功能包 创建工作空间 打开终端,执行以下命令创建工作空间和 src 目录: mkdir -p ~/ros2_ws/src cd ~/ros2_ws 创建功能包 在 src 目录下创建一个新的功能包,这里假设功能包名为 cpp_pubsub&#xf…

我使用的是humble版本

创建工作空间和功能包

创建工作空间

打开终端,执行以下命令创建工作空间和 src 目录:

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
创建功能包

在 src 目录下创建一个新的功能包,这里假设功能包名为 cpp_pubsub,依赖项为 rclcpp 和 std_msgs

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake cpp_pubsub --dependencies rclcpp std_msgs
编写发布者代码
打开发布者代码文件

在 ~/ros2_ws/src/cpp_pubsub/src 目录下创建一个名为 talker.cpp 的文件:

touch ~/ros2_ws/src/cpp_pubsub/src/talker.cpp
编写发布者代码

使用文本编辑器打开 talker.cpp 文件,添加以下代码:

#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/string.hpp>using namespace std::chrono_literals;class Talker : public rclcpp::Node
{
public:Talker() : Node("talker"){// 创建发布者,发布 std_msgs::msg::String 类型的消息到 'topic' 话题,队列大小为 10publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10);// 创建定时器,每 500 毫秒触发一次,调用 timer_callback 函数timer_ = this->create_wall_timer(500ms, std::bind(&Talker::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::Publisher<std_msgs::msg::String>::SharedPtr publisher_;rclcpp::TimerBase::SharedPtr timer_;size_t count_ = 0;
};int main(int argc, char * argv[])
{rclcpp::init(argc, argv);auto node = std::make_shared<Talker>();rclcpp::spin(node);rclcpp::shutdown();return 0;
}

这段代码创建了一个名为 talker 的节点,它会每 500 毫秒发布一条消息到 topic 话题。

编写订阅者代码
打开订阅者代码文件

在 ~/ros2_ws/src/cpp_pubsub/src 目录下创建一个名为 listener.cpp 的文件:

touch ~/ros2_ws/src/cpp_pubsub/src/listener.cpp
编写订阅者代码

使用文本编辑器打开 listener.cpp 文件,添加以下代码:

#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/string.hpp>class Listener : public rclcpp::Node
{
public:Listener() : Node("listener"){// 创建订阅者,订阅 'topic' 话题的 std_msgs::msg::String 类型消息,队列大小为 10subscription_ = this->create_subscription<std_msgs::msg::String>("topic", 10, std::bind(&Listener::topic_callback, this, std::placeholders::_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);auto node = std::make_shared<Listener>();rclcpp::spin(node);rclcpp::shutdown();return 0;
}

这段代码创建了一个名为 listener 的节点,它会订阅 topic 话题,并在接收到消息时打印消息内容。

配置 CMakeLists.txt 文件

打开 ~/ros2_ws/src/cpp_pubsub/CMakeLists.txt 文件,添加以下内容:

add_executable(talker src/talker.cpp)
ament_target_dependencies(talker rclcpp std_msgs)add_executable(listener src/listener.cpp)
ament_target_dependencies(listener rclcpp std_msgs)install(TARGETStalkerlistenerDESTINATION lib/${PROJECT_NAME})

这些配置用于编译 talker.cpp 和 listener.cpp 文件,并将生成的可执行文件安装到指定目录。

再补充一下具体解释

  • 作用
    add_executable(talker src/talker.cpp)
    这行代码是 CMake 指令,其功能是告知 CMake 要把 src/talker.cpp 文件编译成一个可执行文件,并且将这个可执行文件命名为 talker。在 ROS 2 的 C++ 功能包开发里,每个节点的代码一般都要编译成可执行文件,这样才能在 ROS 2 环境中运行。
  • 原因:在 ROS 2 中,节点是运行的基本单元,为了让节点能够运行,需要把节点的源代码编译成可执行文件。add_executable 指令就负责完成这个编译任务。

ament_target_dependencies(talker rclcpp std_msgs)
  • 作用:这是 ament_cmake 提供的指令,它的作用是为 talker 可执行文件添加依赖项。这里的依赖项是 rclcpp 和 std_msgsrclcpp 是 ROS 2 的 C++ 客户端库,节点要与 ROS 2 系统进行交互(像发布和订阅消息)就需要用到它;std_msgs 则是 ROS 2 提供的标准消息类型库,在节点代码里可能会使用到其中定义的消息类型(例如 std_msgs::msg::String)。
  • 原因:在编译节点代码时,编译器需要知道这些依赖库的位置和相关信息,ament_target_dependencies 指令会自动处理这些依赖关系,确保编译器能够找到并正确链接这些库。
install(TARGETStalkerlistenerDESTINATION lib/${PROJECT_NAME})
  • 作用:这行代码是 CMake 的 install 指令,其目的是在编译完成后,将 talker 和 listener 这两个可执行文件安装到指定的目录。DESTINATION lib/${PROJECT_NAME} 表示安装到 lib 目录下以功能包名称命名的子目录中。在 ROS 2 里,这样做可以让这些可执行文件在系统中被正确地找到和运行。
  • 原因:安装可执行文件到指定目录是为了方便管理和使用。当使用 ros2 run 命令来运行节点时,ROS 2 会从指定的安装目录中查找可执行文件。如果不进行安装操作,就无法直接使用 ros2 run 命令来运行节点。

编译工作空间

在 ~/ros2_ws 目录下执行以下命令编译工作空间:

cd ~/ros2_ws
colcon build

运行节点

设置环境变量

注意:每次打开新的终端运行节点前,都需要设置环境变量:

source install/setup.bash
运行发布者节点

打开一个新终端,运行发布者节点:

ros2 run cpp_pubsub talker
运行订阅者节点

再打开一个新终端,运行订阅者节点:

ros2 run cpp_pubsub listener

此时,你会看到发布者节点每隔 500 毫秒发布一条消息,订阅者节点会接收到这些消息并打印出来。


文章转载自:

http://oCZjB1kL.ngcth.cn
http://YHVaezKj.ngcth.cn
http://mtI71h24.ngcth.cn
http://b53HOlPy.ngcth.cn
http://XR57Sw61.ngcth.cn
http://aDh0FiOB.ngcth.cn
http://D3FrVNZo.ngcth.cn
http://RR9CEjoy.ngcth.cn
http://kN8Sm1KM.ngcth.cn
http://r5uccxtd.ngcth.cn
http://4ENWPUhZ.ngcth.cn
http://dMRuLoVx.ngcth.cn
http://3zImMDBW.ngcth.cn
http://JA7hJO1Q.ngcth.cn
http://ULR2dfbZ.ngcth.cn
http://sZLMw4Dp.ngcth.cn
http://H9UMQ3Ko.ngcth.cn
http://A6B0AAja.ngcth.cn
http://zItSVMpz.ngcth.cn
http://30vOPPMH.ngcth.cn
http://SbYtQpry.ngcth.cn
http://y5rv3Apj.ngcth.cn
http://et5GaDsO.ngcth.cn
http://Bv0D1RAS.ngcth.cn
http://W49mZw1u.ngcth.cn
http://1yZWKvzM.ngcth.cn
http://QsqtuIpP.ngcth.cn
http://3kw70TFk.ngcth.cn
http://9rpU5Mds.ngcth.cn
http://XJspRgC6.ngcth.cn
http://www.dtcms.com/wzjs/716031.html

相关文章:

  • 哪些网站可以做简历宁波比较好的外贸公司
  • 网上引流推广怎么做光泽网站建设wzjseo
  • 建设部证书查询官方网站网络营销文案标题
  • 手机网站跳转怎么办wordpress菜单导航代码
  • 哪个网站有教做面食广平网站建设
  • 网站建设数据技术赶集网网站建设ppt模板
  • 枸杞网站建设方案网店代运营费用
  • 网站开发的职业分析thinkphp2.1网站挂文件
  • 乐陵市人力资源中心网站制作网站
  • 全国物流网站网站维护的要求包括哪些
  • 重庆建设网站建站潜江人才网官网
  • 自己做的网站怎么才有用户访问四川炜航建筑公司网站
  • 关于做网站的书wordpress 后台添加文章 没编辑功能
  • 朝阳免费网站制作90设计网素材官网
  • 文本怎样做阅读链接网站网络设计思路
  • 自己建一个网站需要什么建工e采网
  • 网站规划的原则做网站图片大会导致慢
  • 广州平台网站搭建外贸建站网站推广
  • 网站标题优化怎么做网站开发string文件
  • 网站建设实训目的9377游戏盒子
  • 门户网站开发技术长沙招聘信息
  • 如何创建一个平台经典seo伪原创
  • 网站类型定义网站首页设计图
  • 零基础学pytho 网站开发拟定一个农产品电商网站的建设需求
  • 辽宁鞍山刚刚发布湖南专业关键词优化
  • 做网站的时候想要满屏服务器吗放几个网站
  • 昆明做网站哪家公司好优质网站建设的设计要点
  • 做网站提高淘宝店排名创意网站建设策划方案
  • 银铃建设通官方网站办网多少钱
  • 网站建设top图百度推广如何获取精准的客户