购物网站开发大纲wordpress大前端主题美化

张小明 2026/1/9 8:52:18
购物网站开发大纲,wordpress大前端主题美化,北京社保网上服务平台,临沂城市建设网站ROS 2从入门到精通系列#xff08;三#xff09;#xff1a;工作空间与包 - 创建和管理项目结构 深入理解ROS2的项目组织方式#xff0c;掌握工作空间#xff08;Workspace#xff09;和包#xff08;Package#xff09;的创建与管理。 引言 在ROS2中#xff0c;代码…ROS 2从入门到精通系列三工作空间与包 - 创建和管理项目结构深入理解ROS2的项目组织方式掌握工作空间Workspace和包Package的创建与管理。引言在ROS2中代码不是随意放置的。合理的项目结构对于大型项目开发至关重要。本文将教你如何从零开始创建和组织你的第一个ROS2项目。一、核心概念1.1 什么是工作空间Workspace工作空间是ROS2项目的根目录包含所有源代码、构建输出和安装文件。典型的工作空间结构 ros2_ws/ ← 工作空间根目录 ├── src/ ← 源代码目录 │ ├── my_robot_bringup/ ← 包1 │ ├── my_robot_driver/ ← 包2 │ └── my_robot_control/ ← 包3 ├── build/ ← CMake构建目录自动生成 ├── install/ ← 安装目录自动生成 └── log/ ← 日志目录自动生成1.2 什么是包Package包是ROS2的基本组织单元包含ROS2 Package包源代码目录src/配置文件package.xml构建配置CMakeLists.txt消息定义msg/, srv/, action/启动文件launch/资源文件param/, config/二、工作空间结构详解2.1 工作空间目录树my_robot_ws/ # 工作空间名称可自定义 │ ├── src/ # 源代码目录 │ ├── package1/ │ │ ├── src/ # C源文件目录 │ │ ├── include/ # C头文件目录 │ │ ├── launch/ # 启动文件 │ │ ├── config/ # 配置文件 │ │ ├── CMakeLists.txt # CMake构建配置C │ │ └── package.xml # 包元数据 │ │ │ └── package2/ │ ├── package2/ # Python包目录Python专用 │ │ ├── __init__.py │ │ └── nodes/ │ ├── resource/ # 资源文件 │ ├── test/ # 测试文件 │ ├── setup.py # Python安装配置 │ ├── setup.cfg # 包配置 │ ├── package.xml # 包元数据 │ └── launch/ # 启动文件 │ ├── build/ # 构建输出目录colcon生成 │ ├── package1/ │ └── package2/ │ ├── install/ # 安装目录colcon生成 │ ├── package1/ │ ├── package2/ │ └── local_setup.bash # 工作空间环境设置 │ └── log/ # 构建日志colcon生成 └── latest_build/2.2 CMakeLists.txt 的数学模型CMake构建过程可以表示为Build f ( CMakeLists.txt , 源代码 , 依赖库 ) \text{Build} f(\text{CMakeLists.txt}, \text{源代码}, \text{依赖库})Buildf(CMakeLists.txt,源代码,依赖库)其中输入源代码和依赖过程编译、链接、打包输出可执行文件、库、头文件CMakeLists.txt 的执行流程 cmake ──→ 生成 Makefiles ──→ make ──→ 编译 ──→ 安装三、创建第一个工作空间3.1 创建工作空间目录# 创建工作空间目录mkdir-p ~/ros2_ws/src# 进入工作空间cd~/ros2_ws# 查看结构tree -L2# 如果未安装tree用 ls -la目录结构ros2_ws/ └── src/3.2 初始化工作空间首先需要加载ROS2环境source/opt/ros/humble/setup.bash然后在工作空间根目录构建即使暂时没有包cd~/ros2_ws colcon build预期输出Starting execution Finished execution [0.23s]现在工作空间已初始化会生成以下目录ros2_ws/ ├── src/ ├── build/ ├── install/ └── log/3.3 配置工作空间环境每次使用工作空间都需要加载其环境设置# 临时加载仅当前终端source~/ros2_ws/install/local_setup.bash# 永久加载推荐echosource ~/ros2_ws/install/local_setup.bash~/.bashrcsource~/.bashrc四、创建第一个包4.1 使用ros2 pkg命令创建包ROS2提供了命令行工具快速创建包cd~/ros2_ws/src# 创建C包ros2 pkg create --build-type ament_cmake my_first_pkg# 或创建Python包ros2 pkg create --build-type ament_python my_py_pkg命令说明--build-type指定构建系统ament_cmake用于C项目ament_python用于Python项目4.2 查看生成的包结构C包的结构cd~/ros2_ws/src tree my_first_pkg/输出my_first_pkg/ ├── src/ ├── CMakeLists.txt ├── include/ │ └── my_first_pkg/ ├── package.xml └── README.mdPython包的结构tree my_py_pkg/输出my_py_pkg/ ├── my_py_pkg/ │ └── __init__.py ├── resource/ │ └── my_py_pkg ├── test/ │ ├── test_copyright.py │ ├── test_flake8.py │ └── test_pep257.py ├── package.xml ├── setup.py ├── setup.cfg └── README.md五、package.xml 配置详解5.1 C包的package.xml示例?xml version1.0??xml-model hrefhttp://download.ros.org/schema/package_format3.xsd schematypenshttp://www.w3.org/2001/XMLSchema?packageformat3!-- 包的基本信息 --namemy_first_pkg/nameversion0.0.1/versiondescription我的第一个ROS2包/description!-- 作者和维护者信息 --maintaineremailyour_emailexample.comYour Name/maintainerauthoremailyour_emailexample.comYour Name/author!-- 开源协议 --licenseApache-2.0/license!-- 构建系统 --buildtool_dependament_cmake/buildtool_depend!-- 编译时依赖 --build_dependrclcpp/build_dependbuild_dependstd_msgs/build_depend!-- 运行时依赖 --exec_dependrclcpp/exec_dependexec_dependstd_msgs/exec_depend!-- 测试依赖 --test_dependament_lint_auto/test_dependtest_dependament_cmake_gtest/test_depend!-- 导出依赖为其他包提供库 --exportbuild_typeament_cmake/build_type/export/package5.2 Python包的package.xml示例?xml version1.0??xml-model hrefhttp://download.ros.org/schema/package_format3.xsd schematypenshttp://www.w3.org/2001/XMLSchema?packageformat3namemy_py_pkg/nameversion0.0.1/versiondescription我的第一个ROS2 Python包/descriptionmaintaineremailyour_emailexample.comYour Name/maintainerauthoremailyour_emailexample.comYour Name/authorlicenseApache-2.0/licensebuildtool_dependament_python/buildtool_depend!-- Python包的ROS2依赖 --build_dependrclpy/build_dependexec_dependrclpy/exec_dependexec_dependstd_msgs/exec_dependtest_dependament_copyright/test_dependtest_dependament_flake8/test_dependtest_dependament_pep257/test_dependexportbuild_typeament_python/build_type/export/package5.3 依赖管理在ROS2中依赖有明确的分类包的依赖编译时依赖build_depend编译时需要运行时依赖exec_depend运行时需要构建导出依赖build_export_depend链接此包的包需要构建工具依赖buildtool_depend构建系统本身测试依赖test_depend仅测试需要常用依赖示例!-- ROS2核心库 --exec_dependrclcpp/exec_depend!-- C客户库 --exec_dependrclpy/exec_depend!-- Python客户库 --!-- 消息类型 --exec_dependstd_msgs/exec_depend!-- 标准消息 --exec_dependsensor_msgs/exec_depend!-- 传感器消息 --exec_dependgeometry_msgs/exec_depend!-- 几何消息 --!-- 常用库 --exec_dependtf2/exec_depend!-- 坐标变换 --exec_dependcv_bridge/exec_depend!-- ROS-OpenCV桥接 --六、CMakeLists.txt 配置详解C6.1 最小的CMakeLists.txt示例cmake_minimum_required(VERSION 3.8) project(my_first_pkg) # 设置C标准 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() # 找到ROS2构建依赖 find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(std_msgs REQUIRED) # 创建可执行文件 add_executable(my_node src/main.cpp) ament_target_dependencies(my_node rclcpp std_msgs) # 安装可执行文件 install(TARGETS my_node DESTINATION lib/${PROJECT_NAME} ) # 安装启动文件 install(DIRECTORY launch DESTINATION share/${PROJECT_NAME} ) # 标记包已安装 ament_package()6.2 CMake构建流程数学模型CMake构建链 源代码(*.cpp, *.h) ↓ CMakeLists.txt (find_package, add_executable) ↓ 编译器 (g, clang) ↓ 目标文件 (*.o) ↓ 链接器 (ld) ↓ 可执行文件 (在 build/ 中) ↓ Install 步骤 ↓ 最终文件 (在 install/ 中) 时间复杂度O(n) 其中 n 是源文件数量七、构建和编译工作空间7.1 完整的编译流程cd~/ros2_ws# 1. 构建所有包colcon build# 2. 仅构建特定包colcon build --packages-select my_first_pkg# 3. 使用并行编译加快速度colcon build --parallel-workers4# 4. 构建时显示详细信息colcon build --symlink-install --event-handlers console_direct# 5. 清理构建colcon clean build7.2 colcon命令参数说明参数说明例子--packages-select仅构建指定包colcon build --packages-select pkg1 pkg2--packages-skip跳过某些包colcon build --packages-skip test_pkg--parallel-workers N并行工作数colcon build --parallel-workers 4--symlink-install符号链接快速迭代colcon build --symlink-install--cmake-args传递CMake参数colcon build --cmake-args -DCMAKE_BUILD_TYPERelease7.3 预期输出$ colcon build Startingmy_first_pkg Finishedmy_first_pkg[1.23s]Summary:1package finished[1.23s]八、工作空间的环境配置8.1 激活工作空间每次开启新终端都需要激活工作空间# 方式1仅加载工作空间source~/ros2_ws/install/local_setup.bash# 方式2同时加载ROS2基础环境和工作空间source/opt/ros/humble/setup.bashsource~/ros2_ws/install/local_setup.bash# 永久激活推荐echosource /opt/ros/humble/setup.bash~/.bashrcechosource ~/ros2_ws/install/local_setup.bash~/.bashrcsource~/.bashrc8.2 验证环境配置# 检查ROS2相关环境变量echo$ROS_PACKAGE_PATHecho$ROS_DISTRO# 检查工作空间包是否可见ros2 pkg list|grepmy_first_pkg# 应该输出my_first_pkg九、多包工作空间的依赖管理9.1 包之间的依赖关系创建多个包的示例场景cd~/ros2_ws/src# 创建包ros2 pkg create --build-type ament_cmake driver_pkg ros2 pkg create --build-type ament_cmake controller_pkg ros2 pkg create --build-type ament_cmake app_pkg依赖关系图depends ondepends onusesusesusesapp_pkg应用层controller_pkg控制层driver_pkg驱动层std_msgs/geometry_msgs标准消息库9.2 配置包间依赖在controller_pkg/package.xml中添加对driver_pkg的依赖exec_dependdriver_pkg/exec_depend在app_pkg/package.xml中添加exec_dependdriver_pkg/exec_dependexec_dependcontroller_pkg/exec_depend9.3 构建依赖顺序colcon会自动分析依赖关系按正确顺序构建构建顺序driver_pkg → controller_pkg → app_pkg $ colcon build --parallel-workers 4 Starting driver_pkg Finished driver_pkg [1.10s] Starting controller_pkg Finished controller_pkg [1.20s] Starting app_pkg Finished app_pkg [1.30s] Summary: 3 packages finished [3.60s]十、工作空间的最佳实践10.1 目录结构规范robot_ws/ ├── src/ │ ├── robot_bringup/ # 机器人启动包 │ │ └── launch/ │ ├── robot_description/ # 机器人描述URDF │ │ ├── urdf/ │ │ └── meshes/ │ ├── robot_driver/ # 硬件驱动层 │ │ ├── src/ │ │ └── include/ │ ├── robot_control/ # 控制层 │ │ ├── src/ │ │ └── config/ │ └── robot_apps/ # 应用层 │ ├── vision_pkg/ │ ├── planning_pkg/ │ └── navigation_pkg/ ├── build/ ├── install/ └── log/10.2 包命名规范规范示例说明小写英文robot_driver避免大小写混用用下划线分隔lidar_driver不用驼峰式描述性名称motor_control清楚表明功能层级前缀robot_xx_driver表明所属系统10.3 版本管理在工作空间根目录初始化git仓库cd~/ros2_wsgitinitgitconfig user.nameYour Namegitconfig user.emailyour_emailexample.com# 创建.gitignorecat.gitignoreEOF build/ install/ log/ *.pyc __pycache__/ .vscode/ .idea/ EOFgitaddsrc/gitcommit -mInitial commit: ROS2 workspace十一、常见问题排查问题1找不到包Package not found# 症状$ colcon build --packages-select my_first_pkg Could notfindpackage my_first_pkg# 解决方案# 1. 检查包是否在src/下ls~/ros2_ws/src/# 2. 重新激活环境source~/ros2_ws/install/local_setup.bash# 3. 刷新包索引colcon build --packages-select my_first_pkg问题2依赖找不到Could not find dependency# 症状CMake Error: Could notfinddependency: rclcpp# 解决方案# 1. 检查ROS2是否加载source/opt/ros/humble/setup.bash# 2. 安装缺失的包sudoaptinstallros-humble-rclcpp# 3. 重新构建colcon clean build colcon build问题3符号不被识别# 症状编译错误undefined reference to...# 解决方案检查CMakeLists.txt中是否正确链接库ament_target_dependencies(my_node rclcpp std_msgs)# ✅ 正确# 或使用target_link_librariestarget_link_libraries(my_node some_lib)# ✅ 正确十二、完整的快速参考从零开始的完整步骤# 1. 创建工作空间mkdir-p ~/ros2_ws/srccd~/ros2_ws# 2. 初始化colcon build# 3. 创建C包cd~/ros2_ws/src ros2 pkg create --build-type ament_cmake my_cpp_pkg# 4. 创建Python包ros2 pkg create --build-type ament_python my_py_pkg# 5. 构建cd~/ros2_ws colcon build --symlink-install# 6. 激活工作空间source~/ros2_ws/install/local_setup.bash# 7. 验证ros2 pkg list|grepmy_十三、本文要点总结✅工作空间项目根目录包含src、build、install目录✅包ROS2基本组织单元包含源码、配置和元数据✅关键文件package.xml- 包的元数据和依赖声明CMakeLists.txt- 构建系统配置Csetup.py- 安装配置Python✅构建工具colcon用于构建整个工作空间✅环境配置需要source相应的setup.bash文件激活下一篇预告《ROS2从入门到精通系列四节点与话题 - 发布-订阅通信实战》 记住工作空间结构是后续所有开发的基础。别跳过这一步
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

