ROS学习笔记(三)

2023-05-16

元功能包

将plumbing_pub_sub、plumbing_server_client、plumbing_param_server关联在一起

http://wiki.ros.org/catkin/package.xml#Metapackages

1.首先:新建一个功能包 plumbing_my

2.然后:修改package.xml ,内容如下:

 <exec_depend>被集成的功能包</exec_depend>

 .....

 <export>

   <metapackage />

 </export>

3.最后:修改 CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.0.2)

project(demo)

find_package(catkin REQUIRED)

catkin_metapackage()

PS:CMakeLists.txt 中不可以有换行。

launch文件

1.属性

pkg="包名"

节点所属的包

  • type="nodeType"

节点类型(与之相同名称的可执行文件)

  • name="nodeName"

节点名称( ROS 网络拓扑中节点的名称)

  • args="xxx xxx xxx" (可选)

将参数传递给节点

  • machine="机器名"

在指定机器上启动节点

  • respawn="true | false" (可选)

如果节点退出,是否自动重启

  • respawn_delay=" N" (可选)

如果 respawn true, 那么延迟 N 秒后启动节点

  • required="true | false" (可选)

该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch

  • ns="xxx" (可选)

在指定命名空间 xxx 中启动节点

<node pkg="turtlesim" type="turtlesim_node" name="turtle1" output="screen" ns="hello" />

  • clear_params="true | false" (可选)

在启动前,删除节点的私有空间的所有参数

  • output="log | screen" (可选)

日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log

2.子级标签

env 环境变量设置

remap 重映射节点名称

用于话题重命名

from="xxx"

原始话题名称

to="yyy"

键盘控制节点和launch文件话题名称不一致 等待  /cmd_vel

  利用remap更改节点

  目标名称

rosparam 参数设置

        命令                          说明                                        说明

rosparam set              set parameter                            设置参数

rosparam get              get parameter                            获得参数值

rosparam load            load parameters from file           从文件中加载参数到参数服务器

rosparam dump          dump parameters to file             将参数服务器中的参数写入到文件

rosparam delete         delete parameter                        删除参数

rosparam list              list parameter names                   列出参数服务器中的参数

<rosparam>标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,<rosparam>标签在<node>标签中时被视为私有。

1.属性

  • command="load | dump | delete" (可选,默认 load)

加载、导出或删除参数

  • file="$(find xxxxx)/xxx/yyy...."

加载或导出到的 yaml 文件

  • param="参数名称"
  • ns="命名空间" (可选)

加载参数

导出参数---à 新建launch文件dump.launch

原文件

先启动原launch文件,再启动导出launch文件,导出数据显示在dump.yaml文件内

删除参数 dump.launch

<rosparam command="delete" param="bg_B" />

param 参数设置

重名问题

工作空间覆盖

指不同工作空间中,存在重名的功能包的情形。

为了在任何终端下都能打开demo01_ws文件,需要在主目录下隐藏文件.bashrc里添加路径

source /home/dai/demo01_ws/devel/setup.bash

source /home/dai/demo02_ws/devel/setup.bash

节点重名

1.rosrun

重复启动乌龟节点,导致前一个节点关闭。

解决方法一:启动多个节点方法,给节点命名,两个下划线:=名字

rosrun turtlesim turtlesim_node __ns:=ergouzi

rosrun turtlesim turtlesim_node __ns:=cuihua

方法二:

rosrun turtlesim turtlesim_node __name:=ergouzi

rosrun turtlesim turtlesim_node __name:=ergouzi

 2.launch文件

 话题重名

1.rosrun

启动乌龟节点,再启动键盘控制,发现话题名称不一样         

rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/turtle1/cmd

编码设置话题名称

ros::param设置参数

设置参数调用APIros::param::set,该函数中,参数1传入参数名称,参数2是传入参数值,参数1中参数名称设置时,如果以 / 开头,那么就是全局参数,如果以 ~ 开头,那么就是私有参数,既不以 / 也不以 ~ 开头,那么就是相对参数。代码示例:

ros::param::set("/set_A",100); //全局,和命名空间以及节点名称无关
ros::param::set("set_B",100); //相对,参考命名空间
ros::param::set("~set_C",100); //私有,参考命名空间与节点名称

运行时,假设设置的 namespace xxx,节点名称为 yyy,使用 rosparam list 查看:

/set_A
/xxx/set_B
/xxx/yyy/set_C

