ros1 基础学习04- 自定义Publisher消息编程实现示例

news2024/11/19 12:44:35

整理步骤

cd进入工作空间下的代码空间, 创建功能包,并配置依赖
在功能包里面的代码空间里编写C++代码文件
在cmakelist文件里面配置编译规则
cd到工作空间,编译工作空间,source设置环境变量
打开roscore, 运行海龟仿真节点,运行功能包里发布者的节点

话题模型

在这里插入图片描述

1. 创建功能包

 cd ~/catkin_ws/src
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
  1. 新增发布代码

在 ~/catkin_ws/src/learning_topic/src 目录下,创建 velocity_publisher.cpp 文件

velocity_publisher.cpp 文件内容如下:

//代码
/**
 * 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
 */
 //引入包
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
 
int main(int argc, char **argv)
{
    // ROS节点初始化
    ros::init(argc, argv, "velocity_publisher");
 
    // 创建节点句柄
    ros::NodeHandle n;
 
    // 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10
    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
 
    // 设置循环的频率
    ros::Rate loop_rate(1);

    while (ros::ok())
    {
        // 初始化geometry_msgs::Twist类型的消息
        geometry_msgs::Twist vel_msg;
        vel_msg.linear.x = 0.5;
        vel_msg.angular.z = 0.2;
 
        // 发布消息
        turtle_vel_pub.publish(vel_msg);
        ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", 
                vel_msg.linear.x, vel_msg.angular.z);
 
        // 按照循环频率延时
        loop_rate.sleep();
    }
 
    return 0;
}

3.配置发布者代码编译规则

打开功能包 learning_topic 中的 CMakeLists.txt 文件,设置需要编译的代码和生成的可执行文件,以及设置链接库

在这里插入图片描述

add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})

4. 编译功能包

cd ~/catkin_ws

catkin_make

设置环境变量

source devel/setup.bash

编译如果报错看看是否是权限问题,切换到root 用户试试

5 测试验证

  1. 启动ros 主节点
roscore
  1. 启动小乌龟节点
rosrun turtlesim turtlesim_node
  1. 启动发布小乌龟位置消息的节点
rosrun learning_topic velocity_publisher

启动找不到功能包报错试试 如果出现 [rospack] Error: package ‘learning_topic’ not found
错误,输入命令 gedit ~/.bashrc,然后在末尾添加 source
/home/XXX/catkin_ws/devel/setup.bash,XXX为自己的用户名,保存该文件,然后重启终端。

在这里插入图片描述

到这基本上已经完成一个简单的自定义消息节点的实现。

6 再编译

假如说我们需要调整下里面的代码,比如改变小乌龟移动的速度,我们就改变

 // 设置循环的频率
    ros::Rate loop_rate(1);

将1 改成10 或者100

然后重新编译

cd ~/catkin_ws

catkin_make

然后重启

rosrun learning_topic velocity_publisher

我们就可以看到小乌龟的移动速度变快了。其他的自定义发布消息同理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1196185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

U-Mail邮箱系统,政务邮箱国产化改造优质之选

近年来&#xff0c;我国电子政务进入了全面铺开快速发展的阶段&#xff0c;政府机构的信息化管理能力也大幅提升。但是&#xff0c;随着国际形势的新变化&#xff0c;国家主管部门陆续出台相关政策&#xff0c;全面指导并要求政府机构落实国产化信息技术建设。因此&#xff0c;…

asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net学院网上报销系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net学院网上报销系统 应用技术…

C++入门 1——命名空间,缺省参数

C入门 一.前言二.命名空间2.1命名空间的定义2.2命名空间的使用 三.C的输入&输出四.缺省参数4.1概念4.2缺省分类 五.函数重载5.1概念5.2函数重载条件及代码 六.引用6.1概念6.2引用特性6.3常引用6.4使用6.5引用和指针的区别和联系 七.内联函数7.1概念7.2特性 一.前言 今天就…

[C++ ]:7.内存管理+模板引入。

内存管理模板引入 一.内存管理&#xff1a;1.内存区域划分图&#xff1a;2.区域划分实例&#xff1a;3.C 内存管理方式&#xff1a;newdelete4.自定义类型的new和delete&#xff1a;一.简单类&#xff1a;二.日期类&#xff1a;三.栈类&#xff1a;四.队列类&#xff08;栈实现…

KT6368A蓝牙芯片的距离天线周围的匹配元器件LC,能增加距离吗

一、简介 KT6368A蓝牙芯片的距离&#xff0c;以及天线周围的元器件&#xff0c;电感和电容&#xff0c;添加上去是否可以增加距离&#xff1f; 详细描述 关于蓝牙芯片的rf性能&#xff0c;也就是距离&#xff0c;其实中规中矩吧&#xff0c;但是达到20米还很简单的&#xff…

git02->gui图形化界面使用,ssh协议,idea集成GIT

gui图形化界面使用ssh协议idea集成GIT 1.gui图形化界面使用 2.ssh协议 git/github生成密钥并通过 操作分为本地电脑配置和github网站配置 第一步&#xff1a;本地电脑配置 右键空白处&#xff0c;选择Git Bash Here打开相关命令窗口 1.配置用户名和邮箱&#xff08;如果已经配…

