使用vm(虚拟机简称)安装ubuntu18(linux系统)安装ROS,创建ROS工作空间时间消息订阅发布的基本功能

CSDN话题挑战赛第2期

参赛话题:学习笔记

windos安装的虚拟机vm,然后安装的Ubuntu18系统,进行ros的学习,不难,下一步看着点就可以安装成功了,然后一些的基本配置,ubuntu的账号密码啊,网络的配置啊,这些网上都有,高度概括一下就行不懂的可以去找别人的博客看看。

一 、可以通过ROS的官网文档进行ROS的安装不管是ROS1还是ROS2官网都有,这里本人装的是ROS1

        1.1 cn - ROS Wiki 中文文档

        1.2 ROS Wiki 英文文档

二、安装完之后对工作环境的创建 图解

2.1 进入主目录  cd ~

2.2 创建多级目录 mkdir -p demo06_ws/src

 2.3 初始化第一个目录 第一步:cd demo06_ws  第二步 catkin_make

        使用catkin_make会自动生成两个文件一个是build一个是devel,devel后期用的挺多的,build我不知道

2.4   进入 src目录创建工作空间 第一步: cd src 第二步: catkin_create_pkg 空间名 roscpp rospy std_msgs (三个基本的包,开发中根据自己实际情况使用包~)

 基本创建已经结束接下来进行基本的 消息订阅/消息发布

3.1 根据自己实际情况选择开发语言,这里本人主要介绍一下python(不要问,问就是不会c)

        进入刚刚创建好的工作空间下进行创建一个文件夹,名字为 scripts 必须是这个玩意不然不知道,八成是改那个CMakeList.txt的一个配置文件,它那个160多行有怎么一个说明

 3.2 创建好文件夹再在这个文件夹创建一个py文件名字随便自己看的懂就行,创建完了就先改文件权限在改CMaklist.txt里的配置信息如

        先cd到当前py文件目录下

        使用ll(小写L)查看当前目录下文件的权限,(应该是)

         并没有查看到刚刚创建的文件拥有可执行的权限现在进行添加权限

        可以是 chmod +x *.py (给当前目录下的所有py文件添加可执行权限)

        或者是 chmod +x  文件名.py (指定某某文件有执行权限) 自由选择

3.3 通过修改配置文件Cmaklist.txt文件让程序找到当前须要执行的py文件,当前文件一般在于工作空间那个目录下与scripts和工作空间下的src目录同级

3.4 对 svcode执行任务修改,开发软件自选,不强求喜欢就好

        这里本人使用vscode对py文件进编写,如果你也是使用vscode的话哪些插件改装的都装了像是python or c/c++  or orss 等必要的插件

        然后使用 shift + ctrl + b 选择 cakin_make_isolated:build 右边的齿轮对文件编译

{
	"version": "2.0.0",
	"tasks": [
		{
			"label"  : "catkin_make:debug",  //代表提示的描述信息
			"type": "shell",// 可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是oricess则是多个
			"command":"catkin_make",//这个是我们需要运行的命令
			"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACLAGES
			"group":{"kind":"build","isDefault":true},
			"presentation":{
				"reveal":"always" , // 可选always或者silence,代表是否输出信息
			},
			"problemMatcher": "$msCompile",
			
		}
	]
}

    3.5 前期准备也差不多了准备开发 py 文件 发布者py文件编写

#! /usr/bin/env python 
'''
上面的是为当前文件选一个python环境
下面的是编码方式

'''
# coding=utf8

import rospy  # 倒入rospy基本模块
from std_msgs.msg import String # 倒入消息类型模块

if __name__ =="__main__":  # 文件主路口
    msg = String()  # 实例化
    rospy.init_node("pub_message") # 设置当前节点名
    pub = rospy.Publisher("message",String,queue_size=10) # 生成实例对象,对message进行发布,消息类型为string字符串类型,消息大小为10
    count = 0 # 计数器初始化
    rate  = rospy.Rate(1) # 设定休眠时间 单位s (大概)
    while not rospy.is_shutdown(): # 判断当前节点消息是否存在 存在返回 Flase 不存在 True
        msg.data = "this is message" + str(count) # 消息主题都是在data中存在,往data里面塞消息 
        pub.publish(msg) # 发送消息
        count +=1 # 计数器+1
        rospy.loginfo("发送的消息为%s",msg.data) # 打印消息相当于print
        rate.sleep()  # 对数据进行一个暂停相当于time.sleep() 一个休眠

        这样就能无限死循环发布消息了对当前订阅的mesage结点发送this is message 计数器 的一个类似的消息

3.6 编写一个 订阅结点,用来接收发布者发布的消息

        创建一个新的py文件来进行订阅

#! /usr/bin/env python 
'''
上面的是为当前文件选一个python环境
下面的是编码方式

'''
# coding=utf8
def DoMessage(msg):
    rospy.loginfo("接受的消息为%s",msg.data)

import rospy  # 倒入rospy基本模块
from std_msgs.msg import String # 倒入消息类型模块

if __name__ =="__main__":  # 文件主路口
    rospy.init_node("sub_message") # 设置当前节点名
    sub = rospy.Subscriber("message",String,DoMessage,queue_size=10) # 生成实例对象,对message进行发布,消息类型为string字符串类型,DoMessage一个方法,用来对接受的西悉尼操作消息大小为10
    rospy.spin() # 最后声明
    

3.7 修改文件权限和配置文件 接收者py文件

        cd  到当前工作环境下的scripts文件使用 chmod +x *.py 对py文件的权限修改

4.1 文件编写完了之后就开始执行首先先在vscode执行一下 shift + ctrl + b 刚刚编写的任务不报错就没事儿

4.2 然后打开终端跑一下ros,命令 roscore

4.3 在打开一个终端跑发布者文件 可以使用shift +crtl + t 快速打开终端 先进入刚刚的文件根目录中

        先对文件进行编译一下,之后执行那个文件都需要先编译一下在执行如

        source ./devel/setup/bash  可以使用tab补齐路劲/命令 等

        然后执行发布py文件 会报错emm果然前面那俩中间不能有注释,现在删除了都已经知道啥意思了可以删了,删除完使用 rosrun 命令 rosrun 工作空间名 py文件名

        rosrun work_room pub_message.py

 

         效果

4.4 然后订阅者接受消息跟上面差不多,新建终端进入更目录,初始化,然后rosrun

        效果 

 这样就能够完成一个简单的消息订阅发布模式,通过对message结点的订阅和发布使得发布方发布消息,接收方接受发布方发布的消息,类似于一个下图的一种结构

        

        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清夢懮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值