ros::NodeHandle设置参数

设置参数时,首先需要创建 NodeHandle 对象,然后调用该对象的 setParam 函数,该函数参数1为参数名,参数2为要设置的参数值,如果参数名以 / 开头,那么就是全局参数,如果参数名不以 / 开头,那么,该参数是相对参数还是私有参数与NodeHandle 对象有关,如果NodeHandle 对象创建时如果是调用的默认的无参构造,那么该参数是相对参数,如果NodeHandle 对象创建时是使用:

ros::NodeHandle nh("~"),那么该参数就是私有参数。代码示例:

ros::NodeHandle nh;
nh.setParam("/nh_A",100); //全局,和命名空间以及节点名称无关

nh.setParam("nh_B",100); //相对,参考命名空间

ros::NodeHandle nh_private("~");
nh_private.setParam("nh_C",100);//私有,参考命名空间与节点名称

运行时,假设设置的 namespace xxx,节点名称为 yyy,使用 rosparam list 查看:

/nh_A
/xxx/nh_B
/xxx/yyy/nh_C

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习笔记(三) 的相关文章

  • pixhawk PX4FMU和PX4IO最底层启动过程分析

    首先 xff0c 大体了解PX4IO 与PX4FMU各自的任务 PX4IO STM32F100 为PIXHAWK 中专用于处理输入输出的部分 输入为支持的各类遥控器 PPM SPKT DSM SBUS 输出为电调的PWM 驱动信号 它与PX
  • pixhawk 姿态与控制部分的记录

    此篇是把之前看到的资料总结整理一遍 xff0c 大部分是搬砖 xff0c 也加入了自己的一点思考 xff0c 写的过程中晕了好多次 xff0c 先大体记录下来 xff0c 肯定有错误 xff0c 日后再改正吧 关于pixhawk程序执行流程
  • pixhawk 光流--位置估计--姿态估计--位置控制--姿态控制

    本文是边分析边写的 xff0c 顺便就记录下了分析的思路 xff0c 并不是按照教材那种思路介绍性的 xff0c 而是按照程序员分析程序的思路来的 所以读者跟着看有些地方看了意义不大 xff0c 但是这种程序分析的思路还是可以借鉴的 xff
  • pixhawk 整体架构的认识

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提
  • pixhawk mc_pos_control.cpp源码解读

    好久没跟新blog了 xff0c 这段时期边调试边看程序 xff0c 所以有点慢 要开始着手调试了 这篇blog是顺着上一篇pixhawk 整体架构的认识写的 xff0c 接下来看程序的话 xff0c 打算把各个功能模块理解一遍 xff0c
  • pixhawk position_estimator_inav.cpp思路整理及数据流

    写在前面 xff1a 这篇blog主要参考pixhawk的高度解算算法解读 xff0c 并且加以扩展 xff0c 扩展到其他传感器 xff0c 其实里面处理好多只是记录了流程 xff0c 至于里面实际物理意义并不是很清楚 xff0c 也希望
  • 调试记录(一)pixhawk参数设置的问题

    一 光流模式进入不了 1 xff0e 网上下载的固件 xff0c 进入定点模式 xff0c qgc显示 拒绝 烧写自己编译的固件定高和定点都 拒绝 并且按照 xff08 源码解读 xff09 position estimator inav
  • 卡尔曼算法笔记---思想和实际应用物理含义的理解

    此片blog的目的是理解卡尔曼算法的思想和实际应用的物理含义 xff0c 想法很好 xff0c 却只能理解冰山一角 xff0c 先记下这一角 另本blog参考卡尔曼滤波 从推导到应用和徐亦达卡尔曼推导视频 首先认识卡尔曼算法在数学领域是什么
  • ELK-LogStash6.5.4

    ELK LogStash6 5 4 前言 与Elasticsearch Kibana不同 xff0c Logstash默认并不作为系统服务安装 xff0c 我们也不建议作为服务启动 主要原因为 xff1a 大多数情况下 xff0c Elas
  • pixhawk博客导读

    写的东西有点多 xff0c 写的也有点乱 xff0c 看题目也不知道内容是什么 xff0c 为了方便网友观看自己感兴趣的地方 xff0c 笔者把pixhawk博客归类一下 由于笔者也是边学习边写的 xff0c 难免有错误 xff0c 还请多
  • 科普“智能导航”--整理自大疆工程师

    1 飞行器想要稳定飞行 xff0c 需要 15 个状态量 xff1a 三维角度 xff0c 三维角度对应的三维速度 三维加速度 三维角速度 xff0c 三维位置 传感器的测量如下 xff1a 2 传感器自身的限制 xff1a 1 惯性测量元
  • pixhawk px4 字符型设备驱动

    分析字符型设备为什么register open read write怎样与底层驱动代码联系在一起的 xff0c 为什么需要注册 xff0c 为什么会有路径 xff0c 为什么open之后read write就可以读 写了 另 xff1a 此
  • pixhawk px4 spi设备驱动

    此篇blog是以nuttx官网介绍为出发点 xff0c 先分析如何初始化的 xff0c 再分析如何读取传感器数据的 xff0c 最后对比了字符型设备操作和spi驱动的实现方式的差别 如有错误还请指正 6 字符型设备 所有的结构体和API都在
  • Linux驱动概念扫盲篇

    驱动程序完全隐藏了设备工作的细节 用户的活动通过一套标准化的调用来进行 这些调用与特别的驱动是独立的 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上 驱动应当做到使硬件可用 将所有关于如何使用硬件的事情留给应用程序 一
  • ardupilot & px4 书写自己的app & drivers (二)

    新建任务列表任务 打印时间 任务列表 const AP Scheduler span class hljs tag Task span Copter span class hljs tag scheduler tasks span span
  • Docs » Learning the ArduPilot Codebase » EKF » Extended Kalman Filter Navigation Overview and Tuning

    原文 xff1a http ardupilot org dev docs extended kalman filter html extended kalman filter navigation overview and tuning 本
  • Linux常用命令

    压缩 解压命令 01 tar格式 解包 xff1a xff0a xff0a xff0a xff0a xff0a xff0a xff0a tar xvf FileName tar 打包 xff1a xff0a xff0a xff0a xff0
  • linux C编程控制树莓派

    系统准备 1 xff09 打开Win32DiskImager exe 2 xff09 PC机插入sd卡 3 xff09 选择要烧录的系统 xff0c 笔者选择Ubuntu mate 16 04 4 xff09 烧录 显示 默认HDMI显示
  • mission planner发送数据之mavlink

    前段时间研究mp的地面站 xff0c 看了几天有点体会 xff0c 看网上的解析比较少 xff0c 写上来和大家分享下 xff0c 全是自己的理解 xff0c 东西比较少 xff0c 硬货不多 xff0c 还请见谅 最开始是想做个无人机超声
  • ELK-使用nxlog+filebeat采集不同类型的日志输出到logstash

    ELK 使用nxlog 43 filebeat采集不同类型的日志输出到logstash 文章目录 ELK 使用nxlog 43 filebeat采集不同类型的日志输出到logstash 前言正常的采集配置开启多个端口监听优化nxlog xf

