【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
目录
【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
一、上讲回顾
二、ROS2核心命令讲解
1、daemon-各种守护进程相关的子命令
2、node-各种节点进程相关的子命令
3、pkg-各种包进程相关的子命令
4、run运行特定软件包的可行性文件
5、topic各种话题进程相关的子命令
6、security各种安全进程相关的子命令
7、service各种服务进程相关的子命令
7、ROS2参数
8、ROS2操作Action
9、ROS2消息日志
10、ROS2自启动节点launch
11、数据记录和播放
一、上讲回顾
在上一讲开发环境搭建中,我们讲解了如何搭建Ubuntu系统环境和ROS2开发运行环境。
1.Ubuntu系统安装
2.ROS2系统环境安装
二、ROS2核心命令讲解
1、daemon-各种守护进程相关的子命令
查看帮助:
ros2 daemon -h
启动daemon
ros2 daemon start
查看状态
ros2 daemon status
停止daemon
ros2 daemon stop
守护进程用途:按照字面意思起到守护用途。类似ros1 master中心节点功能,用于减少节点之间发现的时间。
2、node-各种节点进程相关的子命令
启动一个节点用于测试
ros2 run demo_nodes_cpp talker
输出节点列表:
ros2 node list
查看节点信息
ros2 node info /talker
3、pkg-各种包进程相关的子命令
创建功能包命令:指定包名、编译方式、依赖项、节点名等
命令格式:
ros2 pkg create RobotDotTest --build-type ament_python --node-name RobotDotTest_node --dependencies rclpy std_msgs sensor_msgs --license Apache-2.0
命令 | 说明 |
ros2 pkg create | ROS2功能包创建命令 |
RobotDotTest | 所建功能包名称 |
--build-type ament_python | 指定编程语言 |
-node-name RobotDotTest_node | 节点名称 |
--dependencies rclpy std_msgs sensor_msgs | 指定依赖模块,rclpy是python编程必选的, std_msgs和sensor_msgs是我们要用的消息模块,也可以不指定手动配置 |
--license Apache-2.0 | 指定license Apache-2.0 |
查看
---------------------------------------
查看包列表
ros2 pkg list
executables输出特定于软件包的可执行文件列表:
ros2 pkg executables turtlesim
prefix 输出包的前缀路径:
ros2 pkg prefix turtlesim
4、run运行特定软件包的可行性文件
ros2 run turtlesim turtlesim_node
ros2 run [-h] [--prefix PREFIX] package_name executable_name ...
package_name 软件包名称
executable_name 执行名称
argv 执行对应参数
5、topic各种话题进程相关的子命令
usage: ros2 topic [-h] [--include-hidden-topics]bw 显示使用话题带宽delay 通过header中的时间戳计算消息延迟echo 输出话题信息find 按消息类型查找相关话题hz 显示话题平均发布频率info 显示话题消息类型,订阅者数量,发布者数量list 列出域内可使用的主题列表pub 发布一个话题消息type 打印话题数据类型
list 列出域内可使用的主题列表
ros2 topic list
info 显示话题消息类型,订阅者数量,发布者数量
ros2 topic info /turtle1/pose
type 打印话题数据类型
ros2 topic type /turtle1/pose
find 按消息类型查找相关话题
ros2 topic find turtlesim/msg/Pose
pub 发布一个话题消息
ros2 topic pub control_node/action geometry_msgs/msg/TwistStamped "{header: {stamp:{sec: 0, nanosec: 0}, frame_id: control_node}, twist: {linear: {x: 0.3, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}}"
echo 输出话题信息
ros2 topic echo /control_node/action
hz 显示话题平均发布频率
ros2 topic hz /control_node/action
打开节点主题显示图形
rqt_graph
打开主题列表
ros2 topic list -t
查看主题数据
ros2 topic echo <topic_name>
ros2 topic echo /turtle1/cmd_vel
查看主题信息
ros2 topic info /turtle1/cmd_vel
查看主题数据结构
ros2 interface show geometry_msgs/msg/Twist
发布主题数据消息
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
注:--once 单次发送 --rate 1 循环发送频率1HZ
查看主题信息
ros2 topic echo /turtle1/pose
查看主题发送速率
ros2 topic hz /turtle1/pose
6、security各种安全进程相关的子命令
create_enclave Create enclavecreate_key 创建秘钥create_keystore 创建秘钥库create_permission 创建许可generate_artifacts 从身份和策略文件列表中生成密钥和许可文件generate_policy Generate XML policy file from ROS graph datalist_enclaves List enclaves in keystorelist_keys DEPRECATED: List enclaves in keystore. Use list_enclaves instead
7、service各种服务进程相关的子命令
call调用服务
list列出所有的服务
ros2 service list
服务基于呼叫->应答模型
查看服务列表
ros2 service list
ros2 service list -t
查看服务类型
ros2 service type <service_name>
ros2 service type /clear
查看服务查找
ros2 service find <type_name>
ros2 service find std_srvs/srv/Empty
服务展示显示
ros2 interface show <type_name>.srv
ros2 interface show std_srvs/srv/Empty.srv
ros2 interface show turtlesim/srv/Spawn
服务调用call
ros2 service call <service_name> <service_type> <arguments>
ros2 service call /clear std_srvs/srv/Empty
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: 'turtle2'}"
7、ROS2参数
查看参数列表
ros2 param list
ros2参数get
ros2 param get <node_name> <parameter_name>
ros2 param get /turtlesim background_g
ros2 参数set
ros2 param set <node_name> <parameter_name> <value>
ros2 param set /turtlesim background_r 150
ros2参数存储
ros2 param dump <node_name>
ros2 param dump /turtlesim
ros2 参数加载
ros2 param load <node_name> <parameter_file>
ros2 param load /turtlesim ./turtlesim.yaml
ros2 节点启动时加载参数
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
8、ROS2操作Action
(1)节点信息查看
ros2 node info /turtlesim
ros2 node info /teleop_turtle
(2)查询操作列表
ros2 action list
ros2 action list -t
(3)操作动作信息
ros2 action info /turtle1/rotate_absolute
(4)操作界面显示
ros2 interface show turtlesim/action/RotateAbsolute
(5)发送目标动作
ros2 action send_goal <action_name> <action_type> <values>
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}" --feedback
9、ROS2消息日志
消息等级:
Fatal消息指示系统将终止以尝试保护自身免受损害。
Error消息指示不一定会损坏系统,但会阻止其正常运行的重大问题。
Warn消息指示可能代表更深层次问题的意外活动或非理想结果,但不会完全损害功能。
Info消息指示事件和状态更新,用于直观验证系统是否按预期运行。
Debug消息详细说明了系统执行的整个分步过程。
启动信息终端
ros2 run rqt_console rqt_console
设置节点启动消息等级
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
10、ROS2自启动节点launch
执行自动文件
ros2 launch <package_name> <launch_file_name>
ros2 launch <path_to_launch_file>
执行自动文件后接参数
ros2 launch <package_name> <launch_file_name> background_r:=255
ros2 launch <path_to_launch_file> background_r:=255
参考启动文件
<!-- example.launch.xml -->
<launch>
<!-- args that can be set from the command line or a default will be used -->
<arg name="background_r" default="0"/>
<arg name="background_g" default="255"/>
<arg name="background_b" default="0"/>
<arg name="chatter_ns" default="my/chatter/ns"/>
<!-- include another launch file -->
<include file="$(find-pkg-share demo_nodes_cpp)/launch/topics/talker_listener.launch.py"/>
<!-- include another launch file in the chatter_ns namespace-->
<group>
<!-- push-ros-namespace to set namespace of included nodes -->
<push-ros-namespace namespace="$(var chatter_ns)"/>
<include file="$(find-pkg-share demo_nodes_cpp)/launch/topics/talker_listener.launch.py"/>
</group>
<!-- start a turtlesim_node in the turtlesim1 namespace -->
<node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim1"/>
<!-- start another turtlesim_node in the turtlesim2 namespace and use args to set parameters -->
<node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim2">
<param name="background_r" value="$(var background_r)"/>
<param name="background_g" value="$(var background_g)"/>
<param name="background_b" value="$(var background_b)"/>
</node>
<!-- perform remap so both turtles listen to the same command topic -->
<node pkg="turtlesim" exec="mimic" name="mimic">
<remap from="/input/pose" to="/turtlesim1/turtle1/pose"/>
<remap from="/output/cmd_vel" to="/turtlesim2/turtle1/cmd_vel"/>
</node>
</launch>
11、数据记录和播放
建立测试环境
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
建立记录数据存储区域
mkdir bag_files
cd bag_files
选择对应主题信息
ros2 topic list
ros2 topic echo /turtle1/cmd_vel
数据记录命令
ros2 bag record <topic_name>
ros2 bag record /turtle1/cmd_vel
记录多个主题信息
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
查看记录信息
ros2 bag info <bag_file_name>
ros2 bag info subset
播放记录信息
ros2 bag play subset
ros2 topic hz /turtle1/pose
本节文章到此结束,谢谢大家阅读。。。
相关文章:

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 目录 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 2、node-各种节点进程相关的子命令 3、pkg-各种包进程相关的子命令 4、run运行特定软…...

