特别感谢B站UP主机器人工匠阿杰的ros教学视频,本文根据视频内容生成了笔记,用来复习。
步骤:
1.进入工作空间的src目录
cd catkin_ws/src
2.使用catkin_create_pkg创建一个功能包
catkin_create_pkg 功能包名 依赖项
3.打开VSCode,将工作区间catkin_ws的src文件夹添加到VSCode工作区
4.在功能包的src目录下新建cpp节点源码文件
5.包含ROS头文件
#include<ros/ros.h>
6.构建main函数,可通过main+Tab快捷键自动补全函数
int main(int argc, char const *argv[])
{
return 0;
}
7.在main函数开头初始化ros节点
ros::init(argc,argv,"节点名称");
问题:此时会出现init函数参数类型不匹配的错误,如图:
解决方法:去掉main函数的第二个参数的const
#include<ros/ros.h>
int main(int argc, char *argv[])
{
ros::init(argc,argv,"chao_node");
return 0;
}
8.构建while循环,循环条件为ros::ok()函数,以响应外部
while(ros::ok())
{
printf("dmu_hxy\n");
}
9.在功能包下的CMakeLists.txt文件中设置节点源码的编译规则
注意:这里是功能包下的CMakeLists.txt文件,而不是整个工作区间的CMakeLists.txt文件
10.编译
(1)通过VSCode快捷键ctrl shift b编译
(2)通过在catkin_ws工作空间中使用catkin_make编译
11.运行
首先运行ros系统核心
roscore
接着运行功能包下的节点
rosrun 功能包名 节点名
源码如下:
// 包含ros头文件
#include<ros/ros.h>
int main(int argc, char *argv[])
{
// 初始化ros节点,其中chaonode为节点名称
ros::init(argc,argv,"chao_node");
// 循环条件为ros::ok(),可响应外部信号
while(ros::ok())
{
printf("dmu_hxy\n");
}
return 0;
}
运行结果如下: