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

TypeStyleExample
Functions/Variableslower_snake_casevoid calculate_pose()
Classes/EnumsUpperCamelCaseclass NDTScanMatcher
Constantslower_snake_caseconstexpr double gravity = 9.80665
AbbreviationsTreat as single wordclass 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.