当前位置: 首页 > news >正文

【手把手做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 createROS2功能包创建命令
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
BSL-1.0
BSD-2.0
BSD-2-Clause
BSD-3-Clause
GPL-3.0-only
LGPL-3.0-only
MIT
MIT-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”时刻&#xff0c;随之而来的是限制&#xff0c;就像在车库里生产第一台Apple 1一样。你是先驱。今天&#xff0c;任何人都可以使用私人和…...

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的管理沟通模型&#xff0c;提高会议沟通效率。使用此模型&#xff0c;主要是有三步&#xff1a; 第一步&#xff1a;倾听&#xff0c;项目经理需要保持中立的立场&#xff0c;不先表态&#xff0c;让团队成员畅…...

vector(入门知识点)

目录 vector的介绍 ​编辑 例&#xff1a;遍历 拷贝&#xff1a; 初始化&#xff1a; 反向迭代器&#xff1a; 扩容&#xff1a; insert与erase vector的介绍 例&#xff1a;遍历 拷贝&#xff1a; 初始化&#xff1a; &#xff08;10个1&#xff09; vector<int>注意…...

成人高考专业怎么选?看这三点

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

设计模式:UML中的类图(6种关系)

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

00后卷王的自述,我真有同事口中说的那么卷?

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

VS2022配置OpenGL+GLAD

Glew&#xff08;The OpenGL Extension Wrangler Library&#xff09;是对底层OpenGL接口的封装&#xff0c;可以让你的代码跨平台。Glad与Glew作用相同&#xff0c;可以看作它的升级版。 Freeglut&#xff08;OpenGL Utility Toolkit&#xff09;主要用于创建并管理窗口和Ope…...

javascript for循环的定义

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

【安全与风险】安全研究的新课题

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

4核8G云服务器腾讯云CVM S5和轻量应用服务器性能差异?

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

【对比】文心一言对飚ChatGPT实操对比体验

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

C++:Article:链接器(二):符号决议

链接器 1. C源文件都有些什么1.1 . 目标文件里有什么 2. 符号表 Symbol table2.1. 符号表的位置2.2. 符号的决议2.3. 符号决议过程 3. 实例说明3.1. 意外出现3.2 总结排查 在上篇文章中&#xff0c;我们介绍了 链接器基本概念&#xff0c;我们知道所有的应用程序否是连接器将所…...

期权价格上下限与期权平价关系

目录 1. 期权的基本概念 2. 期权的上下限 3. 期权的平价关系 1. 期权的基本概念 期权&#xff1a;是一种选择权&#xff0c;期权买方向卖方支付一定数额的 期权费 后&#xff0c;可获得在 一定时间&#xff08;到期日&#xff09;内以 一定价格&#xff08;执行价格&#x…...

QT中TCP的学习

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

编译选项与常用环境变量

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

【SpringBoot2】SpringBoot开发实用篇

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

接口自动化测试框架搭建全部过程

思想&#xff1a; 1、基本目录的搭建 report:静态输出目录(报告或者日志) data&#xff1a;静态输入目录(可以存放Excel数据&#xff0c;被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法&#xff0c;一般拿到别…...

SQL学习(十)--DML_多表查询(针对数据表记录的join查询、子查询的操作)

目录 1. 多表查询 -- 内连接查询 1.1 显示内连接 1.2 隐式内连接 2. 多表连接 -- 外连接查询...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

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

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

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...