[ros][ubuntu]ros在ubuntu18.04上工作空间创建和发布一个话题

构建catkin工作空间

 mkdir -p ~/catkin_ws/src  

 cd ~/catkin_ws/src

 catkin_init_workspace

 cd ~/catkin_ws/

 catkin_make

配置环境变量

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

检查环境变量

 echo $ROS_PACKAGE_PATH

遇到错误:上面操作不需要用sudo 进行操作,但是由于初学者可能存在操作不当导致错误

ros catkin_maked的时候报错误代码: 
The specified base path “/home/ubuntu/catkin_ws” contains a CMakeLists.txt but “catkin_make” must be invoked in the root of workspace…..

出现这种情况的原因是catkin_init_workspacce的时候,出现下面这句: 
Creating symlink “/home/ubuntu/catkin_ws/CMakeLists.txt” pointing to “/opt/ros/indigo/share/catkin/cmake/toplevel.cmake”

将当前工作空间下的CMakeLists.txt与/ros/下的cmake做了链接

解决方法: 
unlink /home/youpath/catkin_ws/CMakeLists.txt 

发布一个话题案例:

创建功能包

cd ~/catkin_ws/src
catkin_create_pkg package1 roscpp rospy std_msgs

使用命令cd ~/catkin_ws/src 进入代码空间,并在代码空间中创建功能包

使用catkin_create_pkg创建名为package1的功能包,功能包的支撑库为roscpp rospy和std_msgs,创建功能包的命令格式为catkin_create_pkg <package_name> [depends1] [depends2] [depends3]。此时~/catkin_ws/src路径下会出现两个文件,一个是CMakeLists.txt另外一个则是我们的功能包package,在package路径下会出现4个文件,分别是include文件夹(用于存放类似于.h的头文件),src文件夹(用于存放cpp文件),CMakeLists.txt(指定编译的规则),package.xml(支持包的相关信息,如果后续文件需要扩展就在此文件中增加相关的库),到此功能包已经创建完毕,后续还需要修改CMakeLists.txt更新我们的编译规则,但在此之前我们需要新建一个cpp源码。

cd ~/catkin_ws/src/package1/src
touch pub_node_test.cpp

进入~/catkin_ws/src/package1/src文件夹,使用touch命令创建一个cpp文件,在cpp文件中输入以下内容。

#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc,char **argv)
{ros::init(argc,argv,"talker");  //初始化ros::NodeHandle n;              //创建句柄ros::Publisher chatter_pub  = n.advertise<std_msgs::String>("chatter",1000);  //设定话题名称为chatter,并且缓存队列长度为1000,用于平衡硬件发送速度ros::Rate loop_rate(10);   //设置发送波特率为10HZ,与后面的loop_rate.sleep();相互呼应,如果下一帧信息不满足频率要求系统则会延时int count = 0;   while(ros::ok()){std_msgs::String msg;std::stringstream ss;ss<<"first example!"<<count;msg.data = ss.str();ROS_INFO("%s",msg.data.c_str());chatter_pub.publish(msg);ros::spinOnce();loop_rate.sleep();++count;}return 0;
}

以上代码创建了一个名为talker的节点,该节点通过"chatter"话题发布消息

然后修改package1功能包中的CMakeList.txt文件.打开CMakeLists.txt文件并在里面输入以下内容。

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

这样就可以在devel/lib文件夹下生成名为pub_node的可执行文件了,这两条编译码的一般格式如下:add_executable([可执行文件名] src/[cpp文件名]) target_link_libraries([可执行文件名] ${catkin_LIBRARIES})

回到工作空间下并使用catkin_make编译整个工作空间

cd ~/catkin_ws
catkin_make

打开一个新终端,使用如下命令即可运行刚编译生成的可执行文件

rosrun package1 pub_node

显示界面如下:

工作空间及消息创建成功!使用rostopic list可以看到会出现一个新的名为chatter的话题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解I2C

I2C&#xff08;也常写作 I I C IIC IIC&#xff0c; I 2 C I^2C I2C&#xff09;&#xff0c;全称为Inter-Integrated Circuit&#xff08;“互连集成电路”&#xff09;&#xff0c;用于在集成电路之间进行短距离数据传输。它由Philips&#xff08;现在的NXP半导体&#xff0…

Python爬虫基础之正则表达式

目录 一、什么是正则表达式&#xff1f; 二、re.compile()编译函数 三、group()获取匹配结果函数 四、常用匹配规则 4.1匹配单个字符 4.2匹配前字符次数 4.3匹配原生字符串 4.4匹配字符串开头和结尾 4.5分组匹配 五、re.match()开头匹配函数 六、re.search()全文搜索…

恒流电路的三种设计方案

作为硬件研发工程师相信对恒流电路不会陌生&#xff0c;本文介绍下三种恒流电路的原理图。 三极管恒流电路 三极管恒流电路 三极管的恒流电路&#xff0c;主要是利用Q2三极管的基级导通电压为0.6~0.7V这个特性&#xff1b;当Q2三极管导通&#xff0c;Q1三极管基级电压被拉低而…

lnmp架构-mysql2

4.mysql 组复制集群 首先对所有的节点重新初始化 因为对节点的数据一致性要求非常高 主从复制的时候 slave只会复制master的binlog日志 就是二进制日志 不会复制relay_log 在server1上 根据实际情况修改主机名和网段 log_slave_updateON 意思就是 当slave的sql线程做完之后…

【Unity-Cinemachine相机】虚拟相机(Virtual Camera)的本质与基本属性

