第一个ros2程序

通过 VS Code 配合终端,完成从创建环境到编写第一个 Python 节点的全部流程。


第一步:创建 ROS 2 工作空间

  1. 打开你的 VS Code,确保它已经连接到了 WSL: Ubuntu。
  2. 点击 VS Code 顶部的 Terminal -> New Terminal
  3. 在终端中依次输入以下命令:
bash 复制代码
# 1. 创建工作空间文件夹 dev_ws 及其源码目录 src
mkdir -p ~/dev_ws/src

# 2. 进入工作空间
cd ~/dev_ws

# 3. 尝试编译(虽然现在里面没代码,但这一步会生成 install, build, log 文件夹)
colcon build

第二步:创建你的第一个功能包 (Package)

在 ROS 2 中,你写的每一段程序都必须属于一个"功能包"。我们创建一个名为 my_first_pkg 的 Python 功能包。

在终端输入:

bash 复制代码
cd ~/dev_ws/src
ros2 pkg create --build-type ament_python my_first_pkg --dependencies rclpy
  • --build-type ament_python: 告诉 ROS 这我们要用 Python 写代码。
  • --dependencies rclpy: 自动添加 ROS 2 的 Python 核心库依赖。

第三步:编写第一行代码

  1. 在 VS Code 左侧的文件浏览器中,找到 dev_ws -> src -> my_first_pkg -> my_first_pkg 文件夹。
  2. 右键点击该文件夹,新建一个文件,命名为 hello_node.py
  3. 将以下代码复制进去:
python 复制代码
import rclpy
from rclpy.node import Node

def main(args=None):
    # 初始化 ROS 2 通信
    rclpy.init(args=args)
    
    # 创建一个名为 "my_node" 的节点
    node = Node("my_node")
    
    # 在终端打印一条欢迎信息
    node.get_logger().info("你好 ROS 2!这是我的第一行代码。")
    
    # 保持节点运行(由于我们只是打印一行,这里直接销毁)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

第四步:注册你的程序

ROS 2 并不直接运行 .py 文件,它需要你注册一个"入口"。

  1. 在 VS Code 中打开 dev_ws/src/my_first_pkg/setup.py
  2. 找到 entry_points 部分,将其修改为:
python 复制代码
    entry_points={
        'console_scripts': [
            'hello_exe = my_first_pkg.hello_node:main'
        ],
    },

这行代码的意思是:当我们运行 hello_exe 时,去执行 hello_node.py 里的 main 函数。


第五步:编译并运行

回到你的终端:

bash 复制代码
# 1. 回到工作空间根目录
cd ~/dev_ws

# 2. 编译代码
colcon build

# 3. 打开"开关":让当前终端识别你刚写的代码
source install/setup.bash

# 4. 运行你的节点!
ros2 run my_first_pkg hello_exe

验证结果

如果一切顺利,你应该会在终端看到:
[INFO] [my_node]: 你好 ROS 2!这是我的第一行代码。

💡 给小白的温馨提示:

  • 红波浪线问题: VS Code 可能会提示找不到 rclpy。点击右下角的 Python 版本号,选择包含 ros-humble 路径的解释器,或者在 .vscode/settings.json 中添加路径。
  • 必须 Source: 记住,每次你在新的终端运行自己的代码前,都要先执行 source install/setup.bash
相关推荐
YQ_011 天前
Ubuntu 22.04 下让 Gazebo / RViz 使用 NVIDIA GPU 渲染
ros2
小手智联老徐2 天前
ROS2:与 Gazebo 版本对应关系解析
机器人·ros2·gazebo
rqtz3 天前
【机器人】ROS2配置solidworks模型转换的URDF文件
ros2·urdf·solidworks
小手智联老徐3 天前
ROS2:Humble 安装详解(Ubuntu 22.04)
ros2·humble·colcon
rqtz3 天前
【机器人】ROS2 功能包创建与 CMake 编译链路探秘
机器人·cmake·ros2
maxmaxma4 天前
ROS2机器人少年创客营:Python第三课
开发语言·python·机器人·ros2
小手智联老徐4 天前
ROS2 :Node 与 Topic 初探(Python)
ros2
kyle~6 天前
ROS2 --- WaitSet(等待集) 等待实体就绪,管理执行回调函数
大数据·c++·机器人·ros2
Stack Overflow?Tan906 天前
linux ubuntu22.04安装ROS2humble完整版的流程
linux·docker·ros2
maxmaxma6 天前
ROS2 机器人 少年创客营:Day 9
机器人·ros2