ROS学习(三)

一、 node & package 定义

1. node

ROS 中的节点 node 类似于 android 中的 app。在使用 ROS 的时候实际上是在使用 ROS 中的某一个或者某一些 node。

这些 node 的作用有:建图(GMapping)导航(Move_base)控制底盘(wpb_core)驱动雷达(rplidar_ros)

2. package

尽管是只使用一个 node,但必须以该 node 所在的 package 为单位进行安装 。

ROS 使用 CMake 和 catkin 作为编译工具 ,把散落的 node 进行规整 。

可以将包理解为 node 的容器 。

二、 第一个 node 节点

目的是要创建一个节点(new _node),把该节点放到第一个包(new_pkg)中 。

1. 工作空间设置

进入编译器操作

2. 创建 package 包

进入源码文件的存放目录 src 中

cd catkin_ws/src/

创建第一个包(new_pkg)

catkin_create_pkg new_pkg rospy roscpp std_msgs

代码中后三项是依赖项(实质是通用节点包)。

3. 回访依赖项

从当前路径跳转到对应软件包地址

roscd roscpp

/ opt / ros / noetic / share

该路径中存放的都是现成的可执行的软件包,这些软件包是在安装ROS系统时或者通过 apt 指令安装的软件包 。

区别于工作空间 catkin_ws 中是源码文件,需要编译成可执行文件才能运行。

PS : .bashrc 中添加的两条 source 指令 ,不添加加载项的文件夹在编译时报错 。

source /opt/ros/noetic/setup.bash
source  ~/catkin_ws/devel/setup.bash

第一条指令加载通过 apt 下载的软件包地址 ,
第二条指令加载 catkin_ws 工作空间地址 。

4. 创建 node 节点

vscode 中 /new_pkg /src / 下创建 new_node.cpp 文件 。

#include<ros/ros.h>
#include<std_msgs/String.h>

int main(int argc , char *argv[])
{
	// :: 表示ros类作用域下的init函数
	ros::init(argc,argv,"new_node");	// 初始化ros节点
	printf("my first ros node here .");
return 0;
}

5. 源码编译

CmakeLists 文件为新节点添加编译规则

Declare a C++ executable // 136
Specify libraries to link a library or executable target against // 148

  1. vscode 中编译
    Ctrl+Shift+B

  2. catkin_ws 中编译
    在 catkin_ws 文件夹下输入进行源码编译

catkin_make

6. 运行 node 节点

启动 ros 核心

roscore

运行节点

rosrun new_pkg new_node

7. 保持节点运行

加入 while(ros::OK()) 。

三、 总结

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值