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 测试编译
- 创建一个工作文件夹
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
-
3 使用RCLPY编写节点
3.1 创建Python功能
ros2 pkg create imu_py --build-type ament_python --dependencies rclpy
.2 编写程序
- 导入库文件
- 初始化客户端库
- 新建节点
- spin循环节点
- 关闭客户端库
在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