古月ROS2

一、创建工作空间和功能包

1.创建工作空间

bash 复制代码
mkdir -p ~/dev_ws/src

2.构建ROS2代码

bash 复制代码
cd ~/dev_ws
colcon build

此时在dev_ws文件夹下面会有四个文件夹,分别是:build、install、log、src

3.配置环境变量(配置环境变量有两个方法):

(1)只在当前终端中生效

bash 复制代码
# 在当前终端中输入
cd ~/dev_ws
source install/setup.bash 

(2)将"~/dev_ws/install/setup.bash"存到bashrc文件中

有两种操作方法:
① 在终端中进行追加
bash 复制代码
#在终端中输入
echo "source ~/dev_ws/install/setup.bash" >> ~/.bashrc 
②直接将"source ~/dev_ws/install/setup.bash"复制到bashrc文件中。

4.创建功能包

(1)创建功能包

bash 复制代码
$ cd ~/dev_ws/src
$ ros2 pkg create --build-type ament_cmake pkg_cpp        # C++ 
$ ros2 pkg create --build-type ament_python pkg_python    # python

(2)编译功能包

bash 复制代码
$ cd ~/dev_ws/src
$ colcon build
$ source install/local_setup.bash

二、节点

1. 运行节点

bash 复制代码
ros2 run helloworld_node node_helloworld
# 其中:
# helloworld_node为功能包的名字
# node_helloworld为功能包中节点的名字

(1)一个简单的节点代码node_helloworld_class.py

python 复制代码
import rclpy                                      # ROS2 Python接口库
from rclpy.node import Node                       # ROS2 节点累
import time

class HelloWorldNode(Node):
	def __init__(self,name):
		super().__init__(name)
		while rclpy.ok():
			self.get_logger().info("Hello World")
			time.sleep(0.5)

def main(arg=None):                                  # ROS2节点入口main函数
	rclpy.init(args=args)                            # ROS2 Python接口初始化
	node = HelloWorldNode("node_helloworld_class")   # 创建ROS2节点对象并进行初始化
	rclpy.spin(node)                                 # 循环等待ROS2推出
	node.destroy_node()                              # 销毁节点对象
	rclpy.shutdown()                                 # 关闭ROS2 Python接口

(2)程序入口配置

在当前功能包下面有一个名为setup.py的文件,打开该文件

python 复制代码
# 在entry_point中加入入口点位置
entry_point = {
				'console_scripts':[
				'node_helloworld = pkg_python.node_helloworld_class:main',
				]
				},
# 等号前面的node_helloworld为节点名字
# pkg_python为功能包中存放node_helloworld_class.py程序的文件夹的名字
# 等号后面的node_helloworld_class为Python程序的名字
# 可以简单理解为:等号前面为节点名字,等号后面为main的路径

(3)编译运行

bash 复制代码
$ cd ~/dev_ws
$ colcon build    #编译工作空间所有的功能包

(4)运行节点