第一个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
相关推荐
晓纪同学10 小时前
ROS2 -06-动作
java·数据库·python·算法·机器人·ros·ros2
liu-yonggang2 天前
ROS2 Topic 传输机制:板内 vs 跨板
性能优化·ros2
阿豪只会阿巴3 天前
咱这后续安排
c++·人工智能·算法·leetcode·ros2
G果5 天前
LIO-SAM 学习总结
学习·slam·点云·ros2·导航·nav2·liosam
WWZZ20256 天前
具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人1
机器人·大模型·机械臂·ros2·具身智能·isaac sim
winfreedoms20 天前
ROS2知识大白话
笔记·学习·ros2
LS_learner22 天前
RViz(ROS Visualization)显示传感器数据、机器人状态、路径规划结果等各种信息的强大图形界面
ros2
LS_learner23 天前
ROS2的jazzy版本的机器人3D仿真软件gazebo的安装和使用
ros2
LS_learner23 天前
Xacro 和 SDF 是进行复杂机器人系统开发与高级仿真的关键技能
ros2