ros2工程

创建第一个ros节点工程

依赖安装

# 安装rosdep依赖工具
	sudo apt install -y python3-pip
    sudo pip3 install rosdepc
    rosdepc init && rosdepc update 

安装colcon编译工具

    sudo apt install python3-colcon-common-extensions
    #编译小乌龟
    mkdir -p ~/dev_ws/src
    cd ~/dev_ws/src
    #克隆到刚刚创建的src目录下
    git clone https://github.com/ros/ros_tutorials.git -b dashing-devel
    #检测依赖
    rosdep install -i --from-path src --rosdistro dashing -y
    #编译
    colcon build

新建工作空间

mkdir -p ~/dev_ws/src

C++ 节点功能包

#在src目录下
ros2 pkg create --build-type ament_cmake learning_c
# 在工作空间下
#新建learning_c/src/node_c.cpp
#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
    rclcpp::init(argc, argv);
    auto node = std::make_shared<rclcpp::Node>("node_c");
    RCLCPP_INFO(node->get_logger(), "node_c启动");
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
#在CmakeLists.txt最后一行加入下面两行代码
add_executable(learning_c src/node_c.cpp)
ament_target_dependencies(learning_c rclcpp)

install(TARGETS
  node_c
  DESTINATION lib/${PROJECT_NAME}
)
colcon build   # 编译工作空间所有功能包
source install/local_setup.bash

Python 节点

#在src目录下
ros2 pkg create --build-type ament_python learning_py
#在learning_py/learning_py下新建node_py.py
import rclpy                                     
from rclpy.node import Node                     
import time
def main(args=None):                           
    rclpy.init(args=args)                        
    node = Node("node_py") # 节点名               
    while rclpy.ok():                            
        node.get_logger().info("Hello World")    
        time.sleep(0.5)                          
    node.destroy_node()                            
    rclpy.shutdown()                           
#setup.py文件里“entry_points”配置的程序入口
'node_py       = learning_py.node_py:main'
# 在工作空间下
colcon build   # 编译工作空间所有功能包
source install/local_setup.bash

SetuptoolsDeprecationWarning

pip install setuptools==58.2.0

只编译一个功能包

colcon build --packages-select YOUR_PKG_NAME 

每次调整 python 脚本时都不必重新build了

colcon build --symlink-install

你可能感兴趣的:(机器人之旅,colcon,工作空间,ros2)