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

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...