ROS1学习之编写一个发布者节点

本篇文章介绍我是如何在ROS上编写一个ROS Publisher节点的。

一.准备工作

在编写一个发布者节点之前,首先得需要有一个工作空间,方便进行相关的操作和后续代码的编写。在ROS中工作空间是存放ROS功能包的目录结构,而功能包是ROS中代码和配置文件的基本单元。

在终端依次运行如下命令:

mkdir -p ~/catkin_ws/src                # 创建工作空间目录           

cd ~/catkin_ws/src/                               #进入工作空间

catkin_init_workspace                   #初始化工作空间

生成CMakeLists.txt

cd ~/catkin_ws                         #返回工作空间根目录

catkin_make                           #对工作空间进行编译

生成devel和build文件夹

配置环境变量

source ~/catkin_ws/devel/setup.bash

这是临时生效的环境配置,仅对当前终端窗口有效

echo "source ~/catkin_ws/devel/setup.bash">>~/.bashrc

source ~/.bashrc

永久有效,添加到‘.bashrc’

查看环境变量来验证工作空间是否正确配置。

echo $ROS_PAKAGE_PATH

输出应该包含‘/home/用户名/catkin_ws/src’

到这里,我们就完成了一个工作空间的建立,和工作环境的配置。

接下来,我们完成ROS包的创建。

cd ~/catkin_ws/src

#进入工作空间下的src目录

catkin_create_pkg my_package roscpp rospy std_msgs

#创建名为‘my_package’的包

返回根目录并重新编译

cd ~/catkin_ws && catkin_make

到这里我们就完成了一个功能包的创建。

二.发布者节点的编写

1.使用vscode打开my_package

在my_package下的src目录下,创建一个test_node.cpp文件,用作发布者节点的编写。

2.发布者节点的编写

打开test_node.cpp,输入如下代码,保存。

#include <ros/ros.h>

#include <std_msgs/String.h>

//引入ros消息库中的String消息类型

int main(int argc,char *argv[]){

ros::init(argc,argv,"test_node");

//初始化ROS节点

printf("仗剑当空千里去,一更别我二更回!\n");

//节点大管家

ros::NodeHandle nh;

//创建一个发布者(Publisher)对象

ros::Publisher pub = nh.advertise<std_msgs::String>("chatter",10);

//设置频率对象

ros::Rate loop_rate(10);

while(ros::ok()){

//持续循环,直到ROS节点需要终止

printf("一仗高,随我斩妖除魔!\n");

std_msgs::String msg;

//定义一个ROS标准消息类型(String类型)

msg.data = "剑气长存";

//定义消息数据

pub.publish(msg);

//发布信息

loop_rate.sleep();

//频率设置

}

return 0;

}

3.    修改CMakeLists.txt文件

在文件的末尾输入如下代码:

add_executable(test_node src/test_node.cpp)

#用于定义如何将C++源代码文件编译成可执行文件

target_link_libraries(test_node

${catkin_LIBRARIES}

)

#将ros功能所需要的库链接到名为test_node的可执行文件

三.节点的运行

1.roscore

开启一个终端,运行roscore

该命令是初始化ROS环境并启动关键基础服务

2.rosrun my_package test_node

这里启动test_node节点,发布命令。

运行结果如下:

四.对话题的查看

  在ROS1中查看当前系统中的话题,常见的命令是rostopic,共有如下几种命令:

1.rostopic list:列出系统中所有活跃着的话题。

2.rostopic echo 主题名称(例:/chartter):显示指定话题中发送的消息包内容。

消息包中的内容可以通过echo -e []来进行查看

3.rostopic hz 主题名称:统计指定话题中消息包的发送频率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值