我们可以在游戏进行时修改各个属性&#xff0c;但在概念上&#xff0c;最好将Virtual Camera 当作一种相机行为的“配置文件”&#xff0c;而不是一个组件。 我们的相机有几种行为就为它准备几种虚拟相机&#xff0c;比如角色移动就为它第三人称相机&#xff0c;瞄准就准备一个…

Ubuntu搭建web站点并发布公网访问【内网穿透】

文章目录 前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子域名 前言 网&#xff1a;我们通常说的是互联网&#xff1b…

Java设计模式:四、行为型模式-06:观察者模式

文章目录 一、定义&#xff1a;观察者模式二、模拟场景&#xff1a;观察者模式2.1 观察者模式2.2 引入依赖2.3 工程结构2.4 模拟摇号2.4.1 摇号服务接口2.4.2 摇号返回结果类 三、违背方案&#xff1a;观察者模式3.0 引入依赖3.1 工程结构3.2 添加摇号接口和实现3.2.1 摇号服务…

【锁】定时任务推送数据-redission加锁实例优化

文章目录 redission 加锁代码-有问题优化代码看门狗是什么&#xff1f; redission 加锁代码-有问题 /*** 收货入库物料标签(包装码)推送接口** throws Exception*/public void synReceiveMaterialTags() throws Exception {String tag DateFormatUtils.format(new Date(), &qu…

昨天面试的时候被提问到的问题集合(答案)

1、vue的双向绑定原理是什么&#xff1f;里面的关键点在哪里&#xff1f; Vue的双向绑定原理是基于Object.defineProperty或者Proxy来实现的&#xff0c;其关键点在于数据劫持&#xff0c;即对数据的读取和修改进行拦截&#xff0c;在数据发生变化时自动更新视图 2、实现水平垂…

frida动态调试入门01——定位关键代码

说明 frida是一款Python工具可以方便对内存进行hook修改代码逻辑在移动端安全和逆向过程中常用到。 实战 嘟嘟牛登录页面hook 使用到的工具 1&#xff0c;jadx-gui 2&#xff0c;frida 定位关键代码 使用jadx-gui 进行模糊搜索&#xff0c;例如搜索encyrpt之类的加密关键…

深入解析即时通讯App开发中的关键技术

即时通讯App开发在现代社交和通信领域中扮演着重要的角色。随着移动设备的普及和网络的高速发展&#xff0c;人们对即时通讯工具的需求不断增加。本篇文章将深入探讨即时通讯App开发中的关键技术&#xff0c;帮助读者了解该领域的最新动态和技术趋势。 基础架构和通信协议 现…

《Java极简设计模式》第05章:原型模式(Prototype)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

如何使用Unity制作一个国际象棋

LinnoChess1.0 该项目旨在做一些Unity小游戏项目开发来练练手 如果有更新建议请私信RWLinno 项目地址&#xff1a;https://github.com/RWLinno/LinnoChess 目前效果 能够正常下棋&#xff1b;能够编辑棋盘&#xff1b;能够SL棋局&#xff1b;能够记录棋谱&#xff1b;能够显…

机器学习——聚类算法一

机器学习——聚类算法一 文章目录 前言一、基于numpy实现聚类二、K-Means聚类2.1. 原理2.2. 代码实现2.3. 局限性 三、层次聚类3.1. 原理3.2. 代码实现 四、DBSCAN算法4.1. 原理4.2. 代码实现 五、区别与相同点1. 区别&#xff1a;2. 相同点&#xff1a; 总结 前言 在机器学习…

03-MySQL

1、什么是BufferPool&#xff1f; 1.1、Buffer Pool基本概念 Buffer Pool&#xff1a;缓冲池&#xff0c;简称BP。其作用是用来缓存表数据与索引数据&#xff0c;减少磁盘IO操作&#xff0c;提升效率。 Buffer Pool由缓存数据页(Page)和 对缓存数据页进行描述的控制块 组成,…

【基于空间纹理的残差网络无监督Pansharpening】

Unsupervised Pansharpening method Using Residual Network with Spatial Texture Attention &#xff08;基于空间纹理的残差网络无监督泛锐化方法&#xff09; 近年来&#xff0c;深度学习已经成为最受欢迎的泛锐化工具之一&#xff0c;许多相关方法已经被研究并反映出良好…

day27 String类 正则表达式

String类的getBytes方法 String s "腻害"; byte[] bytes s.getBytes(StandardCharsets.UTF_8); String类的new String方法 String ss "ss我的"; byte[] gbks ss.getBytes("gbk"); String gbk new String(gbks, "gbk"); String类的…

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之数码管动态显示(五)

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处 适用于板卡型号&#xff1a; 紫光同创PGL22G开发平台&#xff08;盘古22K&#xff09; 一&#xff1a;盘古22K开发板&#xff08;紫光同创PGL22G开发…

【防火墙】防火墙NAT Server的配置

Web举例&#xff1a;公网用户通过NAT Server访问内部服务器 介绍公网用户通过NAT Server访问内部服务器的配置举例。 组网需求 某公司在网络边界处部署了FW作为安全网关。为了使私网Web服务器和FTP服务器能够对外提供服务&#xff0c;需要在FW上配置NAT Server功能。除了公网…

Questa Sim使用教程仿真-示例

Questa Sim0基础仿真教程 文章目录 一、 打开软件二、运行编译后的文件 一、 打开软件 1、新建工程 File -> New -> project 2、填写工程名称和工程位置然后点"ok" 3、编写或者添加文件&#xff0c;这里直接添加一个编写好的反相器的文件。 可关注公众号&a…