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

【ROS2】快速创建一个包

1、创建包

创建使用python语言的包

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python my_package

如果希望创建包时也创建节点

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python --node-name my_node my_package

2、创建节点

import rclpy
from rclpy.node import Node
from std_msgs.msg import Stringclass MyNode(Node):def __init__(self):super().__init__('my_node')self.publisher_ = self.create_publisher(String, 'topic', 10)self.timer = self.create_timer(0.5, self.publish_message)def publish_message(self):msg = String()msg.data = f"Hello ROS2 at {self.get_clock().now()}"self.publisher_.publish(msg)self.get_logger().info(f"Published: {msg.data}")def main(args=None):rclpy.init(args=args)node = MyNode()rclpy.spin(node)rclpy.shutdown()if __name__ == '__main__':main()

3、创建目录结构

创建需要的目录结构,示例如下:

ros2_ws/src/robot_arm/
├── config/                  # 配置文件(如 YAML 参数、控制器配置)
├── launch/                  # Launch 文件(.launch.py 或 .xml)
├── rviz/                    # RViz 配置文件(.rviz)
├── urdf/                    # URDF/XACRO 机器人模型文件
├── robot_arm/               # Python 模块目录(核心代码)
│   ├── __init__.py
│   └── robot_arm.py         # 主节点
├── package.xml
├── setup.py
└── ...                      # 其他默认文件

创建文件夹

cd ~/ros_ws/src/my_package/
mkdir my_folder

4、配置包依赖与入口点

修改package.xml:添加依赖项(如rclpystd_msgs):

<exec_depend>rclpy</exec_depend>
<exec_depend>std_msgs</exec_depend>

配置setup.py

from setuptools import find_packages, setup
import os
from glob import globpackage_name = 'robot_arm'setup(name=package_name,version='0.0.0',packages=find_packages(exclude=['test']),data_files=[# 安装到 share 目录下的资源文件(ROS 2 推荐方式)('share/ament_index/resource_index/packages', ['resource/' + package_name]),('share/' + package_name, ['package.xml']),(os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')),(os.path.join('share', package_name, 'urdf'), glob('urdf/*.xacro')),(os.path.join('share', package_name, 'urdf'), glob('urdf/*.urdf')),(os.path.join('share', package_name, 'rviz'), glob('rviz/*.rviz')),(os.path.join('share', package_name, 'meshes'), glob('meshes/*.stl') + glob('meshes/*.STL')),],install_requires=['setuptools'],zip_safe=False,  # 禁用 ZIP 安装maintainer='yourname',maintainer_email='yourname@todo.todo',description='ROS 2 package for robot arm control',license='Apache License 2.0',  # 建议明确许可证tests_require=['pytest'],entry_points={'console_scripts': [# 注册 Python 节点'my_node = my_package.my_node:main',  # 映射节点到可执行命令'robot_arm_node = robot_arm.robot_arm_node:main',],},
)

5、编译与运行

编译包

cd ~/ros2_ws
colcon build --packages-select my_package

加载环境

source install/setup.bash

运行

ros2 run my_package my_node

http://www.dtcms.com/a/430832.html

相关文章:

  • Markdown——2.LaTeX数学公式
  • 网站系统建设合同范本网站建设相关技术
  • 做网站准备的资料竞猜世界杯
  • Python 开发工具,最新2025 PyCharm 使用
  • 新公司注册在哪个网站p2p网站建设教程
  • 2008 年真题配套词汇单词笔记(考研真相)
  • 增强版 bash “zsh“
  • 图数据库:基于历史学科的全球历史知识图谱构建,使用Neo4j图数据库实现中国历史与全球历史的关联查询。
  • conda建立虚拟环境,并在jupyter notebook中显示,查看与已安装包是否冲突
  • 美食网站策划书新网站如何让百度收录
  • [创业之路-642]:新质生产力、硬科技与数字经济深度融合
  • 今日分享 浮点数二分
  • DataTool.vip官网入口 - 多平台视频与音频免费下载器工具
  • 文心雕龙:DIFY 工作流驱动的Word自动化生成与规范排版方案
  • asp sql做学生信息网站中国建设银行演示网站
  • windows10 系统添加第二块硬盘(解决硬盘盘符丢失问题)
  • java-代码随想录第48天|739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II
  • 在嘉立创的泰山派上也能运行Easysearch
  • JSP 点击量统计
  • 应用网站如何做外贸网站建设哪里做得好
  • Kubernetes证书管理实战:cert-manager部署与CRD导出
  • [Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
  • 网站建设背景及目的搜索优化的培训免费咨询
  • 2012 年真题配套词汇单词笔记(考研真相)
  • Ubuntu20.04 按照飞浆paddle 3.2遇到的问题
  • 网站建设推荐郑国华做网站ps图片都是多大
  • 探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧
  • 线程属性的相关设置详解
  • 深圳公明网站建设桂林北站到阳朔
  • maven的概述以及在mac安装配置