ros2 demo

1 篇文章 0 订阅

ros2使用自建类型编译,订阅以及发布的demo

sub和pub对象:

chasis_Subscription_ = 
        rclcpp::create_subscription<calmcar::msg::BinraryData>(
          *ROS2DOME::instance(),"/demo_sub_10ms", 5,
          std::bind(&PubSubDemo::GetChasis, this, placeholders::_1));



auto puber = rclcpp::create_publisher<calmcar::msg::BinraryData>(
                  *ROS2DOME::instance(),"/demo_pub_10ms_binrarydata_topi", 20);
    puber->publish(*msg);

 CMakeLists.txt 添加自检类型:

# demo_data - demo_data
set(CMAKE_PREFIX_PATH
  ${CMAKE_PREFIX_PATH}
  ${CMAKE_CURRENT_LIST_DIR}/install/demo_data
)
set(CMAKE_MODULE_PATH
  ${CMAKE_MODULE_PATH}
  ${CMAKE_CURRENT_LIST_DIR}/install/demo_data
)
find_package(demo_data REQUIRED)
ament_export_dependencies(demo_data)
target_include_directories(${PROJECT_NAME} SYSTEM
  PRIVATE
    ${rclcpp_INCLUDE_DIRS}
    ${demo_data_INCLUDE_DIRS}
)
target_link_libraries(${PROJECT_NAME}
  PRIVATE
    ${rclcpp_LIBRARIES}
    ${demo_data_LIBRARIES}
)
target_link_options(${PROJECT_NAME}
  PRIVATE ${demo_data_LINK_FLAGS}
)

target_link_libraries(${PROJECT_NAME}
  PRIVATE
    ${rclcpp_LIBRARIES}
    demo_data_rclcpp
    demo_data-dds
    proto_interface_s
    protobuf 
    protobuf-lite
)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 ROS 2 入门示例。 假设你已经安装好了 ROS 2 和相关的依赖包。我们将创建一个简单的 ROS 2 节点,该节点将发布一个名为 `/demo_topic` 的主题,其中包含一个字符串消息。我们还将创建一个订阅该主题的节点。 首先,在终端中创建一个工作空间: ``` mkdir -p ~/ros2_ws/src cd ~/ros2_ws/ colcon build ``` 接下来,创建一个 ROS 2 包: ``` cd ~/ros2_ws/src ros2 pkg create my_demo_pkg --build-type ament_cmake ``` 这将在 `~/ros2_ws/src` 目录下创建一个名为 `my_demo_pkg` 的 ROS 2 包。进入该包的目录: ``` cd my_demo_pkg/ ``` 在 `my_demo_pkg` 目录下创建一个名为 `publisher.cpp` 的 C++ 文件,并将以下代码复制到文件中: ```cpp #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" using namespace std::chrono_literals; class PublisherNode : public rclcpp::Node { public: PublisherNode() : Node("publisher_node") { publisher_ = this->create_publisher<std_msgs::msg::String>("/demo_topic", 10); timer_ = this->create_wall_timer(1s, std::bind(&PublisherNode::timer_callback, this)); } private: void timer_callback() { auto message = std_msgs::msg::String(); message.data = "Hello, ROS 2!"; publisher_->publish(message); } rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_; rclcpp::TimerBase::SharedPtr timer_; }; int main(int argc, char **argv) { rclcpp::init(argc, argv); auto node = std::make_shared<PublisherNode>(); rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 这个节点将创建一个名为 `/publisher_node` 的节点,并在 `/demo_topic` 主题上发布一个字符串消息。 接下来,在 `my_demo_pkg` 目录下创建一个名为 `subscriber.cpp` 的 C++ 文件,并将以下代码复制到文件中: ```cpp #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" void callback(const std_msgs::msg::String::SharedPtr msg) { RCLCPP_INFO(rclcpp::get_logger("subscriber_node"), "Received message: '%s'", msg->data.c_str()); } int main(int argc, char **argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("subscriber_node"); auto subscriber = node->create_subscription<std_msgs::msg::String>("/demo_topic", 10, callback); rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 这个节点将创建一个名为 `/subscriber_node` 的节点,并订阅 `/demo_topic` 主题。当接收到消息时,它将打印消息内容。 现在,我们需要将这两个节点添加到 `CMakeLists.txt` 文件中: ``` add_executable(publisher_node src/publisher.cpp) ament_target_dependencies(publisher_node rclcpp std_msgs) add_executable(subscriber_node src/subscriber.cpp) ament_target_dependencies(subscriber_node rclcpp std_msgs) ``` 最后,编译并运行节点: ``` cd ~/ros2_ws/ colcon build --packages-select my_demo_pkg source install/setup.bash ros2 run my_demo_pkg publisher_node ``` 在另一个终端中运行以下命令: ``` ros2 run my_demo_pkg subscriber_node ``` 现在你应该能够在订阅节点的终端中看到如下输出: ``` [INFO] [subscriber_node]: Received message: 'Hello, ROS 2!' ``` 这就是一个简单的 ROS 2 入门示例。你可以尝试修改代码并探索更多高级功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值