参赛话题:学习笔记
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结点的订阅和发布使得发布方发布消息,接收方接受发布方发布的消息,类似于一个下图的一种结构