一、工作空间(Workspace)
1.1、创建工作空间
# 选择指定目录 cd ~ # 创建工作空间 mkdir -p ros_ws/src
1.2、编译工作空间
colcon build
1.3、设置环境变量
source install/setup.bash
echo "source ~/ros_ws/install/setup.bash" >> ~/.bashrc
二、功能包(Package)
1、创建功能包
cd ~/ros_ws/src # 创建C++功能包 ros2 pkg create pkg_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld # 创建Python功能包 ros2 pkg create pkg_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld
2、编译功能包
cd ~/ros_ws/src # 编译工作空间所有功能包 colcon build # 编译指定1个或多个功能包 colcon build --packages-select 功能包名称列表 source install/setup.bash
三、节点(Node)
1、创建功能包
cd ~/ros_ws/src ros2 pkg create pkg_helloworld_py --build-type ament-python --dependencies rclpy --node-name helloworld
2、编写代码
import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 import time # 定义HelloWorld节点,初始化时定时打印"Hello World" class HelloWorldNode(Node): def __init__(self, name): super().__init__(name) # ROS2节点父类初始化 while rclpy.ok(): # ROS2系统是否正常运行 self.get_logger().info("Hello World") # ROS2日志输出 time.sleep(1) def main(args=None): # ROS2节点主入口函数 rclpy.init(args=args) # ROS2 Python接口初始化 node = HelloWorldNode("helloworld") # 初始化ROS2节点对象 rclpy.spin(node) # 循环等待ROS2退出 node.destroy_node() # 销毁节点对象 rclpy.shutdown() # 关闭ROS2 Python接口
代码编写完成后需要设置功能包的编译选项,让系统知道程序的入口,打开功能包的setup.py文件,加入程序入口的配置:
3、编译代码
cd ~/ros_ws colcon build --packages-select pkg_helloworld_py source install/setup.bash
4、运行节点
ros2 run pkg_helloworld_py helloworld