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(robot operation system) 分级: 1.计算图集(一种网络结构) 1.节点:执行运算的进程(做基础处理的单元)2.消息&#x…...

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

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

多测师肖sir_高级金牌讲师__接口测试之tonken (5.6)
接口测试之tonken 网站:http://shop.duoceshi.com/login?redirect2Fdashboard 第一个接口:uiid接口 uiid接口url:http://manage.duoceshi.com/auth/code test中语句: var jsonData JSON.parse(responseBody); postman.setEnvi…...
C++常见面试问题之内存对齐
一、内存对齐是什么 1.内存对齐是什么 还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占415byte;但是实际上&…...

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

网络协议--BOOTP:引导程序协议
16.1 引言 在第5章我们介绍了一个无盘系统,它在不知道自身IP地址的情况下,在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题:(1)IP地址是返回的唯一结果;(2)…...

33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。
基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。 33 MATLAB、图像处理、维纳滤波 (xiaohongshu.com)...
WPF十六(页面内嵌加载)
在WPF中进行页面内嵌的加载 当存在一定需求时,比如当前页面C左侧是一个A页面,右侧是一个B页面,A页面是一个公用页面时,此时只需要做内嵌A页面,然后B页面进行正常处理,既可以节省时间,又做到了WP…...

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

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

CAN接口的PCB Layout规则要求汇总
随着时代高速发展,控制器局域网(CAN)接口的应用越来越广泛,尤其是在汽车电子、航空航天等领域中发挥着重要作用,为了确保CAN接口的可靠性和稳定性,工程师必须在其PCB Layout方面下功夫,下面来看…...
IP网络矿用打点紧急广播方案
IP网络矿用打点紧急广播方案 一、概述 目前,随着计算机网络技术的迅速普及,信息化已经走向煤矿。很多煤矿都陆续具有了稳定可靠、覆盖矿井上下的工业以太网。科学技术的不断进步和信息化矿山建设步伐的不断加快,井下工业以太网将逐渐得到推…...

系列六、FactoryBean vs ApplicationContext
一、FactoryBean vs ApplicationContext 1.1、概述 BeanFactory是一个工厂类,负责生产和管理bean,在Spring中BeanFactory是IOC容器的核心接口,它的主要职责就是生产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 就提供了事件触发器功能,可以基于 DDL 语句触发相应的操作。 正在开发中的 PostgreSQL 17 增加了基于登录事件的触发器,可以在用户登录时执行某些检查或者特定操作。登录事件触发器的使用方法和其他触发器一样:创建一个返回 …...

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 作为调度系统的,但是由于 Airflow 只能通过代码来定义工作流,并且没有对资源、项目的粒度划分,导致在部分需要较强权限控制的场景下不能很好的贴合客户需求,所以部分用户需要将调度系统从…...

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

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

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,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

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

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: 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 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

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

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