如何训练个人的ChatGpt4
如何在自己的计算机上安装类似 ChatGPT 的个人 AI 并在没有互联网的情况下运行它 个人 AI 的“第一台 PC”时刻 这是个人AI的“第一台PC”时刻,随之而来的是限制,就像在车库里生产第一台Apple 1一样。你是先驱。今天,任何人都可以使用私人和…...

Rabbit与springboot整合-1
目录 1、整体结构 2、pom引入 3、配置文件 4、代码 公共类 controller类 JSON转换类 监听-接收发送消息类 1、整体结构 2、pom引入 <!--rabbitmq--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…...

项目沟通管理5大技巧 第4个很重要
1、充分使用twitter管理沟通模型 项目沟通会议可以充分使用witter的管理沟通模型,提高会议沟通效率。使用此模型,主要是有三步: 第一步:倾听,项目经理需要保持中立的立场,不先表态,让团队成员畅…...

vector(入门知识点)
目录 vector的介绍 编辑 例:遍历 拷贝: 初始化: 反向迭代器: 扩容: insert与erase vector的介绍 例:遍历 拷贝: 初始化: (10个1) vector<int>注意…...

成人高考专业怎么选?看这三点
专业选得好,以后学习、考试和就业都会走得更加顺畅。 想简单拿个大专或者本科学历文凭,最好选择容易毕业的,比如工商管理、行政管理文史类专业,相对简单容易。 为了满足考证需要的,选对口的专业,比如要考一…...