随机推荐

  • docker搭建prometheus监控

    介绍 prometheus是开源的监控解决方案 他的监控侧重于云原生应用 xff0c 例容器 k8s集群 prometheus通过各种各样的exporter去监控各种metric指标数据 xff08 本期目标 xff1a docker部署p
  • 回首2013,展望2014

    此刻值此2013年末 xff0c 明天便是元旦 近日浏览CSDN论坛时 xff0c 发现有许多的坛友都在写2013年度总结 xff0c 博客作为个人的名片 xff0c 也决定开始尝试写博客 xff0c 我的第一篇博客就是关于2013年度总结
  • MSSQL分享:sp_writeall 将文本文件内容全部写入某一文件

    alter PROC sp writeall 64 dirpath varchar 1024 64 filetype varchar 255 61 39 sql 39 as declare 64 sql varchar 4000 64 sq
  • 多旋翼飞行器设计与控制实践学习总结

    在11 4 3半自主控制模式控制器上加入自己的控制器 注意事项 1 在进行硬件在环仿真时必须保证整个系统是离散控制系统 xff0c 这里有一个傻瓜式的方式 xff0c 就是一键将所有模块均替换为离散模块 xff0c 可以参照这个连接 htt
  • 如何看英文文档

    本一直以为看不懂官方英文文档是因为词汇量不够 后来发现其实并不是 xff0c 如果没有专业背景 xff0c 没有相应的知识点 xff0c 就算你认识这个单词 xff0c 也会看不懂他在说什么 理由如下 xff1a 在看MyBatis Gen
  • 技术人成长中的得与失,想当程序员或者已经是程序员的要注意了!

    每个人在成长过程中 xff0c 都免不了在得失中摇晃 xff0c 对我来说 xff0c 将来如何更好地去平衡得失 xff0c 是需要思考的问题 xff0c 而对新入行的年轻人来说 xff0c 能从我这些总结中获得一点点启发 xff0c 那我
  • UCOSII 使用笔记

    UCOS使用总结 1 UCOS 是抢占式系统 xff0c 换句话来说 xff0c 优先级高的能够被准时执行 xff0c 优先级低的很容易被高优先级抢占 xff0c 导致执行任务延迟 2 UCOS一般为64个优先级 xff0c 有些可以到25
  • 在华清远见学习嵌入式开发的总结

    一 前言 在华清 xff08 成都中心 xff09 四个多月的学习即将结束 xff0c 在学习中有学到新知识的兴奋 xff0c 也有为代码中的bug而难受一整天的痛苦 xff0c 这些都是学习过程中的常态 xff0c 只要我们善于总结 xf
  • LDMDA指令使用的方法

    在linux内核中 xff0c 文件arch arm kernel head common S中 xff0c 有如下代码 xff1a lookup processor type adr r3 3f ldmda r3 r5 r7 long p
  • ELK-FileBeat入门

    ELK FileBeat入门 文章目录 ELK FileBeat入门 前言windows上安装filebeat配置授之以鱼不如授之以渔输入端配置 前言 filebeat是logstash轻量级版 xff0c 功能相对比nxlog全很多 xf
  • 树莓派3B+安装Ubuntu mate 20.04 armhf

    众所周知 xff0c 树莓派3B 43 使用了64位ARM xff0c 因此可以安装ARM64版本的Ubuntu mate 然而 xff0c 此版本官网明确说更适合2G内存以上的树莓派使用 xff0c 树莓派3B 43 是1G内存啊 xff
  • Linux apt 命令

    apt xff08 Advanced Packaging Tool xff09 是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器 apt 命令提供了查找 安装 升级 删除某一个 一组甚至全部软件包的命令 xff0
  • 基python实现多线程网页爬虫

    一般来说 xff0c 使用线程有两种模式 一种是创建线程要执行的函数 把这个函数传递进Thread对象里 xff0c 让它来执行 另一种是直接从Thread继承 xff0c 创建一个新的class xff0c 把线程执行的代码放到这个新的c
  • C++中的HTTP协议问题

    1 HTTP Hyper Text Transfer Protocol xff08 超文本传输协议 xff09 是一种通信协议 xff0c 它允许将超文本标记语言 HTML 文档从Web服务器传送到客户端的浏览器 在Internet中所有的
  • DB2 的自增主键方式

    DB2 的自增主键方式 xff1a 1 not null generated by default as identity 不会自增长 一定要指定主键值 2 not null GENERATED ALWAYS AS IDENTITY 自增
  • “猿”?“媛”?

    我来自农村 xff0c 父辈告诉我读书是走出这里的唯一途径 xff0c 所以 xff0c 教育在我们家备受重视 高考那年家里发生了一场变故 xff0c 我亲爱的爷爷去世了 xff0c 高考 xff0c 我是一个人跟着学校的车去考试的 xff
  • bootstrap后台 uniform.default.css 使用checkbox 默认选不中问题

    昨天在实际操作中遇见了一个问题 input type 61 39 checkbox 39 设置ckecked 选不中 一直以为是js问题 后来F12看页面发现 是样式的掩盖 lt label gt lt input name 61 34 g
  • linux下安装ffmpeg 语音amr文件为MP3 包含各依赖

    最近安装ffmpeg 转换语音amr文件为MP3 xff0c 在网上查看了很多的版本 xff0c 都是要make 编译 xff0c 而且还有装各种依赖 xff0c 如MP3解码lame等 在官网找到已打包好的文件 xff0c 直接安装 ht
  • 新浪微博与微信公众号开发总结

    微信公众号开发总结 微信公众号开发者文档地址 xff1a https mp weixin qq com wiki t 61 resource res main amp id 61 mp1445241432 可根据文档开始微信者公众号开发 x
  • ROS学习笔记(三)

    元功能包 将plumbing pub sub plumbing server client plumbing param server关联在一起 http wiki ros org catkin package xml Metapackag