【ROS学习02】读懂节点

CMakeLists.txt

02e9ec21f49f49878e149c292c4e88a9.png

package.xml

【packbag 必备文件】主要是对软件包的描述

131e492a57e444569ab6b0b283bb1913.png

a044f07c02ef478cbbf9aa595e7bbd98.png

创建文件

a1463e97ec184e968d5eb43756c4e55c.png

#include <ros/ros.h>

int main(int argc, char const *argv[])
{
    printf(
        "hello world!\n"
    );
    return 0;
}

记得保存,小圆点表示没保存

在文件里为新建的节点创建编译规则

0df288c1e8994e4e91c2c85e54f97e3e.png

0a00d5b2976040ef96a3644a3e9876a9.png

复制放在文件末尾

1497dce0d4694dbb9db12aba7f76dbdf.png

06c831ae7c074831980dca9b7c5cfa27.png

总结

ros节点本身就是一个应用程序!

关联ros

eb1845a9f44241b1abccff999a97358f.png

这样会报错

05338ffc364c4052b54e2a9cd06c28b4.jpeg

报错提示:参数列表不匹配,

此时ctrl+shift+B编译会报错,未包含ros::init所包含的库。所以需要把这个函数的库包含进来,链接起来。

来到文件末尾,删除掉注释。选中句子,ctrl + /

再保存编译即可。

终端执行!

一定要启动

roscore

死循环

一般情况下,会想到使用while Ture

#include <ros/ros.h>

int main(int argc, char *argv[])
{
    ros::init(argc,argv,"chao_node");
    printf(
        "hello world!\n"
    );
    while (true)
    {
        printf("i am fine ~");
    }
    
    return 0;
}

程序会被卡死,无法使用快捷键终止程序。于是一般ros的死循环写作

while(ros::ok())

ctrl + c终止

总结

  1. 使用catkin_create_pkg创建一个软件包
  2. 在软件包的src文件夹下创建一个节点的cpp源码文件
  3. 在节点的源码文件中include包含ROS的头文件
  4. 构建一个main函数,并在开头执行ros::init()初始化
  5. 构建while循环,循环条件为ros::ok()
  6. 在CMakeLists.txt中设置节点源码的编译规则
  7. 编译运行
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值