当前位置: 首页 > 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后端就…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

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&#xff1a; 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 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...