类设计#
我们将使用 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文件的末尾注册.
库#
警告
正在施工中