ROS 2 Humble Hawksbill 命令基础

Posted zhangrelay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS 2 Humble Hawksbill 命令基础相关的知识,希望对你有一定的参考价值。

五个核心

  1. node
  2. topic
  3. service
  4. parameter
  5. action

ros2 -h
用法:ros2 [-h] [--use-python-default-buffering] 调用 `ros2 <command> -h` 以获得更详细的用法。 

ros2 是 ROS 2 的可扩展命令行工具。

选项:
  -h, --help 显示此帮助信息并退出
  --use-python-default-buffering
                        不要在标准输出中强制行缓冲,而是使用 python 默认缓冲,它
                        可能会受到 PYTHONUNBUFFERED/-u 的影响,并且取决于 stdout 是否是交互

命令:
  action 各种动作相关的子命令
  bag 各种rosbag相关的子命令
  component 各种组件相关的子命令
  daemon 各种daemon相关的子命令
  doctor 检查 ROS 设置和其他潜在问题
  interface 显示有关 ROS 接口的信息
  launch 运行启动文件
  lifecycle  各种生命周期相关的子命令
  multicast 各种多播相关子命令
  node 各种节点相关的子命令
  param 各种 param 相关的子命令
  pkg 各种包相关的子命令
  run 运行包特定的可执行文件
  security 各种与安全相关的子命令
  service 各种服务相关的子命令
  topic 各种与主题相关的子命令
  wtf 使用 `wtf` 作为 `doctor` 的别名

  调用 `ros2 <command> -h` 以获得更详细的用法。


node

标准用法:

ros2 run <package_name> <executable_name>

可以查阅帮助-h

用法:ros2 run [-h] [--prefix PREFIX] package_name executable_name ...

运行包特定的可执行文件

位置参数:
   package_name ROS 包的名称
   executable_name 可执行文件的名称
   argv 将任意参数传递给可执行文件

选项:
   -h, --help 显示此帮助信息并退出
   --prefix PREFIX 前缀命令,应该在可执行文件之前。 如果命令必须用引号括起来
                    包含空格(例如 --prefix 'gdb -ex run --args')。

节点重命名:

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle 

ros2 node

用法:ros2 node [-h] 调用 `ros2 node <command> -h` 以获得更详细的用法。 ...

各种节点相关的子命令

选项:
   -h, --help 显示此帮助信息并退出

命令:
   info 输出节点信息
   list 输出可用节点列表

   调用 `ros2 node <command> -h` 以获得更详细的用法。


topic

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"

如果没有接触过,那么这条指令如何掌握?

ros2 topic -h
用法:ros2 topic [-h] [--include-hidden-topics] 调用 `ros2 topic <command> -h` 以获得更详细的用法。 ...

各种主题相关的子命令

选项:
  -h, --help 显示此帮助信息并退出
  --include-hidden-topics
                        也考虑隐藏的主题

命令:
  bw 显示主题使用的带宽
  delay 从标题中的时间戳显示主题的延迟
  echo 从一个主题输出消息
  find 输出给定类型的可用主题列表
  hz 将平均发布率打印到屏幕
  info 打印有关主题的信息
  list 输出可用主题的列表
  pub 向主题发布消息
  type 打印主题的类型

调用 `ros2 topic <command> -h` 以获得更详细的用法。

ros2 topic pub -h
用法:ros2 topic pub [-h] [-r N] [-p N] [-1 | -t TIMES] [-w WAIT_MATCHING_SUBSCRIPTIONS] [--keep-alive N]
                      [-n NODE_NAME]
                      [--qos-profile unknown,system_default,sensor_data,services_default,parameters,parameter_events,action_status_default]
                      [--qos-depth N] [--qos-history system_default,keep_last,keep_all,unknown]
                      [--qos-reliability system_default,reliable,best_effort,unknown]
                      [--qos-durability system_default,transient_local,volatile,unknown]
                      主题名称消息类型 [值]

向主题发布消息

位置参数:
  topic_name 要发布到的 ROS 主题的名称(例如 '/chatter')
  message_type ROS 消息的类型(例如 'std_msgs/String')
  values 以 YAML 格式填充消息的值(例如 'data: Hello World'),否则
                        消息将使用默认值发布

