update
This commit is contained in:
@@ -205,20 +205,64 @@ Cần làm rõ:
|
||||
- Thực thi control loop (executeCycle)
|
||||
|
||||
4. **Planning Layer** ✅
|
||||
- `nav_core::BaseGlobalPlanner`: Interface cho global planners (A*, D*, etc.)
|
||||
- `nav_core::BaseLocalPlanner`: Interface cho local planners (DWA, TEB, MKT, etc.)
|
||||
- `nav_core::RecoveryBehavior`: Interface cho recovery behaviors
|
||||
- Plugin system sử dụng `boost::dll` để dynamic loading
|
||||
- `robot_nav_core::BaseGlobalPlanner`: Interface cho global planners
|
||||
- **Global Planner Implementations**:
|
||||
- `custom_planner` - Custom path planner với curve support và merge path calculation
|
||||
- `dock_planner` - Docking-specific planner với dock calculation utilities
|
||||
- `two_points_planner` - Simple planner cho two-point navigation
|
||||
- `robot_nav_core::BaseLocalPlanner`: Interface cho local planners
|
||||
- **Local Planner Implementation**:
|
||||
- `pnkx_local_planner` - Main local planner với multiple behaviors:
|
||||
- Position planning (MKT algorithm)
|
||||
- Docking planning
|
||||
- Go straight planning
|
||||
- Rotate planning
|
||||
- `robot_nav_core::RecoveryBehavior`: Interface cho recovery behaviors
|
||||
- Plugin system sử dụng `boost::dll` và `robot::PluginLoaderHelper` để dynamic loading
|
||||
|
||||
5. **Costmap Layer** ✅
|
||||
- `robot_costmap_2d::Costmap2DROBOT`: Global và local costmap
|
||||
- Costmap layers: static map, obstacles, inflation
|
||||
- `robot_costmap_2d::Costmap2DROBOT`: Global và local costmap wrapper
|
||||
- `robot_costmap_2d::LayeredCostmap`: Layered costmap system
|
||||
- **Costmap Layers** (8 implementations):
|
||||
- `StaticLayer` - Static map từ OccupancyGrid
|
||||
- `ObstacleLayer` - Dynamic obstacles từ sensors
|
||||
- `InflationLayer` - Cost inflation cho robot footprint
|
||||
- `VoxelLayer` - 3D voxel grid cho obstacles
|
||||
- `CriticalLayer` - Critical zones marking
|
||||
- `DirectionalLayer` - Directional cost preferences
|
||||
- `PreferredLayer` - Preferred path zones
|
||||
- `UnpreferredLayer` - Unpreferred zones
|
||||
- Frame management: map (global), odom (local)
|
||||
- Thread-safe access với mutex
|
||||
- Observation buffer cho sensor data
|
||||
|
||||
6. **Algorithms Layer** ✅
|
||||
- `mkt_algorithm`: Diff drive và bicycle kinematics algorithms
|
||||
- `score_algorithm`: Trajectory scoring và goal checking
|
||||
- `kalman`: Filtering algorithms
|
||||
- **MKT Algorithm** (`mkt_algorithm`):
|
||||
- Differential drive kinematics:
|
||||
- `diff_go_straight` - Go straight behavior
|
||||
- `diff_predictive_trajectory` - Predictive trajectory following
|
||||
- `diff_rotate_to_goal` - Rotate to goal
|
||||
- Bicycle model kinematics:
|
||||
- `bicycle_go_straight` - Go straight với bicycle model
|
||||
- `bicycle_pure_pursuit` - Pure pursuit control
|
||||
- `bicycle_rotate_to_goal` - Rotate behavior
|
||||
- **MKT Plugins** (`mkt_plugins`):
|
||||
- `goal_checker` - Goal checking algorithms
|
||||
- `simple_goal_checker` - Simple goal checking
|
||||
- `standard_traj_generator` - Standard trajectory generation
|
||||
- `limited_accel_generator` - Acceleration-limited trajectory generation
|
||||
- `kinematic_parameters` - Kinematics parameter management
|
||||
- `xy_theta_iterator` - Trajectory iteration utilities
|
||||
- `velocity_iterator` - Velocity space iteration
|
||||
- `one_d_velocity_iterator` - 1D velocity iteration
|
||||
- **Score Algorithm** (`score_algorithm`):
|
||||
- Trajectory scoring và evaluation
|
||||
- Goal checking utilities
|
||||
- Trajectory generator interface
|
||||
- **Kalman Filter** (`kalman`):
|
||||
- State estimation
|
||||
- Sensor fusion
|
||||
- Noise filtering
|
||||
|
||||
7. **Data Sources** ⚠️ (Interface cần định nghĩa)
|
||||
- Localization source (Pnkx Loc)
|
||||
@@ -250,19 +294,23 @@ Cần làm rõ:
|
||||
- `pause()`, `resume()`, `cancel()` - Điều khiển trạng thái
|
||||
- `getRobotPose(...)` - Lấy vị trí robot
|
||||
|
||||
- `nav_core::BaseGlobalPlanner` ✅
|
||||
- `robot_nav_core::BaseGlobalPlanner` ✅
|
||||
- `makePlan(start, goal, plan)` - Tạo global path
|
||||
- `initialize(name, costmap_robot)` - Khởi tạo với costmap
|
||||
- **Implementations**: `custom_planner`, `dock_planner`, `two_points_planner`
|
||||
|
||||
- `nav_core::BaseLocalPlanner` ✅
|
||||
- `computeVelocityCommands(cmd_vel)` - Tính toán velocity command
|
||||
- `robot_nav_core::BaseLocalPlanner` ✅
|
||||
- `computeVelocityCommands(odom, cmd_vel)` - Tính toán velocity command
|
||||
- `setPlan(plan)` - Set global path để follow
|
||||
- `isGoalReached()` - Kiểm tra đã đến goal chưa
|
||||
- `swapPlanner(name)` - Thay đổi planner động
|
||||
- `swapPlanner(name)` - Thay đổi planner động (position, docking, go_straight, rotate)
|
||||
- `setTwistLinear/Angular(...)` - Set velocity limits
|
||||
- `getTwistLinear/Angular(...)` - Get velocity limits
|
||||
- **Implementation**: `pnkx_local_planner` với multiple behaviors
|
||||
|
||||
- `nav_core::RecoveryBehavior` ✅
|
||||
- `robot_nav_core::RecoveryBehavior` ✅
|
||||
- `runBehavior()` - Thực thi recovery behavior
|
||||
- `initialize(name, tf, global_costmap, local_costmap)` - Khởi tạo
|
||||
|
||||
- `robot_costmap_2d::Costmap2DROBOT` ✅
|
||||
- Wrapper cho costmap với robot footprint
|
||||
@@ -290,9 +338,15 @@ Cần làm rõ:
|
||||
|
||||
**Plugin mechanism:** ✅
|
||||
- Sử dụng `boost::dll` để dynamic loading plugins
|
||||
- Factory pattern với `boost::function` và `boost::dll::import`
|
||||
- Factory pattern với `boost::function` và `boost::dll::import_alias`
|
||||
- `robot::PluginLoaderHelper` để tìm library path từ plugin name
|
||||
- Config file YAML để specify plugin names
|
||||
- Plugin interfaces: `BaseGlobalPlanner`, `BaseLocalPlanner`, `RecoveryBehavior`
|
||||
- Plugin interfaces:
|
||||
- `robot_nav_core::BaseGlobalPlanner` - Global planners
|
||||
- `robot_nav_core::BaseLocalPlanner` - Local planners
|
||||
- `robot_nav_core::RecoveryBehavior` - Recovery behaviors
|
||||
- `robot_costmap_2d::Layer` - Costmap layers
|
||||
- Plugin registration với `BOOST_DLL_ALIAS` macro
|
||||
|
||||
### 4. Cơ chế giao tiếp & đồng bộ
|
||||
|
||||
@@ -340,36 +394,99 @@ Cần làm rõ:
|
||||
|
||||
**Đã hoàn thành:** ✅
|
||||
|
||||
1. ✅ **Interface Layer**: `BaseNavigation` interface
|
||||
2. ✅ **Implementation Layer**: `MoveBase` core logic
|
||||
3. ✅ **Planning Layer**: Plugin system cho global/local planners và recovery
|
||||
4. ✅ **Costmap Layer**: Global và local costmap với layers
|
||||
5. ✅ **Algorithms Layer**: MKT algorithms, score algorithm, kalman
|
||||
6. ✅ **API Layer**: C API wrapper cho .NET integration
|
||||
7. ✅ **Supporting Libraries**: tf3, robot_time, geometry_msgs, robot_nav_2d_utils
|
||||
1. ✅ **Interface Layer**:
|
||||
- `move_base_core::BaseNavigation` - Abstract interface hoàn chỉnh
|
||||
- `move_base_core::common.h` - Common types và utilities
|
||||
|
||||
2. ✅ **Implementation Layer**:
|
||||
- `move_base::MoveBase` - Core implementation với state machine
|
||||
- `executeCycle()` - Control loop implementation
|
||||
- State management (PLANNING, CONTROLLING, CLEARING, PAUSED)
|
||||
- Threading với planner thread và control loop
|
||||
|
||||
3. ✅ **Planning Layer - Plugin System**:
|
||||
- **Global Planners** (3 implementations):
|
||||
- `custom_planner` - Custom path planning với curve support
|
||||
- `dock_planner` - Docking-specific planner
|
||||
- `two_points_planner` - Simple two-point planner
|
||||
- **Local Planners** (1 implementation):
|
||||
- `pnkx_local_planner` - Main local planner với:
|
||||
- `pnkx_docking_local_planner` - Docking behavior
|
||||
- `pnkx_go_straight_local_planner` - Go straight behavior
|
||||
- `pnkx_rotate_local_planner` - Rotate behavior
|
||||
- **Recovery Behaviors**: Interface đã định nghĩa
|
||||
- Plugin loading với `boost::dll` và `robot::PluginLoaderHelper`
|
||||
|
||||
4. ✅ **Costmap Layer**:
|
||||
- `robot_costmap_2d::Costmap2DROBOT` - Global và local costmap
|
||||
- **Costmap Layers** (8 implementations):
|
||||
- `static_layer` - Static map layer
|
||||
- `obstacle_layer` - Dynamic obstacles
|
||||
- `inflation_layer` - Cost inflation
|
||||
- `voxel_layer` - 3D voxel grid
|
||||
- `critical_layer` - Critical zones
|
||||
- `directional_layer` - Directional costs
|
||||
- `preferred_layer` - Preferred paths
|
||||
- `unpreferred_layer` - Unpreferred zones
|
||||
- Layered costmap system với plugin support
|
||||
|
||||
5. ✅ **Algorithms Layer**:
|
||||
- **MKT Algorithm**:
|
||||
- Differential drive kinematics (go_straight, rotate, predictive)
|
||||
- Bicycle model kinematics (go_straight, rotate, pure pursuit)
|
||||
- **MKT Plugins**:
|
||||
- `goal_checker` - Goal checking algorithms
|
||||
- `standard_traj_generator` - Standard trajectory generation
|
||||
- `kinematic_parameters` - Kinematics parameter management
|
||||
- `xy_theta_iterator` - Trajectory iteration
|
||||
- `limited_accel_generator` - Acceleration-limited trajectories
|
||||
- **Score Algorithm**: Trajectory scoring và goal checking
|
||||
- **Kalman Filter**: State estimation và filtering
|
||||
|
||||
6. ✅ **API Layer**:
|
||||
- `nav_c_api` - C API wrapper cho .NET/C# P/Invoke
|
||||
- Wrapper functions cho BaseNavigation methods
|
||||
|
||||
7. ✅ **Supporting Libraries**:
|
||||
- `tf3` - Transform system (buffer_core, transforms)
|
||||
- `robot_time` - Time management (Time, Duration, Timer, Rate)
|
||||
- `robot_cpp` - Core utilities:
|
||||
- `robot::init()` - Initialization
|
||||
- `robot::NodeHandle` - YAML config loading
|
||||
- `robot::PluginLoaderHelper` - Plugin discovery
|
||||
- `robot_nav_2d_utils` - 2D navigation utilities (conversions, path_ops, polygons, bounds, tf_help)
|
||||
- `robot_nav_2d_msgs` - 2D navigation messages
|
||||
- `geometry_msgs` - Geometry message types (29 types)
|
||||
- `robot_nav_msgs` - Navigation messages (24 types)
|
||||
- `robot_sensor_msgs` - Sensor messages (30 types)
|
||||
- `laser_geometry` - Laser scan geometry utilities
|
||||
- `voxel_grid` - Voxel grid implementation
|
||||
- `data_convert` - Data conversion utilities
|
||||
- `nav_grid` - Navigation grid utilities
|
||||
|
||||
**Đang triển khai / Cần bổ sung:** ⚠️
|
||||
|
||||
1. ⚠️ **Data Sources Interfaces**:
|
||||
- `ILocalizationSource` interface
|
||||
- `IOdometrySource` interface
|
||||
- `IMapProvider` interface
|
||||
- Integration với Pnkx Loc, odometry sources
|
||||
- `ILocalizationSource` interface - Cần định nghĩa
|
||||
- `IOdometrySource` interface - Cần định nghĩa
|
||||
- `IMapProvider` interface - Cần định nghĩa
|
||||
- Integration với Pnkx Loc, odometry sources - Hiện tại dùng trực tiếp qua MoveBase methods
|
||||
|
||||
2. ⚠️ **Base Controller**:
|
||||
- `IBaseController` interface
|
||||
- Diff drive controller implementation
|
||||
- Steer drive controller implementation
|
||||
- Velocity command execution
|
||||
- `IBaseController` interface - Cần định nghĩa
|
||||
- Diff drive controller implementation - Cần implement
|
||||
- Steer drive controller implementation - Cần implement
|
||||
- Velocity command execution - Hiện tại chỉ có `setTwistLinear/Angular` trong local planner
|
||||
|
||||
3. ⚠️ **Control Loop**:
|
||||
- Control loop trong MoveBase (executeCycle)
|
||||
- State machine management hoàn chỉnh
|
||||
- Threading và synchronization
|
||||
3. ⚠️ **User Controller Plugin System**:
|
||||
- Factory để load user controller plugins - Cần implement
|
||||
- Interface cho User Controller - Cần định nghĩa
|
||||
- Integration với BaseNavigation - Cần implement
|
||||
|
||||
4. ⚠️ **User Controller Plugin System**:
|
||||
- Factory để load user controller plugins
|
||||
- Integration với BaseNavigation
|
||||
4. ⚠️ **Testing & Documentation**:
|
||||
- Unit tests cho các modules - Một số đã có (costmap, bounds, etc.)
|
||||
- Integration tests - Cần bổ sung
|
||||
- Simulation environment - TODO
|
||||
|
||||
**Lộ trình tiếp theo:**
|
||||
|
||||
@@ -406,38 +523,144 @@ pnkx_nav_core/
|
||||
├── src/
|
||||
│ ├── Navigations/
|
||||
│ │ ├── Cores/
|
||||
│ │ │ ├── move_base_core/ # BaseNavigation interface
|
||||
│ │ │ ├── nav_core/ # Planner interfaces
|
||||
│ │ │ ├── nav_core_adapter/ # Adapter utilities
|
||||
│ │ │ └── nav_core2/ # Additional nav utilities
|
||||
│ │ │ ├── move_base_core/ # BaseNavigation interface ✅
|
||||
│ │ │ │ ├── include/move_base_core/
|
||||
│ │ │ │ │ ├── navigation.h # BaseNavigation abstract class
|
||||
│ │ │ │ │ └── common.h # Common types (TFListenerPtr, etc.)
|
||||
│ │ │ ├── robot_nav_core/ # Planner interfaces ✅
|
||||
│ │ │ │ ├── include/robot_nav_core/
|
||||
│ │ │ │ │ ├── base_global_planner.h
|
||||
│ │ │ │ │ ├── base_local_planner.h
|
||||
│ │ │ │ │ └── recovery_behavior.h
|
||||
│ │ │ ├── robot_nav_core_adapter/ # Adapter utilities ✅
|
||||
│ │ │ │ ├── include/robot_nav_core_adapter/
|
||||
│ │ │ │ │ ├── global_planner_adapter.h
|
||||
│ │ │ │ │ ├── local_planner_adapter.h
|
||||
│ │ │ │ │ └── costmap_adapter.h
|
||||
│ │ │ └── robot_nav_core2/ # Additional nav utilities ✅
|
||||
│ │ │ ├── include/robot_nav_core2/
|
||||
│ │ │ │ ├── global_planner.h
|
||||
│ │ │ │ ├── local_planner.h
|
||||
│ │ │ │ └── costmap.h
|
||||
│ │ ├── Libraries/
|
||||
│ │ │ ├── robot_costmap_2d/ # Costmap system
|
||||
│ │ │ ├── tf3/ # Transform system
|
||||
│ │ │ ├── robot_time/ # Time management
|
||||
│ │ │ ├── geometry2/ # Geometry utilities
|
||||
│ │ │ └── ... # Other supporting libraries
|
||||
│ │ │ ├── nav_grid/ # Navigation grid utilities ✅
|
||||
│ │ │ └── (costmap, tf3, robot_time ở Libraries/)
|
||||
│ │ └── Packages/
|
||||
│ │ └── move_base/ # MoveBase implementation
|
||||
│ │ └── move_base/ # MoveBase implementation ✅
|
||||
│ │ ├── include/move_base/
|
||||
│ │ │ └── move_base.h
|
||||
│ │ └── src/
|
||||
│ │ ├── move_base.cpp
|
||||
│ │ └── move_base_main.cpp
|
||||
│ │
|
||||
│ ├── Algorithms/
|
||||
│ │ ├── Cores/
|
||||
│ │ │ └── score_algorithm/ # Trajectory scoring
|
||||
│ │ └── Libraries/
|
||||
│ │ ├── mkt_algorithm/ # MKT kinematics algorithms
|
||||
│ │ ├── kalman/ # Kalman filtering
|
||||
│ │ └── angles/ # Angle utilities
|
||||
│ │ │ └── score_algorithm/ # Trajectory scoring ✅
|
||||
│ │ │ ├── include/score_algorithm/
|
||||
│ │ │ │ ├── score_algorithm.h
|
||||
│ │ │ │ ├── goal_checker.h
|
||||
│ │ │ │ └── trajectory_generator.h
|
||||
│ │ ├── Libraries/
|
||||
│ │ │ ├── mkt_algorithm/ # MKT kinematics algorithms ✅
|
||||
│ │ │ │ ├── include/mkt_algorithm/
|
||||
│ │ │ │ │ ├── diff/ # Differential drive
|
||||
│ │ │ │ │ │ ├── diff_go_straight.h
|
||||
│ │ │ │ │ │ ├── diff_predictive_trajectory.h
|
||||
│ │ │ │ │ │ └── diff_rotate_to_goal.h
|
||||
│ │ │ │ │ └── bicycle/ # Bicycle model
|
||||
│ │ │ │ │ ├── bicycle.h
|
||||
│ │ │ │ │ ├── go_straight.h
|
||||
│ │ │ │ │ └── rotate_to_goal.h
|
||||
│ │ │ ├── mkt_plugins/ # MKT plugin components ✅
|
||||
│ │ │ │ ├── include/mkt_plugins/
|
||||
│ │ │ │ │ ├── goal_checker.h
|
||||
│ │ │ │ │ ├── standard_traj_generator.h
|
||||
│ │ │ │ │ ├── kinematic_parameters.h
|
||||
│ │ │ │ │ └── xy_theta_iterator.h
|
||||
│ │ │ ├── mkt_msgs/ # MKT message types ✅
|
||||
│ │ │ ├── kalman/ # Kalman filtering ✅
|
||||
│ │ │ └── angles/ # Angle utilities ✅
|
||||
│ │ └── Packages/
|
||||
│ │ ├── global_planners/
|
||||
│ │ │ ├── custom_planner/ # Custom global planner ✅
|
||||
│ │ │ ├── dock_planner/ # Docking planner ✅
|
||||
│ │ │ └── two_points_planner/ # Two points planner ✅
|
||||
│ │ └── local_planners/
|
||||
│ │ └── pnkx_local_planner/ # PNKX local planner ✅
|
||||
│ │ ├── include/pnkx_local_planner/
|
||||
│ │ │ ├── pnkx_local_planner.h
|
||||
│ │ │ ├── pnkx_docking_local_planner.h
|
||||
│ │ │ ├── pnkx_go_straight_local_planner.h
|
||||
│ │ │ └── pnkx_rotate_local_planner.h
|
||||
│ │
|
||||
│ ├── Libraries/
|
||||
│ │ ├── costmap_2d/ # Costmap system ✅
|
||||
│ │ │ ├── include/robot_costmap_2d/
|
||||
│ │ │ │ ├── costmap_2d_robot.h
|
||||
│ │ │ │ ├── layered_costmap.h
|
||||
│ │ │ │ └── layer.h
|
||||
│ │ │ ├── plugins/ # Costmap layers ✅
|
||||
│ │ │ │ ├── static_layer.cpp
|
||||
│ │ │ │ ├── obstacle_layer.cpp
|
||||
│ │ │ │ ├── inflation_layer.cpp
|
||||
│ │ │ │ ├── voxel_layer.cpp
|
||||
│ │ │ │ ├── critical_layer.cpp
|
||||
│ │ │ │ ├── directional_layer.cpp
|
||||
│ │ │ │ ├── preferred_layer.cpp
|
||||
│ │ │ │ └── unpreferred_layer.cpp
|
||||
│ │ │ └── config/ # Costmap configs
|
||||
│ │ ├── tf3/ # Transform system ✅
|
||||
│ │ ├── robot_time/ # Time management ✅
|
||||
│ │ ├── robot_cpp/ # Core utilities ✅
|
||||
│ │ │ ├── include/robot/
|
||||
│ │ │ │ ├── init.h # Initialization
|
||||
│ │ │ │ ├── node_handle.h # NodeHandle (YAML config)
|
||||
│ │ │ │ └── plugin_loader_helper.h # Plugin loader
|
||||
│ │ ├── robot_nav_2d_utils/ # 2D nav utilities ✅
|
||||
│ │ ├── robot_nav_2d_msgs/ # 2D nav messages ✅
|
||||
│ │ ├── geometry2/ # Geometry utilities ✅
|
||||
│ │ │ ├── robot_tf3_geometry_msgs/
|
||||
│ │ │ └── robot_tf3_sensor_msgs/
|
||||
│ │ ├── common_msgs/ # Message types ✅
|
||||
│ │ │ ├── robot_geometry_msgs/
|
||||
│ │ │ ├── robot_nav_msgs/
|
||||
│ │ │ ├── robot_sensor_msgs/
|
||||
│ │ │ ├── robot_std_msgs/
|
||||
│ │ │ ├── robot_protocol_msgs/
|
||||
│ │ │ └── robot_visualization_msgs/
|
||||
│ │ ├── laser_geometry/ # Laser geometry ✅
|
||||
│ │ ├── voxel_grid/ # Voxel grid ✅
|
||||
│ │ ├── data_convert/ # Data conversion ✅
|
||||
│ │ └── xmlrpcpp/ # XML-RPC utilities ✅
|
||||
│ │
|
||||
│ └── APIs/
|
||||
│ └── c_api/ # C API wrapper
|
||||
├── build/ # Build artifacts
|
||||
└── doc/ # Documentation
|
||||
│ └── c_api/ # C API wrapper ✅
|
||||
│ ├── include/nav_c_api.h
|
||||
│ └── src/nav_c_api.cpp
|
||||
│
|
||||
├── build/ # Build artifacts
|
||||
├── config/ # Configuration files
|
||||
├── examples/ # Example code
|
||||
└── doc/ # Documentation
|
||||
├── architecture_discussion.md
|
||||
├── implementation_plan.md
|
||||
└── folders.md
|
||||
```
|
||||
|
||||
## Ghi chú
|
||||
|
||||
- ✅ Kiến trúc cốt lõi đã được triển khai với plugin system linh hoạt
|
||||
- ✅ **3 Global Planners** đã triển khai: custom_planner, dock_planner, two_points_planner
|
||||
- ✅ **1 Local Planner** đã triển khai: pnkx_local_planner với 4 behaviors (position, docking, go_straight, rotate)
|
||||
- ✅ **8 Costmap Layers** đã triển khai: static, obstacle, inflation, voxel, critical, directional, preferred, unpreferred
|
||||
- ✅ **MKT Algorithms** hỗ trợ cả differential drive và bicycle model
|
||||
- ✅ **Plugin System** hoàn chỉnh với `boost::dll` và `robot::PluginLoaderHelper`
|
||||
- ⚠️ Cần bổ sung data sources interfaces và base controller
|
||||
- 🔄 Kiến trúc được thiết kế để dễ dàng thay đổi thuật toán và mô hình kinematics thông qua plugin system
|
||||
- 📦 Tất cả components được build bằng CMake, không phụ thuộc ROS
|
||||
- 📦 Tất cả components được build bằng CMake, hỗ trợ cả Catkin và Standalone CMake
|
||||
- 🔌 Plugin system sử dụng `boost::dll` cho dynamic loading
|
||||
- 🎯 MoveBase đã có control loop (`executeCycle`) và state machine hoàn chỉnh
|
||||
- 📚 Có đầy đủ message types: geometry_msgs (29), nav_msgs (24), sensor_msgs (30), std_msgs (32)
|
||||
|
||||
|
||||
|
||||
|
||||
148
doc/folders.md
148
doc/folders.md
@@ -1,53 +1,99 @@
|
||||
Mô tả cấu trúc:
|
||||
# Cấu trúc thư mục pnkx_nav_core
|
||||
|
||||
├── common_msgs/
|
||||
│ ├── build/
|
||||
│ ├── geometry_msgs/
|
||||
│ │ ├── include/
|
||||
│ │ └── test/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── robot_nav_msgs/
|
||||
│ │ ├── include/
|
||||
│ │ └── test/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── robot_sensor_msgs/
|
||||
│ │ ├── cfg/
|
||||
│ │ ├── include/
|
||||
│ │ └── test/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── robot_std_msgs/
|
||||
│ │ ├── include/
|
||||
│ │ └── CMakeLists.txt
|
||||
│ └── CMakeLists.txt (root)
|
||||
|
|
||||
├── Navigations/
|
||||
│ ├── Cores/
|
||||
│ │ └── move_base_core/
|
||||
│ │ ├── build/
|
||||
│ │ ├── example/
|
||||
│ │ ├── include/
|
||||
│ │ ├── .gitignore
|
||||
│ │ ├── CMakeLists.txt
|
||||
│ │ └── README.md
|
||||
Mô tả cấu trúc thư mục thực tế của dự án:
|
||||
|
||||
```
|
||||
pnkx_nav_core/
|
||||
├── src/
|
||||
│ ├── Navigations/
|
||||
│ │ ├── Cores/
|
||||
│ │ │ ├── move_base_core/ # BaseNavigation interface
|
||||
│ │ │ ├── robot_nav_core/ # Planner interfaces (BaseGlobalPlanner, BaseLocalPlanner, RecoveryBehavior)
|
||||
│ │ │ ├── robot_nav_core_adapter/ # Adapter utilities (global_planner_adapter, local_planner_adapter, costmap_adapter)
|
||||
│ │ │ └── robot_nav_core2/ # Additional nav utilities (global_planner, local_planner, costmap)
|
||||
│ │ ├── Libraries/
|
||||
│ │ │ └── nav_grid/ # Navigation grid utilities
|
||||
│ │ └── Packages/
|
||||
│ │ └── move_base/ # MoveBase implementation
|
||||
│ │
|
||||
│ ├── Algorithms/
|
||||
│ │ ├── Cores/
|
||||
│ │ │ └── score_algorithm/ # Trajectory scoring và goal checking
|
||||
│ │ ├── Libraries/
|
||||
│ │ │ ├── mkt_algorithm/ # MKT kinematics (diff drive & bicycle)
|
||||
│ │ │ ├── mkt_plugins/ # MKT plugin components
|
||||
│ │ │ ├── mkt_msgs/ # MKT message types
|
||||
│ │ │ ├── kalman/ # Kalman filtering
|
||||
│ │ │ └── angles/ # Angle utilities
|
||||
│ │ └── Packages/
|
||||
│ │ ├── global_planners/
|
||||
│ │ │ ├── custom_planner/ # Custom global planner
|
||||
│ │ │ ├── dock_planner/ # Docking planner
|
||||
│ │ │ └── two_points_planner/ # Two points planner
|
||||
│ │ └── local_planners/
|
||||
│ │ └── pnkx_local_planner/ # PNKX local planner
|
||||
│ │
|
||||
│ ├── Libraries/
|
||||
│ │ ├── geometry_msgs/
|
||||
│ │ │ ├── build/
|
||||
│ │ │ ├── include/
|
||||
│ │ │ └── CMakeLists.txt
|
||||
│ │ └── libtf2/
|
||||
│ │ ├── .vscode/
|
||||
│ │ ├── include/
|
||||
│ │ ├── samples/
|
||||
│ │ ├── src/
|
||||
│ │ ├── .gitignore
|
||||
│ │ ├── DEBIAN_PACKAGING.md
|
||||
│ │ ├── libtf2_2.0.0_amd64.deb
|
||||
│ │ ├── Makefile
|
||||
│ │ └── README.md
|
||||
│ ├── Packages/
|
||||
│ │ └── move_base/
|
||||
│ │ ├── build/
|
||||
│ │ ├── include/
|
||||
│ │ ├── src/
|
||||
│ │ └── CMakeLists.txt
|
||||
│ └── CMakeLists.txt (root)
|
||||
│ │ ├── costmap_2d/ # Costmap system với 8 layers
|
||||
│ │ ├── tf3/ # Transform system
|
||||
│ │ ├── robot_time/ # Time management
|
||||
│ │ ├── robot_cpp/ # Core utilities (init, NodeHandle, PluginLoaderHelper)
|
||||
│ │ ├── robot_nav_2d_utils/ # 2D navigation utilities
|
||||
│ │ ├── robot_nav_2d_msgs/ # 2D navigation messages
|
||||
│ │ ├── geometry2/ # Geometry utilities (tf3_geometry_msgs, tf3_sensor_msgs)
|
||||
│ │ ├── common_msgs/ # Message types
|
||||
│ │ │ ├── robot_geometry_msgs/ # Geometry messages (29 types)
|
||||
│ │ │ ├── robot_nav_msgs/ # Navigation messages (24 types)
|
||||
│ │ │ ├── robot_sensor_msgs/ # Sensor messages (30 types)
|
||||
│ │ │ ├── robot_std_msgs/ # Standard messages (32 types)
|
||||
│ │ │ ├── robot_protocol_msgs/ # Protocol messages
|
||||
│ │ │ ├── robot_visualization_msgs/ # Visualization messages
|
||||
│ │ │ └── utils/ # Message utilities
|
||||
│ │ ├── laser_geometry/ # Laser geometry utilities
|
||||
│ │ ├── voxel_grid/ # Voxel grid
|
||||
│ │ ├── data_convert/ # Data conversion
|
||||
│ │ └── xmlrpcpp/ # XML-RPC utilities
|
||||
│ │
|
||||
│ └── APIs/
|
||||
│ └── c_api/ # C API wrapper cho .NET/C#
|
||||
│
|
||||
├── build/ # Build artifacts
|
||||
├── config/ # Configuration files
|
||||
├── examples/ # Example code
|
||||
└── doc/ # Documentation
|
||||
├── architecture_discussion.md
|
||||
├── implementation_plan.md
|
||||
├── folders.md
|
||||
└── readme.md
|
||||
```
|
||||
|
||||
## Chi tiết các thư mục chính
|
||||
|
||||
### Navigations/
|
||||
- **Cores/**: Interfaces và core utilities
|
||||
- `move_base_core`: BaseNavigation interface
|
||||
- `robot_nav_core`: Planner interfaces
|
||||
- `robot_nav_core_adapter`: Adapter layer
|
||||
- `robot_nav_core2`: Additional utilities
|
||||
- **Libraries/**: Navigation libraries
|
||||
- `nav_grid`: Grid utilities
|
||||
- **Packages/**: Implementations
|
||||
- `move_base`: MoveBase implementation
|
||||
|
||||
### Algorithms/
|
||||
- **Cores/**: Core algorithms
|
||||
- `score_algorithm`: Trajectory scoring
|
||||
- **Libraries/**: Algorithm libraries
|
||||
- `mkt_algorithm`: Kinematics algorithms
|
||||
- `mkt_plugins`: Plugin components
|
||||
- `kalman`: Filtering
|
||||
- **Packages/**: Algorithm implementations
|
||||
- `global_planners/`: 3 planners
|
||||
- `local_planners/`: 1 planner với multiple behaviors
|
||||
|
||||
### Libraries/
|
||||
- **costmap_2d/**: Costmap system với 8 layers
|
||||
- **tf3/**: Transform system
|
||||
- **robot_cpp/**: Core utilities (init, NodeHandle, PluginLoaderHelper)
|
||||
- **common_msgs/**: Message type definitions
|
||||
- Các utilities khác: time, geometry, sensors, etc.
|
||||
Reference in New Issue
Block a user