五个核心
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_