第一个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。
相关推荐
大雨歌13 小时前
笛卡尔坐标 → 自然坐标(Frenet) 逐步推导全解 -2
ros2
米糕闯编程4 天前
鱼香ros2(十七)C++小海龟巡逻
开发语言·c++·机器人·ros2·服务·小海龟
风合星语5 天前
2026 机器人工程实例(七):Nav2 到站了,任务却没完成——AMR 载货导航中的托盘滑移与验收闭环
人工智能·机器人·ros2·机器人仿真·nav2·mujoco·amr
米糕闯编程11 天前
鱼香ros2(十二)C++话题订阅与发布
开发语言·c++·ros2·话题
朝朝辞暮i14 天前
C++ 第 36 课:Action——机械臂/VLA 非常重要
开发语言·c++·算法·ros2
朝朝辞暮i14 天前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2
朝朝辞暮i14 天前
C++ 第 40 章:ROS2 Publisher + Timer + Subscriber + Callback + Executor 完整闭环
开发语言·c++·算法·ros2
朝朝辞暮i14 天前
C++ 第 38 课:线程、SingleThreadedExecutor、MultiThreadedExecutor、Callback Group
开发语言·c++·算法·ros2
小奇不哭15 天前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
zhangrelay17 天前
机械臂末端规划智能模型的误区演示
linux·笔记·学习·ubuntu·ros2