设计模式:UML中的类图(6种关系)
一.UML图介绍 统一建模语言是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。 二.类图…...

00后卷王的自述,我真有同事口中说的那么卷?
前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从14k涨到了20k,对于工作都还没几年的我来说,还是比较满意的,毕竟一些工作5、6年的可能还没我高。 我可能就是大家口中的卷王,感觉自己年轻…...

VS2022配置OpenGL+GLAD
Glew(The OpenGL Extension Wrangler Library)是对底层OpenGL接口的封装,可以让你的代码跨平台。Glad与Glew作用相同,可以看作它的升级版。 Freeglut(OpenGL Utility Toolkit)主要用于创建并管理窗口和Ope…...

javascript for循环的定义
循环代码可以执行指定的次数 不同类型的循环: javascript支持不同类型的循环 for-循环代码块的一定次数 for/in-循环遍历对象的属性 while-当指定的条件为true时循环指定的代码块 do/while-当指定的条件为true时循环指定的代码块 for循环的语法: …...

【安全与风险】安全研究的新课题
安全研究的新课题 第一部分 主题概述和普适计算目的两种类型的研究人员从事安全和隐私研究关注重点更大的愿景:普适计算什么是普适/泛在计算?普及计算推动者第一个推动者:传感器/执行器例1:无线电传感器例2:RFIDs(“智能标签”)例3:Crowdsensing:实现大规模泛在感知 第二个推动…...

4核8G云服务器腾讯云CVM S5和轻量应用服务器性能差异?
腾讯云4核8G云服务器可以选择轻量应用服务器或CVM云服务器标准型S5实例,轻量4核8G12M服务器446元一年,CVM S5云服务器935元一年,相对于云服务器CVM,轻量应用服务器性价比更高,轻量服务器CPU和CVM有区别吗?性…...

【对比】文心一言对飚ChatGPT实操对比体验
前言 🍊缘由 百度【文心一言】体验申请通过 本狗中午干饭时,天降短信,告知可以体验文心一言,苦等一个月的实操终于到来。心中这好奇的对比心理油然而生,到底是老美的【ChatGPT】厉害,还是咱度娘的【文心一…...

