当前位置: 首页 > news >正文

ROS学习记录2018.7.10

ROS学习记录2018.7.10

1.ROS基础了解

开源机器人操作系统ROS(robot operation system)

分级:

1.计算图集(一种网络结构)
	1.节点:执行运算的进程(做基础处理的单元)2.消息:有严格数据结构的通讯3.主题:发布者/订阅者之间的媒介(类似报纸、凤凰新闻这类)4.服务:一个请求/一个回应的唯一的ROS控制器(类似常说的服务器)
2.文件系统集(ROS代码组织架构)
	1.包package:软件各种文件的组织2.堆stack:包的集合注:manifest为提供元数据、许可信息、文件间依赖关系、编译参数。
3.社区集(代码库联合系统)

构造函数:

与类同名的函数,在调用类的时候会启动构造函数对类进行操作。

析构函数:

与类同名但名前多了~符号的函数,在释放类的时候会启动析构函数对类进行内部释放操作。

ros::NodeHandle成员介绍:

1.NodeHandle::advertise

回调函数:void connectCallback(const ros::SingleSubscriberPublisher& pub);
例:ros::Publisher pub = handle.advertise<std_msg::String>(“name”, 1, (ros::SubscriberStatusCallback) connectCallback);

2.NodeHandle::subscribe

回调函数:void Foo::Callback(const std_msg::String::ConstPtr& message);
例:ros::Subscriber sub = handle.subscribe (“name”, 1, &Foo::Callback);

3.NodeHandle::serviceClient

例:ros::ServiceClient client = handle.serviceClien<std_msg::String>(“name”);

4.NodeHandle::serviceServer

例:ros::ServiceServer service = handle.advertiseService (“name”,Callback);

2.ROS使用

1.基础操作

$ rospack find ‘nameofstack’:查找安装过的功能包集
$ rosls ‘nameofstack’:显示功能包集下的文件列表
$ roscd ‘nameofstack’:进入功能包文件夹

2.创建ROS功能包:

$ roscreate-pkg [name] [depend1] [depend2] [depend3]

3.继续对ROS的了解学习(理论):

了解ROS操作命令,ROS基本工具,OpenCV,SLAM等,但无法进行实际操作。
继续ROS了解学习(SLAM与导航部分)

4.研究学习

经过自己研究学习,通过了ROS环境变量和工作空间的创建,并使用了virgo_test包进行了编译,并通过。

5.开始操作ROS

利用系统命令rospack find、roscreat-pkg、rosmake、rosnode等完成相应的动作。
创建了新的功能包,并编译。
使用了turtlesim功能包,打开海龟节点窗口;
打开turtle_teleop_key控制海龟移动;
使用命令你个查看主题、查看消息、字段;
使用rostopic pub命令操作海龟曲线运动(圆圈)。
但使用的是-1参数,即仅运行一次,而去掉该参数时,节点持续运行未退出,但是海龟仍是仅执行了一次运动;利用rostopic echo 查看消息信息,发现消息也仅发出一次;未能做到控制海龟持续运动。
使用rostopic pub命令时,若要使海龟持续运动,需使用-r 10参数。
使用服务(rosservice工具)可新建服务,新建一只海龟。

6.使用参数服务器,查看所有共享数据及相关信息。

在之前新建的功能包内,创建新节点,并使用VIM工具编写2个.cpp文件,用于例程练习用。
编译创建并编写的节点,运行节点。

7.使用srv文件:

编写服务节点,通过srv文件提供3 ints求和运算;
编写客户节点,通过srv文件计算3个ints数的和,并显示。
也可使用如下语句调用srv服务:
$ rosservice call add_3_inits 1 2 3

8.使用msg文件:

编写发布节点,发布msg文件中定义的类型消息;
编写订阅节点,接收msg文件中定义的类型消息,并显示。

9.根据:

《ROS培训文档.ppt》 、《ROS学习文档.doc》进行学习。
把代码拷贝到虚拟机内进行catkin_make编译,编译通过。
期间出现过2个重要问题:
权限问题,解决:
$ sudo chmod 777 –R *
单包运行问题,解决:
$ source ./devel/setup.bash

