一、创建工作空间和功能包
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 #编译工作空间所有的功能包