当前位置:   article > 正文

ROS2——开发第一个节点_ros2 package.xml rclcpp

ros2 package.xml rclcpp

ROS2 的包必须在 src 文件夹下,使用下面的命令创建一个包,并设置相关的依赖

ros2 pkg create my_package --dependencies rclcpp std_msgs
  • 1

可以打开包内的 package.xml ,查看 depend 有哪些依赖

image.png|500

#include "rclcpp/rclcpp.hpp"
int main(int argc,char *argv[])
{
    rclcpp::init(argc,argv);
    auto node = rclcpp::Node::make_shared("simple_node");
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • rclcpp::Node 包含了很多等价的别名以及静态方法,SharedPtrstd::shared ptr<rclcpp::Node> 的别名,而 make_shared 是它的静态方法。该行代码创建了一个名字叫 simple_node 的节点,在程序中以 node 表示该节点
  • spin 可以阻止代码的执行,防止他立即终止
  • shutdown 管理节点的关闭

接下来,来看看CMake文件

cmake_minimum_required(VERSION 3.8)
project(my_package)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)

set(dependencies
  rclcpp
)

add_executable(simple src/simple.cpp)
ament_target_dependencies(simple ${dependencies})

install(TARGETS
  simple
  ARCHIVE DESTINATION lib
  LIBRARY DESTINATION lib
  RUNTIME DESTINATION lib/${PROJECT_NAME}

)
if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()
ament_export_dependencies(${dependencies})
ament_package()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

之后编译并运行
colcon build --symlink-install
ros2 run my_packkage simple

由于使用了 spin 因此程序并没有执行任何内容

image.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/727226
推荐阅读
相关标签
  

闽ICP备14008679号