当前位置: 首页 > 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. 多表连接 -- 外连接查询...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...