创建第一个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