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

相关推荐
Tipriest_1 天前
ROS 2 rosbag2 播放出现 “Message queue starved. Messages will be delayed.” 的处理步骤
消息队列·ros2·缓存机制
Will_Ye3 天前
ROS2 Humble 配置 Orbbec Gemini2L相机 和 Mid360
ros2·mid360·orbbec gemini2l
boss-dog4 天前
realsense_camera ros2 输出点云平面不完整问题
ros2·realsense
无人装备硬件开发爱好者6 天前
ROS2:无人机从 “能飞” 到 “会思考” 的全栈技术引擎 —— 深度拆解与落地指南(上)
无人机·ros2·无人机飞控
MIXLLRED7 天前
Ubuntu 22.04/ROS2 Humble下使用Intel RealSense D435i相机
ubuntu·d435i·ros2·深度相机
花花少年9 天前
ROS2常用指令(附 ROS1 & ROS2 对照表)
ros2
阿豪只会阿巴10 天前
【多喝热水系列】从零开始的ROS2之旅——Day5
c++·笔记·python·ubuntu·ros2
维度攻城狮13 天前
ros2参数通信案例
开发语言·windows·python·ros2·参数通信
zylyehuo15 天前
Ubuntu22.04(ROS2 humble)小车仿真环境搭建
ros2·导航
阿豪只会阿巴15 天前
【多喝热水系列】从零开始的ROS2之旅——Day3
linux·笔记·ubuntu·ros2