当前位置: 首页 > ai >正文

ROS2学习笔记|创建工作空间并打印文件内容

一,创建 ROS 2 工作空间 

  1. 创建工作空间目录及src子目录:
    mkdir -p ~/ros2_ws/src
    cd ~/ros2_ws

    解释:mkdir -p命令用于创建目录,如果目录已存在则不报错。这里创建了名为ros2_ws的工作空间目录,并进入该目录,src目录用于存放功能包源代码。

  2. 初始化工作空间(首次编译时会自动初始化)

    ​colcon build

    解释:colcon build命令用于编译工作空间,首次执行时会自动初始化工作空间,创建编译所需的文件和目录。编译完成后会生成build目录(存放中间编译文件)、install目录(存放安装后的文件,包括可执行文件、库文件等)和log目录(存放编译日志)。

  3. 设置工作空间环境变量:
    source install/setup.bash

    解释:该命令让系统识别工作空间中的功能包和节点等资源。为方便每次打开新终端自动设置,可将其添加到.bashrc文件:

    echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
    source ~/.bashrc

 二、创建功能包 

  1. 进入src目录:
    cd ~/ros2_ws/src
  2. 创建 Python 功能包:
    ros2 pkg create --build-type ament_python demo_python_topic --dependencies rclpy

    解释:ros2 pkg create用于创建功能包,--build-type ament_python指定使用 Python 构建类型,demo_python_topic是功能包名称,--dependencies rclpy表示该功能包依赖 ROS 2 的 Python 客户端库rclpy

  3. 目录结构说明:创建完成后,src目录下会生成demo_python_topic功能包目录,包含以下重要文件:package.xml:记录功能包的元信息,如名称、版本、依赖等。setup.py:用于配置功能包的构建和安装,包括定义可执行文件的入口点等。demo_python_topic目录:存放 Python 源代码文件。

三、编写代码实现文件内容打印

    进入功能包的 Python 代码目录

    cd ~/ros2_ws/src/demo_python_topic/demo_python_topic
    1. 创建 Python 脚本文件(如novel_pub_node.py),内容如下:
      import rclpy
      from rclpy.node import Node
      import osclass NovelPubNode(Node):def __init__(self, node_name):super().__init__(node_name)self.get_logger().info(f'{node_name},启动!')def print_novel_from_file(self):# 直接指定工作空间根目录workspace_dir = '/home/elf/chapt3/topic_ws'file_path = os.path.join(workspace_dir, 'novel1.txt')self.get_logger().info(f"尝试打开文件: {file_path}")try:with open(file_path, 'r', encoding='utf-8') as file:content = file.read()self.get_logger().info('开始打印小说内容:')self.get_logger().info(content)except FileNotFoundError:self.get_logger().error('未找到 novel1.txt 文件,请检查文件是否存在。')except Exception as e:self.get_logger().error(f'读取文件时出现错误:{e}')def main():rclpy.init()node = NovelPubNode('novel_pub')node.print_novel_from_file()# 打印完文件内容后,手动销毁节点并关闭rclpynode.destroy_node()rclpy.shutdown()if __name__ == "__main__":main()

      解释:导入rclpy库用于 ROS 2 Python 开发,Node类用于创建节点,os库用于文件路径操作。 NovelPubNode类继承自Node,在构造函数中初始化节点并输出启动信息。print_novel_from_file方法用于读取指定文件内容,其中workspace_dir需根据实际工作空间路径设置,os.path.join用于拼接路径。通过try-except捕获文件读取过程中的异常。main函数初始化 ROS 2,创建节点实例,调用文件读取方法,最后销毁节点并关闭 ROS 2 环境。

    2. 赋予脚本可执行权限:
      chmod +x novel_pub_node.py

      解释:该命令为novel_pub_node.py脚本添加可执行权限,确保 ROS 2 能运行该脚本。

    四、配置setup.py文件

    1. 打开~/ros2_ws/src/demo_python_topic/setup.py文件,在entry_points部分添加以下内容:

      'console_scripts': ['novel_pub_node = demo_python_topic.novel_pub_node:main',
      ],

      解释:console_scripts用于定义命令行可执行脚本,novel_pub_node是运行节点时使用的名称,demo_python_topic.novel_pub_node指定功能包和脚本文件名(不含.py后缀),:main表示脚本中的主函数。

    五、编译工作空间

    cd ~/ros2_ws
    colcon build

    解释:重新编译工作空间,使新添加或修改的代码生效。编译过程中会根据setup.pypackage.xml文件配置生成可执行文件等。 

    六、运行节点

    1. 确保已设置工作空间环境变量
      source install/setup.bash

      运行节点

      ros2 run demo_python_topic novel_pub_node

      解释:ros2 run命令用于运行 ROS 2 节点,demo_python_topic是功能包名称,novel_pub_node是在setup.py中配置的节点名称。运行后,节点将读取并打印novel1.txt文件内容。

       

      如果在运行过程中遇到问题,可参考以下常见问题排查:

    2. 未找到可执行文件:检查setup.py文件中entry_points配置是否正确,脚本是否有可执行权限,重新编译工作空间。
    3. 文件未找到错误:确认文件路径是否正确,文件是否存在,文件权限是否可读。
    4. 环境变量问题:确保 ROS 2 和工作空间的环境变量已正确设置,可尝试重新设置或添加到.bashrc文件
    http://www.xdnf.cn/news/3570.html

    相关文章:

  1. 视频编解码学习二之颜色科学
  2. UDP / TCP 协议
  3. 使用DeepSeek协助恢复历史数据
  4. GoFrame 奉孝学习笔记
  5. ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路
  6. leetcode0096. 不同的二叉搜索树-medium
  7. 从零开发一个B站视频数据统计Chrome插件
  8. Android Compose 层叠布局(ZStack、Surface)源码深度剖析(14)
  9. AI Agent开发第48课-DIFY中利用AI动态判断下一步流程-DIFY调用API、REDIS、LLM
  10. 面试现场“震”情百态:HashMap扩容记
  11. 昇腾的CANN是什么?跟英伟达CUDA的有什么联系和区别?【浅谈版】
  12. 生成式 AI 的未来
  13. [一文解决大模型微调+部署+RAG] LLamaFactory微调模型后使用Ollama + RAGFlow在Windows本地部署
  14. LabVIEW软件设计锂电池故障模拟检测
  15. 学习黑客安全基础理论入门
  16. 深度学习经典网络之LeNet-5详解
  17. 【AI面试准备】电商购物车AI测试设计与实施
  18. C 语言 第五章 指针(6)
  19. AI驱动文字冒险游戏
  20. 从零开始讲DDR(8)——AXI 接口MIG 使用(1)
  21. 主机Windows和虚拟机ubuntu和开发板三者互ping学习记录
  22. Allegro23.1新功能之如何使用文件预览功能操作指导
  23. 改进算法超详细:双变异樽海鞘群算法:从最优性能设计到分析
  24. 数字智慧方案6185丨智慧银行解决方案(51页PPT)(文末有下载方式)
  25. 【quantity】5 derive_more库 2.0 版介绍
  26. 预订接口优化:使用本地消息表保证订单生成、库存扣减的一致性
  27. 人工智能项目开发项目
  28. SSH秘钥管理指南
  29. Nginx核心功能及正则表达
  30. 第T8周:猫狗识别