10.看/virgo_frame/virgo_motion代码

但代码比较散乱复杂,并且注释较少。
考虑直接在ros里运行,直接通过终端看节点主题以及消息类型,可更直观的看出该节点的属性。
全体catkin_make通过,但单包运行异常。
后发现是需要
$ source ./devel/setup.bash
(注:每次启动项目都要source。)

查看关系图:
$ rqt_graph
在这里插入图片描述

有两个主题,并且使用如下语句也可以看到:
$ rostopic list

可查看该主题类型:
$ rostopic type /motion/odom
可查看消息类型:
$ rosmsg show std_msgs/String
可看到打印的消息数据:
$ rostopic echo /motion/odom

之后我想使用话题发布消息,需要自己编写节点,于是找了小乌龟节点试。
启动乌龟界面:
$ rosrun turtlesim turtlesim_node
再启动按键控制乌龟的节点:
$ rosrun turtlesim turtle_teleop_key

查看过消息类型后,知道了自己应该发送的消息是什么了。
开始自己创建功能包:
$ catkin_creat_pkg turtle_ctrl std_msgs roscpp rospy
编译一下:
$ catkin_make –pkg turtle_ctrl
新建.cpp文件并编入代码。
编译:
$ catkin_make –pkg turtle_ctrl
但有很多错误。
CMakeList.txt和package.xml需要修改,依赖项和源文件,修改过后通过编译。
程序设计的是:前进一次、后退一次、左转一次。
在这里插入图片描述

查看关系图:$ rqt_graph

11.

附:点

相关文章:

ROS学习记录2018.7.10

ROS学习记录2018.7.10 1.ROS基础了解 开源机器人操作系统ROS&#xff08;robot operation system&#xff09; 分级&#xff1a; 1.计算图集&#xff08;一种网络结构&#xff09; 1.节点&#xff1a;执行运算的进程&#xff08;做基础处理的单元&#xff09;2.消息&#x…...

OPC UA:工业领域的“HTML”

OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业&#xff0c;OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确&#xff0c;可靠地描述复杂系统中各个元素&#xff0c;并且实现…...

【golang】Windows环境下Gin框架安装和配置

Windows环境下Gin框架安装和配置 我终于搞定了Gin框架的安装&#xff0c;花了两三个小时&#xff0c;只能说道阻且长&#xff0c;所以写下这篇记录文章 先需要修改一些变量&#xff0c;这就需要打开终端&#xff0c;为了一次奏效&#xff0c;我们直接设置全局的&#xff1a; …...

多测师肖sir_高级金牌讲师__接口测试之tonken (5.6)

接口测试之tonken 网站&#xff1a;http://shop.duoceshi.com/login?redirect2Fdashboard 第一个接口&#xff1a;uiid接口 uiid接口url&#xff1a;http://manage.duoceshi.com/auth/code test中语句&#xff1a; var jsonData JSON.parse(responseBody); postman.setEnvi…...

C++常见面试问题之内存对齐

一、内存对齐是什么 1.内存对齐是什么 还是用一个例子带出这个问题&#xff0c;看下面的小程序&#xff0c;理论上&#xff0c;32位系统下&#xff0c;int占4byte&#xff0c;char占一个byte&#xff0c;那么将它们放到一个结构体中应该占415byte&#xff1b;但是实际上&…...

网络协议--TCP:传输控制协议

17.1 引言 本章将介绍TCP为应用层提供的服务&#xff0c;以及TCP首部中的各个字段。随后的几章我们在了解TCP的工作过程中将对这些字段作详细介绍。 对TCP的介绍将由本章开始&#xff0c;并一直包括随后的7章。第18章描述如何建立和终止一个TCP连接&#xff0c;第19和第20章将…...

网络协议--BOOTP:引导程序协议

16.1 引言 在第5章我们介绍了一个无盘系统&#xff0c;它在不知道自身IP地址的情况下&#xff0c;在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题&#xff1a;&#xff08;1&#xff09;IP地址是返回的唯一结果&#xff1b;&#xff08;2&#xff09;…...

33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。

基于MATLAB的对RGB图像实现中值滤波&#xff0c;均值滤波&#xff0c;维纳滤波。程序已通过调试&#xff0c;可直接运行。 33 MATLAB、图像处理、维纳滤波 (xiaohongshu.com)...

