Skip to content

类设计#

我们将使用 autoware_gnss_poser 包作为示例.

命名空间#

namespace autoware::gnss_poser
{
...
} // namespace autoware::gnss_poser
  • 所有内容都应该在 autoware::gnss_poser 命名空间下.
  • 右大括号必须包含带有命名空间名称的注释.(使用 cpplint 自动)

#

节点#

gnss_poser_node.hpp#

class GNSSPoser : public rclcpp::Node
{
  public:
    explicit GNSSPoser(const rclcpp::NodeOptions & node_options);
  ...
}

gnss_poser_node.cpp#

GNSSPoser::GNSSPoser(const rclcpp::NodeOptions & node_options)
: Node("gnss_poser", node_options)
{
  ...
}
  • 类名应为 CamelCase.
  • Node 类应继承自 rclcpp::Node.
  • 构造函数必须标记为 be explicit.
  • 构造函数必须将 rclcpp::NodeOptions 作为参数.
  • 默认节点名称:
    • 不应有 autoware_ 前缀.
    • 应该 NOT_node 后缀.
      • 基本原理: 节点名称在运行时很有用.无论如何,ros2 node list 的输出将仅显示节点.拥有 _node 是多余的.
    • 示例: gnss_poser.
组件注册#
...
} // namespace autoware::gnss_poser

#include <rclcpp_components/register_node_macro.hpp>
RCLCPP_COMPONENTS_REGISTER_NODE(autoware::gnss_poser::GNSSPoser)
  • 组件应在命名空间之外的 gnss_poser_node.cpp 文件的末尾注册.

#

警告

正在施工中