前言
刚开始学习ros2的时候,大家可能在vscode写完节点代码后,会有一些提示或报错,不知道如何解决这些问题,很会影响接着往下学习的热情,所以这里我也翻看了大量的文章后,自己总结了一套从零到简单编写并运行一个节点的过程,希望对大家能够有所帮助。
一、创建工作空间
先打开终端,输入以下指令创建一个工作空间,以后所写的代码都会存放在以下工作空间下
这里的src就是未来放置所有功能包相关文件的位置。
mkdir -p ~/ros2_ws/src
然后进入到该工作空间下
cd ~/ros2_ws/src
二、创建功能包
再在此src代码空间下建立一个功能包
ros2 pkg create pkg_hello_cpp --build-type ament_cmake --dependencies rclcpp --node-name hellovscode
然后在终端中先进入到ros2_ws这个工作空间下,输入code .直接在终端中打开vscode,可以培养我们对代码的理解与掌握
在左侧我们就可以看到刚刚建立好的功能包
三、编写一个节点并运行
1、输入代码
#include "rclcpp/rclcpp.hpp"
int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("helloword_node_cpp");
RCLCPP_INFO(node->get_logger(),"hello world");
rclcpp::shutdown();
return 0;
}
2、添加路径
这里将以下一个简单的试运行代码输进去,检测以下能否成功
大家在刚开的时候可能会出现引用的rclcpp库下出现红色波浪线的情况
不用慌,这个也并不影响我们的运行,但如果对这个比较在意的可以进入编译路径的地方,将rclcpp的库路径导入进去
这里我的路径很多是自动生成的,但是要将最主要的两个添进去
"${workspaceFolder}/**",
"/opt/ros/foxy/include/**",
3、编译功能包
按住ctrl+~建在vscode中打开终端,colcon build命令对功能包进行编译,在输入该命令前需要返回到工作空间目录下。
该命令会编译工作空间中的所有功能包,如果工程比较大,功能包比较多的时候,编译所有功能包会需要很长的时间,所有我们经常需要只编译工作空间中的一个功能包,可以使用以下命令来编译工作空间中的一个功能包colcon build --packages-select package_name
colcon build --packages-select pkg_hello_cpp
编译完之后我们可以看到在工作空间目录下多了几个文件夹,install、log、build,这三个文件夹分别是用于存储编译后的执行文件、日志文件和编译的过程文件。
4、运行节点
检验以下是否代码正常运行有无报错
在运行之前先告诉编译器,我们要开始运行了,并将其位置告诉它
. install/setup.bash
最后输入以下代码将此节点运行出来
ros2 run pkg_hello_cpp hellovscode
最后,成功的将代码运行出来了