日常学习碎片

  • colcon build构建功能包
  • ros中自动生成环境变量的脚本setup.bash在install目录下
  • 具体运行哪个地方的代码要看环境变量指向哪里
  • find_package(rclppy REQUIRED)添加依赖
  • ament_cmake是ROS2中用于构建和安装软件包的工具集,它提供了一系列的CMake宏和模块,帮助开发者更方便地编写CMakeLists.txt文件,从而构建出ROS2的软件包。
  • rclpy是ROS 2的一个Python库,它允许开发者使用Python语言来创建ROS 2节点,这些节点可以发布和订阅话题(topics)、服务(services)和动作(actions),以及执行其他ROS 2的功能。rclpy是ROS 2中用于Python编程的接口,类似于rclcpp是用于C++编程的接口。
  • add_executable(cpp.node src/cpp_node.cpp)添加可执行文件,定义可执行文件:创建一个名为cpp_node的可执行文件。指定源文件:这个可执行文件将从src/cpp_node.cpp这个源代码文件中生成。
  • 用ament_target_dependencies(cpp_node rclcpp)代替头文件目录包含和链接库
  • ament_target_dependencies 是ROS 2中CMakeLists.txt文件里的一个命令,它用于指定一个或多个包作为当前包的依赖。在你提供的命令 ament_target_dependencies(cpp_node rclcpp) 中,cpp_node 是你当前正在构建的可执行文件或库的名称,而 rclcpp 是ROS 2中的一个核心包,提供了C++接口来创建节点、发布话题、订阅话题等。
  • 当你在终端中运行 colcon build 命令时,它会做以下几件事情:
  1. 识别ROS 2包:colcon 会在当前目录及其子目录中查找ROS 2包(通常是包含package.xml文件的目录)。
  2. 构建依赖关系:colcon 会根据每个包的package.xml文件和CMakeLists.txt文件(对于C++包)或setup.py文件(对于Python包)来解析包的依赖关系,并确定构建的顺序。
  3. 并行构建:colcon build 支持并行构建,这意味着它可以同时构建多个包,这可以显著加快构建过程。
  4. 生成可执行文件和库:根据包的配置,colcon 会使用CMake(对于C++包)或setuptools(对于Python包)来构建可执行文件和库。
  5. 安装构建结果:构建完成后,colcon 可以将构建的可执行文件和库安装到一个特定的位置,通常是在install目录下。
  6. 源环境source install/setup.bash:构建完成后,你可能需要源(source)一个特定的脚本,以确保你的环境变量包含了指向新构建的包的路径。这个脚本通常是install/setup.bash(对于bash shell)或install/setup.zsh(对于zsh shell)。
  • 在pakage.xml中声明依赖信息如:< depend >rclcpp< /depend >
  • ros2 pkg create --build-type ament_cmake --license Apache-2.0 demo_cpp_pkg
  • cpp的功能包也是调用CMakeLists来构建的,所以在创建功能包时会多出来一个CMakeLists.txt
  • 在src下添加cpp_node.cpp文件,编写此文件
  • 编写CMakeLists.txt,添加可执行文件,查找依赖,link库,头文件

多功能包实践操作:

  • mkdir -p chapt2_ws/src 创建chapt2_ws目录,并在其目录下创建一个名为src的子目录
  • mv demo_cpp_pkg/ chapt2_ws/src/将名为 demo_cpp_pkg 的目录移动到 chapt2_ws/src 目录下。
  • rm -rf build/ install/ log/rm:这是删除(remove)命令。
  1. -r 或 -R:这是 rm 命令的一个选项,表示递归删除。当用于目录时,它会删除目录及其所有子目录和文件,而不需要逐个指定。
  2. -f:这是 rm 命令的一个选项,表示强制删除,不会提示确认。这个选项会忽略不存在的文件,并且不会提示任何警告。
  • cd chapt2_ws/进对相应的目录再开始colcon build,colcon build在哪个目录下运行,功能包就在哪个目录下生成,colcon build会自动扫描子文件下所有的包。
  • colcon build --packages-select demo_cpp_pkg选择某一个功能包构建
  • python的包依赖cpp的包,则将cpp的包加到python的依赖里来(在package.xml中加上< depend >demo_cpp_pkg< /depend >)加上这个之后,colcon build会先构建成cpp包再构建Python包

你可能感兴趣的:(学习)