选项:
  -h, --help 显示此帮助信息并退出
  -r N, --rate N 以赫兹为单位的发布速率(默认值:1)
  -p N, --print N 仅打印每 N 条已发布的消息(默认值:1)
  -1, --once 发布一条消息并退出
  -t TIMES,--times
                        发布此次数然后退出
  -w WAIT_MATCHING_SUBSCRIPTIONS, --wait-matching-subscriptions WAIT_MATCHING_SUBSCRIPTIONS
                        等到找到指定数量的匹配订阅。使用时默认为 1
                        “-1”/“--once”/“--times”,否则默认为0。
  --keep-alive N 在最后一个消息后保持发布节点活动 N 秒(默认值:0.1)
  -n NODE_NAME, --node-name NODE_NAME
                        创建的发布节点名称
  --qos-profile unknown,system_default,sensor_data,services_default,parameters,parameter_events,action_status_default
                        要发布的服务质量预设配置文件)
  --qos-depth N 要发布的队列大小设置(覆盖 --qos-profile 选项的深度值)
  --qos-history system_default,keep_last,keep_all,unknown
                        要发布的样本设置的历史记录(覆盖 --qos-profile 选项的历史记录值,
                        默认值:keep_last)
  --qos-reliability system_default,reliable,best_effort,unknown
                        要发布的服务质量可靠性设置(覆盖 --qos- 的可靠性值
                        配置文件选项,默认值:可靠)
  --qos-durability system_default,transient_local,volatile,unknown
                        要发布的服务质量持久性设置(覆盖 --qos- 的持久性值
                        配置文件选项,默认值:transient_local)


service

学习方法类似topic。

ros2 service -h

ros2 interface -h


parameter

ros2 param -h

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

例如:

ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml


action

ros2 action -h

ros2 action send_goal <action_name> <action_type> <values>

例如:

ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: 1.57"


源码阅读也非常重要:

 // Copyright 2018 Open Source Robotics Foundation, Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
 //     http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
  
 #ifndef RCL__REMAP_H_
 #define RCL__REMAP_H_
  
 #include "rcl/allocator.h"
 #include "rcl/arguments.h"
 #include "rcl/macros.h"
 #include "rcl/types.h"
 #include "rcl/visibility_control.h"
  
 #ifdef __cplusplus
 extern "C"
 
 #endif
  
 struct rcl_remap_impl_t;
  
 typedef struct rcl_remap_t
 
   struct rcl_remap_impl_t * impl;
  rcl_remap_t;
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_remap_t
 rcl_get_zero_initialized_remap(void);
  
 // TODO(sloretz) add documentation about rostopic:// when it is supported
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_ret_t
 rcl_remap_topic_name(
   const rcl_arguments_t * local_arguments,
   const rcl_arguments_t * global_arguments,
   const char * topic_name,
   const char * node_name,
   const char * node_namespace,
   rcl_allocator_t allocator,
   char ** output_name);
  
 // TODO(sloretz) add documentation about rosservice:// when it is supported
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_ret_t
 rcl_remap_service_name(
   const rcl_arguments_t * local_arguments,
   const rcl_arguments_t * global_arguments,
   const char * service_name,
   const char * node_name,
   const char * node_namespace,
   rcl_allocator_t allocator,
   char ** output_name);
  
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_ret_t
 rcl_remap_node_name(
   const rcl_arguments_t * local_arguments,
   const rcl_arguments_t * global_arguments,
   const char * node_name,
   rcl_allocator_t allocator,
   char ** output_name);
  
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_ret_t
 rcl_remap_node_namespace(
   const rcl_arguments_t * local_arguments,
   const rcl_arguments_t * global_arguments,
   const char * node_name,
   rcl_allocator_t allocator,
   char ** output_namespace);
  
  
 RCL_PUBLIC
 RCL_WARN_UNUSED
 rcl_ret_t
 rcl_remap_fini(
   rcl_remap_t * remap);
  
 #ifdef __cplusplus
 
 #endif
  
 #endif  // RCL__REMAP_H_

以上是关于ROS 2 Humble Hawksbill 命令基础的主要内容,如果未能解决你的问题,请参考以下文章

ROS 2 Humble Hawksbill 环境基础

ROS 2 Humble Hawksbill 启动文件 launch

ROS 2 Humble Hawksbill 官方文档

ROS 2 Humble Hawksbill 正式版安装流程

ROS 2 Humble Hawksbill 正式发布啦

ROS 2 Humble Hawksbill将于2022年5月发布