奥特学园_ROS理论与实践
文章平均质量分 67
一个ros零基础教程:https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?spm_id_from=333.788.recommend_more_video.0
是刃小木啦~
年轻人,卷起来了
展开
-
饶不经就把ROS装好了!一行代码搞定系列!
文章转载于微信公众号【鱼香ROS】个人非常推荐赵虚左老师的ROS课程,有需求的同学可以去B站找找奥特学院的ros学习,还有赵虚左老师的个人账号。讲的非常细,真的是零基础和手把手。接着说说小鱼的一行代码解决方案,目前已经有了一行代码安装ROS,一行代码安装ROS2,一行代码搞定rosdepc,后面可以考虑做一个工具箱啦哈哈!第一波:一行代码安装ROSUbuntu20-Noeticsudo apt-get install curl && curl http://fish转载 2021-10-13 10:28:26 · 1038 阅读 · 0 评论 -
22th ROS通信机制实操01——话题(topic)(C++/Python)
一、引言本节主要是通过ROS内置的turtlesim案例,结合已经介绍ROS命令获取节点、话题、话题消息、服务、服务消息与参数的信息,最终再以编码的方式实现乌龟运动的控制、乌龟位姿的订阅、乌龟生成与乌龟窗体背景颜色的修改。二、话题发布2.1分析问题需求描述:编码实现乌龟运动控制,让小乌龟做圆周运动。实现分析:乌龟运动控制实现,关键节点有两个,一个是乌龟运动显示节点 turtlesim_node,另一个是控制节点,二者是订阅发布模式实现通信的,乌龟运动显示节点直接调用即可,运动控制节.原创 2021-08-30 10:04:07 · 618 阅读 · 0 评论 -
21th ROS通信机制中的常用命令
机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取对方的话题、以及消息载体的格式呢?在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:rosnode : 操作节点 rostopic : 操作话题 rosservice : 操作服务 rosmsg : 操作msg消息 rossrv : 操作srv消息 ro转载 2021-08-29 15:37:09 · 202 阅读 · 0 评论 -
20th 参数服务器的增、删、改、查操作实现(Python)
在上一讲中,实现了用C++来写参数服务器的增删改查操作,在本节,是使用python来实现相同的功能。一、增1.1新建文件#!/usr/bin/env python# -*- coding:UTF-8 -*- import rospy""" 演示:在参数服务器中新增和修改参数 在参数服务器中设置机器人属性:型号、半径 实现:rospy.set_param()"""if __name__ =="__main__": #初始化ros节点原创 2021-08-28 16:30:39 · 123 阅读 · 0 评论 -
19th 参数服务器的增、删、改、查操作实现(C++)
0.前言在 C++ 中实现参数服务器数据的增删改查,可以通过两套 API 实现: ros::NodeHandle ros::param 在上述两个API中,内置了增删改查的操作函数。在实现具体的功能前,要做一些准备工作。基于前面已经有较多的代码,于是决定新建一个工作空间,新建的方法不再赘述,不会的话,请转至 3rd. VSCode下开发ROS的基本流程(C++/Python)1. 增/改参数...原创 2021-08-28 14:55:56 · 437 阅读 · 0 评论 -
18th 参数服务器概述及理论模型
一、引言参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据,关于参数服务器的典型应用场景如下:导航实现时,会进行路径规划,比如: 全局路径规划,设计一个从出发点到目标点的大致路径。本地路径规划,会根据当前路况生成时时的行进路径(全局路径规划指整体的大方案,指导性文件一样,本地路径规划就是根据实际的情况进行调整,属于实际操作上的动作)简单来说,参数服务器就是一个仓库,不原创 2021-08-23 11:11:40 · 127 阅读 · 0 评论 -
加油站 弄懂main函数中的argc和argv
17th 服务通信_自定义srv调用实现(Python)16th 服务通信_自定义srv调用实现(C++)上面两篇博客中都用到了main函数的argc和argv,作为一个非科班出身的搞编程的,C++学的并不完整,遇到了有点懵,特此学习整理,仅供参考,如有错误,还望批评指正!一、初步了解两个参数的作用是什么呢?百度一波后,了解到argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。argc的全称是 : arguments count(参数计数)argv...原创 2021-08-23 09:39:53 · 2499 阅读 · 0 评论 -
17th 服务通信_自定义srv调用实现(Python)
前期工作:15th 服务通信自定义srv | 生成头文件一、需求及分析最终实现的效果和上一篇c++实现的效果一样。需求:编写服务通信,客户端提交两个整数至服务端,服务端求和并响应结果到客户端。分析:在模型实现中,ROS master 不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:服务端 客户端 数据二、实现2.0 VSCode配置不配置也是可以的,但是不能再vscode中代码自动补齐,且导报时VSCode会报错,但是不影响最终程序的运行,建议配原创 2021-08-22 19:30:11 · 757 阅读 · 1 评论 -
16th 服务通信_自定义srv调用实现(C++)
15th 服务通信自定义srv | 生成头文件一、目标及分析目标:编写服务通信,客户端提交两个整数至服务端,服务端求和并响应结果到客户端。分析:在模型实现中,ROS master 不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:服务端 客户端 数据二、实现方法(C++)2.0 配置VSCode不配置也是可以的,但是不能再vscode中代码自动补齐,且导报时VSCode会报错,但是不影响最终程序的运行,建议配置。使用pwd获得到路径。添..原创 2021-08-21 17:51:39 · 359 阅读 · 0 评论 -
15th 服务通信自定义srv | 生成头文件
一、实现目标服务通信中,客户端提交两个整数至服务端,服务端求和并响应结果到客户端,请创建服务器与客户端通信的数据载体。小tips:srv = 服务 + 响应流程:srv 文件内的可用数据类型与 msg 文件一致,且定义 srv 实现流程与自定义 msg 实现流程类似: 按照固定格式创建srv文件 编辑配置文件 编译生成中间文件 二、自定义srv实现1.新建功能包2. 新建文件夹、文件文件3.srv文件内容int32 num...原创 2021-08-20 16:53:18 · 252 阅读 · 0 评论 -
14th ROS中的服务通信机制的模型
一、前言服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。比如如下场景:机器人巡逻过程中,控制系统分析传感器数据发现可疑物体或人... 此时需要拍摄照片并留存。在上述场景中,就使用到了服务通信。作用:用于偶然的、对时时性有要求、有一定逻辑处理需求的数据传输场景。二、理论模型角色:1.ROS master--->管理者(相当于114平台) 2.Talker--->服务端(服务公司) 3...原创 2021-08-20 15:49:42 · 137 阅读 · 0 评论 -
13th 自定义msg的使用(Python实现)
一、功能要求和前面的C++一样:编写发布订阅实现,要求发布方以1HZ(每秒1次)的频率发布自定义消息,订阅方订阅自定义消息并将消息内容打印输出。流程:编写发布方实现; 编写订阅方实现; 为python文件添加可执行权限; 编辑配置文件; 编译并执行。二、实现2.0 VSCode配置2.1 发布方实现在scripts目录下新建一个.py文件:内容:#!/usr/bin/env python# -*- coding:UTF-8 -*- .原创 2021-08-19 16:52:41 · 638 阅读 · 0 评论 -
12th 自定义msg的使用之消息订阅方(C++)
一、目标编写发布订阅实现,要求发布方以10HZ(每秒10次)的频率发布自定义消息,订阅方订阅自定义消息并将消息内容打印输出。二、分析在模型实现中,ROS master 不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:发布方、接收方、数据(此处为自定义消息)流程:编写发布方实现; 编写订阅方实现; 编辑配置文件; 编译并执行。三、订阅方的实现创建文件:编写内容:#include<ros/ros.h>/* #include<st原创 2021-08-18 16:53:54 · 233 阅读 · 0 评论 -
11th 自定义msg的使用之消息发布方(C++)
一、目标编写发布订阅实现,要求发布方以10HZ(每秒10次)的频率发布自定义消息,订阅方订阅自定义消息并将消息内容打印输出。二、分析在模型实现中,ROS master 不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:发布方 接收方 数据(此处为自定义消息)流程:编写发布方实现; 编写订阅方实现; 编辑配置文件; 编译并执行。三、实现0.先配置VSCode(为了代码提示和误抛异常)这一步也可以不操作,但是最好操作将前面生成的 head 文件路径配置原创 2021-08-18 16:13:51 · 393 阅读 · 0 评论 -
10th ROS中话题通信自定义msg
一、前言ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty.... 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息(距离,角度,信号强度等各种数据类型的强度复合)... std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型。msgs只是简单的文本文件,每行具有字段类型和字段名称,可以使用的字段类型有: in原创 2021-08-18 15:00:40 · 411 阅读 · 1 评论 -
9th ROS中Python与C++的节点通信
1.什么是耦合?什么是解耦合?耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。解耦就是用数学方法将两种运动分离开来处理问题。7th ROS通信之话题通信的实现(最通俗版本)(C++实现)8th ROS通信之话题通信的实现(续)(Python实现方法)在上面两文中,分别通过C++和Python实现了发布者和订阅者。其实,python和c++可以混着用,比如c++的发布者,用python创建订阅者来订阅,即便语言不通,仍然可以进行数据交换。2. 交互原创 2021-08-10 17:50:44 · 1204 阅读 · 0 评论 -
8th ROS通信之话题通信的实现(续)(Python实现方法)
前篇:7th ROS通信之话题通信的实现(最通俗版本)小提示:1.python中对齐要求的很严格,对齐逻辑一定要注意!!Python 提示‘Unindent amount does not match previous indent‘解决方法:这是因为我们的代码中混用了空格键和TAB键,只需要将代码中的空位处全部统一为空格或者TAB即可!!!2.py文本中有中文时,需要在上面添加“# -*- coding:UTF-8 -*-“ 否则会报错:SyntaxError: Non-...原创 2021-08-10 17:22:53 · 439 阅读 · 0 评论 -
这样分析,应该能懂回调函数的大致意思(C/C++)
计算机的一切都是对现实生活的仿真,都能找到生活的对应的例子。回调的英语是callback,查了查百度,意思就是回拨电话的意思。简单地来说,回调就是打电话,请看这这两则例子:1. 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回原创 2021-08-10 09:13:10 · 187 阅读 · 0 评论 -
7th ROS通信之话题通信的实现(最通俗版本)(C++实现)
一、引言机器人在执行导航功能,使用的传感器是激光雷达,机器人会采集激光雷达感知到的信息并计算,然后生成运动控制信息驱动机器人底盘运动。一共有两次使用话题通信:以激光雷达信息的采集处理为例,在 ROS 中有一个节点需要时时的发布当前雷达采集到的数据,导航模块中也有节点会订阅并解析雷达数据。 再以运动消息的发布为例,导航模块会根据传感器采集的数据时时的计算出运动控制信息并发布给底盘,底盘也可以有一个节点订阅运动信息并最终转换成控制电机的脉冲信号。话题通信适用于不断更新的数据传输相关的应用场.原创 2021-08-09 16:52:30 · 633 阅读 · 0 评论 -
6th ROS通信机制概述
ROS通信是ROS的核心之一。一、基本概念节点(Node) 一个节点就表示一个进程 多节点、端到端、分布式通信机制 消息(Message) 节点之间通过订阅和发布传递的数据 可以使用ROS提供的消息类型,也可以使用 .msg 文件自定义消息类型 话题(Topic) 消息通过发布/订阅(Publish/Subscribe)方式传递 发布者节点(Talker)针对一个给定的话题发布消息,订阅者节点(Listener)订阅某个话题及其特定数据 话题通信是【异步通信】原创 2021-08-08 15:14:41 · 299 阅读 · 0 评论 -
5th ROS文件系统相关命令和计算图
一、ROS文件系统相关命令1.增catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包sudo apt install xxx === 安装 ROS功能包2.删sudo apt purge xxx ==== 删除某个功能包3.查rospack list === 列出所有功能包rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径roscd 包名 === 进入某个功能包rosls 包名 === 列出某个包下的文原创 2021-08-07 17:25:55 · 166 阅读 · 0 评论 -
4th launch文件的初级实现
一个程序中可能需要启动多个节点,如果每次都调用 rosrun 逐一启动,显然效率低下,如何优化?使用 launch 文件,可以一次性启动多个 ROS 节点。实现步骤1.在功能包目录下新建一个名为launch的文件夹2.在launch文件夹中新建一个launch文件(后缀名为.launch)3.编辑launch文件内容 node ---> 包含的某个节点 pkg -----> 功能包 type ----> 被运行的节点文件 nam.原创 2021-08-07 16:26:51 · 190 阅读 · 0 评论 -
3rd. VSCode下开发ROS的基本流程(C++/Python)
科普:ROS的文件体系一个ROS的工作包可以被称为一个”catkin工作空间“, 在这个工作空间中,只含有三个文件夹:bulid, devel 和 src。在编译的过程中,这三个文件夹的工作流程是:src(package 源代码包)—— bulid(cmake&catkin 缓存和中间文件)—— devel(可执行目标文件)。所以在这三个文件夹中最核心的是src文件夹,它是package源代码包的集合,其他两个文件夹是src的编译过程和结果文件。src文件夹由一个个package软件包组成,原创 2021-08-07 15:51:44 · 455 阅读 · 0 评论 -
2nd. 安装VSCode来开发ROS(ubuntu系统)
1. 下载VSCode原创 2021-08-06 16:25:14 · 287 阅读 · 0 评论 -
方法合集:虚拟机下在ubuntu系统中安装VScode之后无法连接拓展 we cannot connect to the extensions marketplace at this time.
使用VSCode中的拓展时,发现:we cannot connect to the extensions marketplace.找了很多网友分享的办法,但是都是没有用,但是还是有幸解决了问题。仅供参考。方法一:设置自动代理 (解决了我的问题)以下为其他网友的一些方法,做了整理:方法二 换网打开手机热点连接试试,打开浏览器看看是不是能正常使用网络。方法三 设置代理将首选项 -> 设置 -> 应用程序 -> 代理服务器 -> p.原创 2021-08-06 16:07:49 · 3073 阅读 · 0 评论 -
1st. ROS概述
1 ROS简介ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。通讯机制:ROS的核心,数据交互,例如导航,需要获得激光雷达、摄像头数据等。工具:...原创 2021-08-03 16:06:43 · 352 阅读 · 0 评论