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后端就…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
