一、工作空間(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