ROS2 C++ 开发基础:环境配置与第一个 Hello World 程序
在开始 ROS 2 的 C++ 开发之旅前,建立规范的编码习惯和稳定的开发环境至关重要。本教程将引导你完成从风格指南学习、编译器安装到编写并运行第一个 C++ 程序的全过程。我们将严格遵循 ROS 2 社区推荐的代码规范,确保你的代码具备良好的可读性和兼容性,为后续复杂的机器人算法开发打下坚实基础。
ROS 2 C++ 风格指南核心规范
ROS 2 的 C++ 风格指南主要基于 Google C++ Style Guide。遵循这一标准不仅能保证代码整洁,还能确保你的项目与 Nav2、MoveIt 2 等主流 ROS 2 包保持风格一致,便于社区协作与维护。
在命名与格式上,需严格遵守以下规则:
- 缩进与行宽:使用两个空格进行缩进,每行代码字符数限制在 100 个以内。
- 文件扩展名 :头文件必须使用
.hpp扩展名,实现文件使用.cpp扩展名。 - 命名约定 :
- 变量名采用蛇形命名法(snake_case),例如
robot_speed。 - 类名采用驼峰命名法(CamelCase),例如
RobotController。 - 函数名可使用驼峰命名法或蛇形命名法,具体取决于所依赖的主要开发包风格。
- 变量名采用蛇形命名法(snake_case),例如
小结:在大型项目中,请优先遵循该项目既有的代码风格。若独立开发,则默认遵循上述 ROS 2 通用规范。
开发环境搭建与编译器检查
首先,我们需要创建一个专门用于存放 C++ 教程代码的工作目录,并验证系统中是否安装了必要的编译工具链。
创建工作目录
打开终端,执行以下命令创建目录并进入:
bash
# 创建层级目录 ~/Documents/cpp_tutorial
mkdir -p ~/Documents/cpp_tutorial
# 进入该目录
cd ~/Documents/cpp_tutorial
若你使用 Visual Studio Code (VS Code) 作为编辑器,可在该目录下输入 code . 直接启动编辑器。
检查与安装 C++ 编译器
C++ 代码需要通过编译器转换为机器可执行的二进制文件。大多数 Linux 发行版预装了 GCC (GNU Compiler Collection)。在终端输入以下命令检查版本:
bash
# 检查 GCC 版本,若已安装会输出详细版本信息
gcc -v
如果未安装 GCC 或缺少相关构建工具,请执行以下命令进行安装:
bash
# 更新软件包列表
sudo apt-get update
# 安装构建必备工具包,包含 gcc, g++, make 等
sudo apt-get install build-essential gdb
在 VS Code 中,还需确保安装了微软官方提供的 C/C++ 扩展插件。通过侧边栏扩展商店搜索 "C++" 并安装由 Microsoft 发布的插件,以支持代码高亮、智能提示及调试功能。
编写第一个 C++ 程序:Hello World
现在我们来编写第一个 C++ 程序。在 VS Code 资源管理器中,右键点击左侧文件区域,选择"新建文件",命名为 hello_world.cpp。
代码解析
以下是标准的 Hello World 代码结构:
cpp
// 引入输入输出流库,用于使用 cout 打印信息
#include <iostream>
// 主函数,程序的入口点
int main() {
// std::cout 用于向控制台输出内容
// << 是插入运算符,std::endl 表示换行并刷新缓冲区
std::cout << "Hello Automatic Addison" << std::endl;
// 返回 0 表示程序正常结束
return 0;
}
关键点说明:
#include <iostream>:这是标准输入输出库,允许我们使用std::cout进行屏幕输出。int main():每个 C++ 程序必须有且仅有一个main函数,它是程序执行的起点。- 分号
;:与 Python 不同,C++ 语句末尾必须加分号,否则编译会报错。 return 0;:按照惯例,主函数返回 0 代表程序成功执行。
编译与运行
方法一:使用 VS Code 内置任务
点击编辑器右上角的"播放"按钮,首次运行时选择 g++ build and debug active file。VS Code 会自动生成 .vscode/tasks.json 配置文件,记录编译命令。此后只需点击播放即可运行。控制台将输出 Hello Automatic Addison。
方法二:手动编译运行
在终端中,我们可以直接使用 g++ 命令进行编译:
bash
# 编译 hello_world.cpp,-o 指定输出文件名为 hello_world
g++ hello_world.cpp -o hello_world
# 运行生成的可执行文件
./hello_world
优化开发体验:配置 Code Runner
为了更便捷地运行代码,推荐安装 Code Runner 扩展。它允许通过右键菜单快速编译并运行代码片段,无需手动配置复杂的任务文件。
安装与配置
- 在 VS Code 扩展商店搜索 "Code Runner" (作者: Jun Han) 并安装。
- 打开设置:点击
File->Preferences->Settings,点击右上角图标打开settings.json文件。 - 在花括号内添加以下配置,以优化运行体验:
json
{
// 其他已有配置...
// 运行前自动切换到文件所在目录
"code-runner.fileDirectoryAsCwd": true,
// 运行前自动保存文件
"code-runner.saveFileBeforeRun": true,
// 不显示执行消息,保持输出干净
"code-runner.showExecutionMessage": false,
// 运行前清除之前的输出
"code-runner.clearPreviousOutput": true,
// 不在集成终端中运行,而是在输出面板显示结果
"code-runner.runInTerminal": false
}
配置完成后,在 hello_world.cpp 文件中右键选择 "Run Code",即可在底部 "Output" 面板看到运行结果。这种方式比手动编译更快捷,适合日常测试小段代码。
代码注释规范与实战示例
在机器人开发中,代码的可读性与逻辑正确性同等重要。良好的注释能帮助开发者(包括未来的你自己)理解代码意图、变量含义及算法逻辑。
注释类型
C++ 支持两种注释方式:
- 单行注释 :使用
//,适用于简短说明。 - 多行注释 :使用
/* ... */,适用于段落解释或临时屏蔽代码块。
实战:机器人距离计算
创建一个新文件 robot_commenting.cpp,演示如何结合注释编写逻辑代码:
cpp
#include <iostream>
int main() {
// 定义机器人速度,单位:米/秒
double speed = 0.5;
// 定义行驶时间,单位:秒
double time = 10.0;
/*
* 计算行驶距离
* 公式:距离 = 速度 × 时间
*/
double distance = speed * time;
// 输出计算结果
std::cout << "The robot moved " << distance << " meters." << std::endl;
return 0;
}
注意事项:
- 变量声明时需指定类型(如
double),并赋予初始值。 - 每次修改代码后务必保存(
Ctrl + S)。 - 若使用 Code Runner,确保输出面板清晰;若发现输出异常,检查是否遗漏了分号或拼写错误。
运行上述代码,终端将显示:The robot moved 5 meters.。这表明程序正确读取了变量并执行了乘法运算。
速查表
- 文件规范 :头文件用
.hpp,源文件用.cpp;变量用蛇形命名,类名用驼峰命名。 - 编译命令 :
g++ source.cpp -o output_name用于手动编译;./output_name用于运行。 - 必要库 :使用
#include <iostream>和std::cout进行控制台输出。 - 语法细节 :每条语句末尾必须加分号
;;main函数需返回int类型(通常为 0)。 - 工具推荐:安装 VS Code 的 "C/C++" 插件用于调试,安装 "Code Runner" 插件用于快速运行。
- 注释习惯 :善用
//和/* */解释复杂逻辑,提升代码可维护性。