郑州餐饮网站建设哪家好oa软件

近年来这强大的Type-c接口功能造就了Type-C接口的大量普及,随处可见消费者在使用支持Type-c接口的电子产品,如手机、笔记本、筋膜枪、蓝牙音箱等等。 那么像筋膜枪、蓝牙音箱、无人机、小风扇、电动牙刷、智能台灯等等这些家用小电器想要支持Type-c PD的…

张小明 2026/1/7 5:12:03 网站建设

如何注册一个网站电商运营怎么做如何从零开始

1.4 AI的终极目标:通用人工智能与专用人工智能的现实路径 人工智能领域长期存在一个根本性的目标分野:是致力于构建解决特定任务的专用人工智能,还是追求具备人类水平广泛认知能力的通用人工智能。这一分野不仅是技术路线的差异,更…

张小明 2026/1/7 0:42:31 网站建设

虹口 教育 网站建设电商网站建设与运营成本

HashMap 的困境 在处理大规模数据时,传统的 HashMap 面临诸多限制: ❌ 内存瓶颈 - 所有数据必须存储在堆内存,受 JVM 堆大小限制❌ GC 压力 - 百万级对象导致 Full GC 频繁,影响应用稳定性❌ 数据易失 - 进程重启后数据全部丢失…

张小明 2026/1/4 8:22:37 网站建设

网站建设超市建筑工地招聘信息网

前言本文是我学习大模型之后梳理的一点感悟,从毫无概念到触摸到一点门槛,在此记录分享出来。这部分围绕的是nlp基础部分梳理。我将以我的理解从流程,原理,实践去整理,如果有错误欢迎探讨。背景NLP 的全称是 Natural La…

张小明 2026/1/3 14:44:51 网站建设

网站建设刂搜金手指下拉贰伍多用户商场源码下载

色选机,是一种基于光学原理的自动分选设备,于现代工农业生产里,起着极为关键的作用。它借助物料表面颜色或者光学特性的不同,借由高分辨率相机抓拍图像,运用智能识别系统予以分析,最终经高速喷阀把异色颗粒…

张小明 2026/1/8 16:38:44 网站建设

自己电脑做网站需要备案吗2自己做的php网站进行伪静态

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发并实现一个基于微信小程序的在线家庭医生系统,以满足现代家庭在医疗健康服务方面的需求。具体研究目的如下: 首先&#xf…

张小明 2026/1/4 13:12:45 网站建设