WPF十六(页面内嵌加载)

在WPF中进行页面内嵌的加载 当存在一定需求时&#xff0c;比如当前页面C左侧是一个A页面&#xff0c;右侧是一个B页面&#xff0c;A页面是一个公用页面时&#xff0c;此时只需要做内嵌A页面&#xff0c;然后B页面进行正常处理&#xff0c;既可以节省时间&#xff0c;又做到了WP…...

JAVA基础(JAVA SE)学习笔记(九)异常处理

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第三阶段&#xff1a;Java高级应用 9.异常处理 10.多线程 11.常用类和基础API 12.集合框架 13.泛型 14…...

Miniconda、Vscode下载和conda源、pip源设置

1、常用软件下载 1、Miniconda软件下载&#xff1a; windows网址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CS&OA 2、最新版Miniconda下载网址&#xff1a;https://docs.conda.io/projects/miniconda/en/latest/ 3、常用代码编辑器VsCode下…...

CAN接口的PCB Layout规则要求汇总

随着时代高速发展&#xff0c;控制器局域网&#xff08;CAN&#xff09;接口的应用越来越广泛&#xff0c;尤其是在汽车电子、航空航天等领域中发挥着重要作用&#xff0c;为了确保CAN接口的可靠性和稳定性&#xff0c;工程师必须在其PCB Layout方面下功夫&#xff0c;下面来看…...

IP网络矿用打点紧急广播方案

IP网络矿用打点紧急广播方案 一、概述 目前&#xff0c;随着计算机网络技术的迅速普及&#xff0c;信息化已经走向煤矿。很多煤矿都陆续具有了稳定可靠、覆盖矿井上下的工业以太网。科学技术的不断进步和信息化矿山建设步伐的不断加快&#xff0c;井下工业以太网将逐渐得到推…...

系列六、FactoryBean vs ApplicationContext

一、FactoryBean vs ApplicationContext 1.1、概述 BeanFactory是一个工厂类&#xff0c;负责生产和管理bean&#xff0c;在Spring中BeanFactory是IOC容器的核心接口&#xff0c;它的主要职责就是生产bean及建立各个bean之间的依赖。applicationContext是BeanFactory的一个子接…...

AOP简单使用模版

AOP面向切面编程 切面类的定义之模版 package com.xie.service;import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.*; import org.aspectj.lang.ProceedingJoinPoint; import org.springframework.stereotype.Component; import javax.servlet.http.Http…...

手机注册.

<!DOCTYPE html> <html><head><title>注册</title><meta http-equiv"content-type" content"text/html; charsetutf-8"/><meta name"apple-mobile-web-app-capable" content"yes"/><lin…...

PostgreSQL 17新特性之登录事件触发器

PostgreSQL 9.3 就提供了事件触发器功能&#xff0c;可以基于 DDL 语句触发相应的操作。 正在开发中的 PostgreSQL 17 增加了基于登录事件的触发器&#xff0c;可以在用户登录时执行某些检查或者特定操作。登录事件触发器的使用方法和其他触发器一样&#xff1a;创建一个返回 …...

Docker 搭建 LNMP + Wordpress

[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi…...

大数据调度最佳实践 | 从Airflow迁移到Apache DolphinScheduler

迁移背景 有部分用户原来是使用 Airflow 作为调度系统的&#xff0c;但是由于 Airflow 只能通过代码来定义工作流&#xff0c;并且没有对资源、项目的粒度划分&#xff0c;导致在部分需要较强权限控制的场景下不能很好的贴合客户需求&#xff0c;所以部分用户需要将调度系统从…...

node实战——搭建带swagger接口文档的后端koa项目(node后端就业储备知识)

文章目录 ⭐前言⭐初始化项目⭐配置router目录自动扫描路由⭐swagger文件配置自动生成json文件⭐封装扫描目录路由加入swagger⭐配置项目入口总文件⭐运行效果⭐总结⭐结束⭐前言 大家好,我是yma16,本文分享关于node实战——搭建带swagger接口文档的后端koa项目(node后端就…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...