HomeCoding Standards
Development
Coding Standards
编码规范
Autoware enforces strict coding standards. All contributed code must pass CI/CD checks. Below are the core standards that must be followed in localization module development.
C++ Naming Conventions
| Type | Style | Example |
|---|---|---|
Functions/Variables | lower_snake_case | void calculate_pose() |
Classes/Enums | UpperCamelCase | class NDTScanMatcher |
Constants | lower_snake_case | constexpr double gravity = 9.80665 |
Abbreviations | Treat as single word | class RosApi (not ROSAPI) |
CMakeLists.txt Standards
CMakeLists.txt
cmake
cmake_minimum_required(VERSION 3.14)
project(autoware_my_localizer)
find_package(autoware_cmake REQUIRED)
autoware_package()
ament_auto_add_library(${PROJECT_NAME} SHARED
src/my_localizer_node.cpp
src/algorithm.cpp
)
rclcpp_components_register_node(${PROJECT_NAME}
PLUGIN "autoware::my_localizer::MyLocalizerNode"
EXECUTABLE my_localizer_node
)
if(BUILD_TESTING)
ament_add_ros_isolated_gtest(test_my_localizer
test/test_my_localizer.cpp
)
target_link_libraries(test_my_localizer ${PROJECT_NAME})
endif()
ament_auto_package(INSTALL_TO_SHARE launch config)Package Directory Structure
Directory Structure
text
autoware_my_localizer/
├── CMakeLists.txt
├── package.xml
├── config/
│ └── my_localizer.param.yaml
├── launch/
│ └── my_localizer.launch.xml
├── include/autoware/my_localizer/
│ ├── my_localizer_node.hpp
│ └── algorithm.hpp
├── src/
│ ├── my_localizer_node.cpp
│ ├── algorithm.cpp
│ ├── diagnostics.cpp
│ └── scoring.cpp
└── test/
├── test_my_localizer.cpp
└── test_data/Tip
Logging must use RCLCPP_INFO/WARN/ERROR and other ROS 2 macros. Using std::cout or printf is strictly prohibited. The auto keyword must not be used in Eigen expressions.