1.4 ROS2 集成开发环境搭建

和大多数开发环境一样,理论上,在 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 属性,可以按照如下步骤解决此问题:

  1. 将鼠标移到错误提示语句,此时会出现弹窗;

  2. 点击弹窗中的快速修复,会有新的弹窗,再点击编辑"includePath"设置;

  3. 在 新 页 面 中 , 包 含 路 径 属 性 对 应 的 文 本 域 中 , 换 行 输 入 被 包 含 的 路 径

/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

相关推荐
昨天那个谁谁19 小时前
ROS2运行时报无法加载create_key等符号错误
c++·python·ros2
thinkpad12345678902 天前
ubuntu22.04+miniconda+ros2的坑(1)
pycharm·anaconda·ros2
shx66662 天前
2.1.2 ROS2 C++ 示例
c++·ros2
shx66663 天前
2.2.1 ROS2 在功能包中编写 Python 节点
开发语言·python·ros2
thinkpad12345678903 天前
ubuntu22.04+miniconda安装ROS2踩坑实录
pycharm·ros2·miniconda
shx66664 天前
2.2 ROS2 使用功能包组织 Python 节点
ros2·功能包
老黄编程5 天前
ros2 jazzy 支持 gazebo jetty 吗?兼容性如何?
ros2·jetty·jazzy
叠叠乐5 天前
gmapping 重置地图(修改版本,提供了服务,调用服务可运行时清空地图)
ros2
G果6 天前
ROS2 Cartographer纯定位导航遇到的问题
python·ros2·定位·cartographer·导航·launch·navigation2