C++:Article:链接器(二):符号决议
链接器 1. C源文件都有些什么1.1 . 目标文件里有什么 2. 符号表 Symbol table2.1. 符号表的位置2.2. 符号的决议2.3. 符号决议过程 3. 实例说明3.1. 意外出现3.2 总结排查 在上篇文章中,我们介绍了 链接器基本概念,我们知道所有的应用程序否是连接器将所…...
期权价格上下限与期权平价关系
目录 1. 期权的基本概念 2. 期权的上下限 3. 期权的平价关系 1. 期权的基本概念 期权:是一种选择权,期权买方向卖方支付一定数额的 期权费 后,可获得在 一定时间(到期日)内以 一定价格(执行价格&#x…...

QT中TCP的学习
文章目录 qt中TCP的实现 qt中TCP的实现 学习视频 QT中可以通过TCP协议让服务器和客户端之间行通信。服务器和客户端的具体流程 下方的信号都是系统提供的,我们只需要写相应的槽函数 A、服务器: 创建QTcpServer对象启动服务器(监听&…...

编译选项与常用环境变量
一、编译选项与常用环境变量 1、命令选项 -D 相当于就是定义,-D 可以理解为告诉cmake 后边我要定义一些参数,每定义一个就在前边加上-D就可以了,示例: #!/bin/shcmake -DTEST_DEBUGON . cmake --build .2、编译选项 下面列出来的…...

【SpringBoot2】SpringBoot开发实用篇
SpringBoot开发实用篇 KF-1.热部署 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署。 热部署的功能是如…...

接口自动化测试框架搭建全部过程
思想: 1、基本目录的搭建 report:静态输出目录(报告或者日志) data:静态输入目录(可以存放Excel数据,被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法,一般拿到别…...

SQL学习(十)--DML_多表查询(针对数据表记录的join查询、子查询的操作)
目录 1. 多表查询 -- 内连接查询 1.1 显示内连接 1.2 隐式内连接 2. 多表连接 -- 外连接查询...

Docker容器部署
Docker容器部署 为什么使用Docker什么是Docker类比用途 Docker基于Windows集成IDEA在window上安装docker设置Docker配置IDEA连接Docker测试启动SpringBoot应用测试 Docker基于Linux集成IDEA连接宿主机redis服务连接Docker中redis服务 为什么使用Docker 在和前端联调的过程中&a…...

26岁转行网络安全,成功上岸安全开发!
前言 我是去年 9 月 22 日才正式学习网络安全的,之前在国营单位工作了 4 年,在长沙一个月工资只有 5000 块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。 而且国营单位的气氛是你干的多了&a…...

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov8,内存更小、效率更高,秒杀Adam(W)
1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…...

5年测试经验,自动化都不会?月薪11K都难拿....
我接触了太多测试同行,由于多数同行之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作5年以上的同行。 我从事软件自动化测试已经近十年,接触过底层服务端、API 、Web、APP、H5 等等,对自动化算是比较了解…...

低代码平台名声臭,用起来却真香——60%开发者不敢承认
群体盲从意识会淹没个体的理性,个体一旦将自己归入该群体,其原本独立的理性就会被群体的无知疯狂所淹没。——《乌合之众》 不知道从什么时候开始,“低代码不行”的论调充斥着整个互联网圈子,csdn、掘金、知乎、B站、脉脉……到处…...

PHP 的代码简洁之道(Clean Code PHP)
介绍 Robert C.Martin’s 的 软件工程师准则 Clean Code 同样适用于 PHP。它并不是一个编码风格指南,它指导我们用 PHP 写出具有可读性,可复用性且可分解的代码。 并非所有的准则都必须严格遵守,甚至一些已经成为普遍的约定。这仅仅作为指导方…...

delphi在两个窗口间用消息通讯
用SendMessage在窗口间通讯: 发送方 var HWD: THandle; str1,str2:string; sData: TCopyDataStruct; begin HWD:FindWindow(nil,pchar(aaaaaa)); // Integer(pchar(self.Edit2.Text)) str2:我来了中玉人; str1:我来了中玉人; sData.cbDa…...

如何高效提高倾斜摄影三维模型顶层合并的技术方法分析
如何高效提高倾斜摄影三维模型顶层合并的技术方法分析 1、倾斜摄影三维模型顶层合并 1.1倾斜摄影三维模型是一种基于倾斜摄影技术,通过多个角度拍摄同一区域的影像,利用计算机图像处理和三维重建技术生成的三维地理信息数据。由于一个大区域可能需要多块…...

【科普】PCB为什么常用50Ω阻抗?6大原因
在PCB设计中,阻抗通常是指传输线的特性阻抗,这是电磁波在导线中传输时的特性阻抗,与导线的几何形状、介质材料和导线周围环境等因素有关。 对于一般的高速数字信号传输和RF电路,50Ω是一个常用的阻抗值。 为什么是50Ω?…...

Linux嵌入式uboot使用tftp网络启动加载zImage、设备树
文章目录 一、前言二、Linux U-boot 相关命令(1)help 命令(2)printenv 命令(3)setenv 函数(4)saveenv 函数 三、tftp启动linux内核步骤(1)进入u-boot模式&…...