自学内容网 自学内容网

ROS2入门篇——ROS2第一个节点

1.2 节点的命令行指令

运行节点指令:ros2 run 包名字 可执行文件名字

ros2 run <package_name> <executable_name>   

查看节点列表

ros2 node list   

查看节点信息

ros2 node info <node_name>   

其他指令

# 重映射节点名称
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
# 运行节点时设置参数
ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10 
1.3 工作空间

创建工作空间(其实就是创建一个目录)

mkdir -p name_ws/src   

1.4 功能包

功能包可以理解为存放节点的地方,ROS2中功能包根据编译方式的不同分为三种类型。

    ament_python,适用于python程序
    cmake,适用于C++
    ament_cmake,适用于C++程序,是cmake的增强版

1.4.1 功能包获取安装

sudo apt install ros-<version>-package_name   

1.4.2 功能包相关的指令 ros2 pkg

1.创建功能包

ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>   

2.列出可执行文件

ros2 pkg executables   

3.列出所有的包

ros2 pkg list   

4.输出某个包所在路径的前缀

ros2 pkg prefix  <package-name>   

5.查看功能包的信息。

ros2 pkg xml  <package-name>   

2 ROS2构建工具—Colcon

对创建的ROS2工作空间进行编译,colcon想当于ros1中的catkin工具。
2.1 安装Colcon

sudo apt-get install python3-colcon-common-extensions   

2.2 测试编译

  1. 创建一个工作文件夹
    mkdir -p ROS2_study/rospy_ws/src
    cd ROS2_study/rospy_ws/src
    
    
    

    2.编译

    colcon build
    # 指定包编译
    colcon build --packages-select [YOUR_PKG_NAME]

    允许通过更改src下的部分文件来改变install(重要),每次调整 python 脚本时都不必重新build了

    colcon build --symlink-install   

    运行编译的包的测试

    colcon test   

        配置资源

    source install/setup.bash

  2. 3 使用RCLPY编写节点

    3.1 创建Python功能

    ros2 pkg create imu_py  --build-type ament_python --dependencies rclpy

 

.2 编写程序

  1. 导入库文件
  2. 初始化客户端库
  3. 新建节点
  4. spin循环节点
  5. 关闭客户端库

 在imu_py/imu_py下创建node_Plotline.py,开始编写代码。

# 导入必要的ROS2和matplotlib库
import rclpy
import numpy as np
from rclpy.node import Node
from matplotlib import pyplot as plt

 
class PlotNode(Node):
    def __init__(self):
        super().__init__('plot_node')
        self.plot()
 
    def plot(self):
        # 示例数据
        x = np.linspace(0, 10, 100)
        y = np.sin(x)
 
        # 画图
        plt.plot(x, y)
        plt.xlabel('x Axis')
        plt.ylabel('y Axis')
        plt.title('Line Plot')
        plt.grid(True)
        plt.show()  # 显示图形
 
        # 关闭节点
        self.destroy_node()
        rclpy.shutdown()
 
def main(args=None):
    rclpy.init(args=args)
    plot_node = PlotNode()
    rclpy.spin(plot_node)
 
if __name__ == '__main__':
    main()

 代码编写完成用Crtl+S进行保存。接着修改setup.py。

 

from setuptools import setup

package_name = 'imu_py'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='ll',
    maintainer_email='ll@todo.todo',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            #"node_Plotting=imu_py.node_Plotting:main",  # 在这里修改!!!!!!
            
        ],
    },
)

“node_Plotting=imu_py.node_Plotting:main”,解释如下:

node_imu:节点名称
imu_py.node_Plotting:main:【软件包】.【执行文件.py】:【执行函数mian】

 

3.3 编译运行节点

colcon build --packages-select  imu_py
source install/setup.bash

ros2 run imu_py node_Plotting


原文地址:https://blog.csdn.net/ZPC8210/article/details/142719968

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!