和大多数开发环境一样,理论上,在 ROS2 中,只需要记事本就可以编写基本的 ROS2 程序,但 是工欲善其事必先利其器,为了提高开发效率,可以先安装集成开发工具和使用方便的工具:IDE、 终端、git。
1.4.1 安装 VSCode
VSCode 全称 Visual Studio Code,是微软推出的一款轻量级代码编辑器,免费、开源而且功能强 大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片 段、代码对比 Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件 跨平台支持 Win、Mac 以及 Linux。
1.下载 vscode
下载:https://code.visualstudio.com/Download。
历史版本下载链接:https://code.visualstudio.com/updates。
2.vscode 安装与卸载
2.1 安装
方式 1:双击安装即可(或右击选择安装);
方式 2:sudo dpkg -i xxxx.deb。
2.2 卸载
sudo dpkg --purge code
3.VSCode 启动
VSCode 启动也比较简单,可以直接在 Show Applications(显示应用程序) 中搜索 VSCode 直接启 动(也可以将其添加到收藏夹)。 或者,也可以在终端下进入需要被打开的目录(比如:前面创建的 ROS2 工作空间 ws00_helloworld), 然后输入命令
code .
4.VSCode 插件
VSCode 支持插件扩展,依赖于 VSCode 丰富多样的插件,可以大大提高程序开发效率,为了方便 ROS2 程序开发,我们也需要安装一些插件。
首先点击侧边栏的 Extensions(插件)选项或者使用快捷键 Ctrl+Shift+X 打开插件窗口,本课程建议 安装的插件如下:

当然,上述只是部分推荐插件,大家可以根据自身需求安装其他扩展。
5.VSCode 配置
在 VSCode 中,cpp 文件中的#include "rclcpp/rclcpp.hpp"包含语句会抛出异常,这是因为没有 设置 VSCode 配置文件中 includepath 属性,可以按照如下步骤解决此问题:

-
将鼠标移到错误提示语句,此时会出现弹窗;
-
点击弹窗中的快速修复,会有新的弹窗,再点击编辑"includePath"设置;
-
在 新 页 面 中 , 包 含 路 径 属 性 对 应 的 文 本 域 中 , 换 行 输 入 被 包 含 的 路 径
/opt/ros/humble/include/**
"/usr/include/**"

在.vscode上,会生成这个文件,刚刚添加的指令,其实就是下面这个。
"includePath": [
"${workspaceFolder}/**",
"/opt/ros/humble/include/**",
"/usr/include/**"
],
至此,问题修复。 VSCode 安装并配置完毕后,大家就可以在其中编写 ROS2 程序了。当然为了提高编码效率,我们 会经常性的使用到一些快捷键,VSCode 的快捷键可以在菜单栏的"帮助"中查看。
1.4.2 安装终端
在 ROS2 中,需要频繁的使用到终端,且可能需要同时开启多个窗口,推荐一款较为好用的终端: Terminator。效果如下:
1.安装
sudo apt update
sudo apt install terminator
2.启动
可以直接在 Show Applications(显示应用程序) 中搜索 terminator 直接启动(也可以将其添加到收藏 夹);或者,也可以直接使用快捷键 Ctrl+Alt+T 启动。
3.Terminator 常用快捷键
第一部份:关于在同一个标签内的操作


第二部份:有关各个标签之间的操作

1.4.3 安装git
Git 是一个免费和开源的分布式版本控制系统,旨在高速高效的处理从小型到大型项目的所有内容。 在 Ubuntu 下可以调用如下命令安装 git:
在本教程中会经常使用 git clone 仓库地址的方式来将 Git 仓库拷贝到本地。 关于 git 工具使用可以在终端下输入:git --help 查看帮助文档。关于 git 的其他详细信息请参考: https://git-scm.com/
1.4.4 使用vscode编写代码
按ctrl+~启动终端:

进入工作空间的src文件。

1、创建功能包:
ros2 pkg create pkg04_hellovscode_py --build-type ament_python --dependencies rclpy --node-name helloworld

2、编写python文件
python
import rclpy
def main(args=None): # 补充args参数(ROS2标准写法),与rclpy.init匹配
# 初始化 ROS2
rclpy.init(args=args)
# 创建节点
node = rclpy.create_node("helloworld_vscode_node")
# 输出文本
node.get_logger().info("hello vscode!")
# 释放资源
rclpy.shutdown()
if __name__ == '__main__':
main() # 统一4空格缩进
3、编译
cd .. 返回到工作空间
colcon build 编译
4、执行
. install/setup.bash 刷新环境变量
ros2 run pkg04_hellovscode_py helloworld 运行代码

1.4.5 如果在功能包继续创建可执行文件,如何配置?
1、python文件配置
(1)、创建一个新的可执行文件
将helloword复制粘贴,重命名为helloworld2。

helloworld2代码:
python
import rclpy
def main(args=None): # 补充args参数(ROS2标准写法),与rclpy.init匹配
# 初始化 ROS2
rclpy.init(args=args)
# 创建节点
node = rclpy.create_node("helloworld_vscode_node")
# 输出文本
node.get_logger().info("hello vscode!111")
# 释放资源
rclpy.shutdown()
if __name__ == '__main__':
main() # 统一4空格缩进
(2)、配置setup.py文件
只需要改这里:
entry_points={
'console_scripts': [
'helloworld = pkg04_hellovscode_py.helloworld:main',
'helloworld2 = pkg04_hellovscode_py.helloworld2:main'
],
},

(3)、编译运行
colcon build
ros2 run pkg04_hellovscode_py helloworld2

2、C++文件配置
(1)、创建可执行文件

hellovscode2代码:
python
#include "rclcpp/rclcpp.hpp"
int main(int argc, char ** argv)
{
rclcpp::init(argc,argv);
auto node = rclcpp::Node::make_shared("hello_vscode_node_cpp");
RCLCPP_INFO(node->get_logger(),"hello vscode2......");
rclcpp::shutdown();
return 0;
}
(2)、配置CMakeLists.txt
add_executable(hellovscode src/hellovscode.cpp)
add_executable(hellovscode2 src/hellovscode2.cpp)
ament_target_dependencies(
hellovscode
"rclcpp"
)
ament_target_dependencies(
hellovscode2
"rclcpp"
)
install(TARGETS hellovscode
DESTINATION lib/${PROJECT_NAME})
install(TARGETS hellovscode2
DESTINATION lib/${PROJECT_NAME})
修改三处地方
(3)、编译+运行
colcon build
ros2 run pkg03_hellovscode_cpp hellovscode2
