初学ROS,年轻人的第一个Node节点

特别感谢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;
}

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值