ROS 2 Humble Hawksbill 命令基础
Posted zhangrelay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS 2 Humble Hawksbill 命令基础相关的知识,希望对你有一定的参考价值。
五个核心
- node
- topic
- service
- parameter
- 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 启动文件 launch