jenkins通知

构建失败邮件通知 配置自己的邮箱 配置邮件服务&#xff0c;密码是授权码 添加构建后操作 扩展 配置流水线 添加扩展 钉钉通知 Jenkins安装钉钉插件 钉钉添加机器人 加签 https://oapi.dingtalk.com/robot/send?access_token98437f84ffb6cd64fa2d7698ef44191d49a11…

对于线程的收尾

一)对于synchronized的锁策略: synchronzed是一个自适应的锁&#xff0c;应该根据具体情况来决定选取那种锁策略&#xff1b; 1)synchronized既是一个乐观锁又是一个悲观锁&#xff0c;一开始是一个乐观锁&#xff0c;但是如果发现锁冲突的概率比较高&#xff0c;就会自动转化成…

华为防火墙双机热备主备备份和负载分担配置案例(两端为路由跑ospf)

FW1 hrp enable hrp interface GigabitEthernet1/0/2 remote 172.16.0.2 hrp ospf-cost adjust-enable 这条命令会自动把主设备standby的ospf的值调整为65000&#xff0c;再加上原来的默认cost开销值&#xff0c;如果是active则cost值不调整&#xff0c;为默认开销值。 interf…

为什么继电器上会有多组电压/电流标识

问题 玩过继电器的朋友一定会注意到这么一个细节&#xff0c;大部分的继电器上&#xff0c;都会标有多组电压电流参数&#xff0c;就比如下面的继电器&#xff0c;一共有三组电气参数&#xff1a; 10A 250V AC &#xff08;250V交流情况下&#xff0c;最大电流10A&#xff09;…

为什么单片机内不继承晶振

一、晶振是什么&#xff1f;有什么作用&#xff1f; 晶振&#xff08;Crystal Oscillator&#xff09;是一种基于晶体材料的振荡器&#xff0c;用于提供稳定的振荡信号。晶体是一种可通过机械振动在电场作用下产生相应电压的物质。晶振由晶体与电路共同组成&#xff0c;晶体负责…

Labview利用声卡捕获波形

一般的计算机上自带的声卡&#xff0c;均既有A/D功能&#xff0c;又有D/A功能&#xff0c;就是一款具备基本配置的数据采集卡&#xff0c;并且技术成熟&#xff0c;性能稳定。 后台如下&#xff1a;

java命令行中文乱码原理和解决方式

今天发现用命令行javac编译文件时&#xff0c;若文件里有中文的话&#xff0c;可能会因为“源文件和javac编译使用的编码方式不同”导致乱码的产生&#xff0c;一般我的源文件用的是utf-8编码&#xff0c;但今天查资料发现javac默认使用系统的GBK编码方式&#xff0c;会出现乱码…

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph--google镜像chatgpt

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph download 环境 uname -a #Linux whiltez 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linuxwhich javac #/adoptopen-jdk8u332-b09/bin/javac which java #/adoptopen-jdk8u33…

Leetcode刷题详解——电话号码的字母组合

1. 题目链接&#xff1a;17. 电话号码的字母组合 2. 题目描述&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。…

信通院发布的 “信息系统稳定性保障能力建设指南” 有点干货

刚刚看了信息系统稳定性实验室、中国信息通信研究院云计算与大数据研究所联合发布的 信息系统稳定性保障能力建设指南&#xff0c;感觉还是有点干货的。 节选如下&#xff1a; 概括的比较全 关键指标 行业案例 免费在线阅读和下载地址&#xff1a;信息系统稳定性保障能力建设指…

strerror函数详解之【错误码探秘】

目录 一&#xff0c;strerror函数简介 二&#xff0c;strerror函数的基本用法 三&#xff0c;errno变量 一&#xff0c;strerror函数简介 当程序出现错误时&#xff0c;了解错误的具体信息对于调试和修复问题至关重要。在C语言中&#xff0c;我们可以使用strerror函数来获取…

electron 内部api capturePage实现webview截图

官方文档 .capturePage([rect]) rect Rectangle (可选) - 要捕获的页面区域。 返回 Promise - 完成后返回一个NativeImage 在 rect内捕获页面的快照。 省略 rect 将捕获整个可见页面。 async function cap(){ let image await webviewRef.value.capturePage() console.log(im…

PowerPoint to HTML5 SDK Crack

Convert PowerPoint to HTML5 Retaining Animations, Transitions, Hyperlinks, Smartart, Triggers and other multimedia effects World’s first and industry best technology for building web/mobile based interactive presentations directly from PowerPoint – that …

法治智能起航 | 拓世法宝AI智慧政务一体机重塑法治格局,开启智能司法新篇章

在科技的巨轮推动下&#xff0c;我们的社会正快速迈向一个以数据和智能为核心的新时代。在这个波澜壮阔的变革中&#xff0c;人工智能&#xff08;AI&#xff09;显得尤为突出&#xff0c;它不仅是科技进步的象征&#xff0c;更是未来发展的助力者。 2023年&#xff0c;最高人…