ROS2指令总结

Posted penuel

tags:

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

  1. 查看功能
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
查看节点信息:
ros2 node info <node_name>
  1. 话题
ros2 topic echo <topic_name>
查看话题的详细信息:
ros2 topic info <topic_name>
查看话题的数据类型:
ros2 topic list -t
查看数据类型的具体数据结构:
ros2 interface show <topic_name>
发送话题
ros2 topic pub <topic_name> <msg_type> \'<args>\'
例如小海龟:(冒号中间要加空格)
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"
按照某个频率持续发布:1hz
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 hz /turtle1/pose
  1. 服务
查看某一个服务的数据结构:
ros2 service type <service_name>
查看所有服务的数据类型:
ros2 service list -t
查看所有提供同样数据类型的的服务:
ros2 service find <type_name>
查看服务数据类型的具体结构:
ros2 interface show <type_name>.srv
发送服务请求:
ros2 service call <service_name> <service_type> <arguments>
<arguments>部分是可选的,比如Empty类型的服务就没有任何参数:
ros2 service call /clear std_srvs/srv/Empty
这个服务只是出发一个信号,让海龟仿真器清除海龟后边的运动轨迹,不需要传输什么数据
产生一只新的海龟:
ros2 service call /spawn turtlesim/srv/Spawn "x: 2, y: 2, theta: 0.2, name: \'\'"
  1. 动作
    action是抢占式的,后一个action的执行直接中断了前一个action的执行
查看所有动作的数据类型:
ros2 action list -t
查看action的信息:
ros2 action info <action_name>
查看action数据类型的具体信息:
ros2 interface show <action_name>.action
命令行发送action目标:
ros2 action send_goal <action_name> <action_type> <values>
例:
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: 1.57"
如果先要看到action中的周期反馈,以上命令还需要加一个--feedback参数:
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: -1.57" --feedback
  1. 参数
查看系统中的参数列表:
ros2 param list
获取参数值:
ros2 param get <node_name> <parameter_name>
设置参数值:
ros2 param set <node_name> <parameter_name> <value>
保存参数:
ros2 param dump <node_name>
加载参数文件:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
例:
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
  1. 日志可视化工具
ros2 run rqt_console rqt_console
  1. rqt_graph观测系统
rqt_graph
  1. 使用bag录制/回放数据
录制话题数据:
ros2 bag record <topic_name>
录制多个话题的消息:文件名叫subset
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
查看数据库文件:
ros2 bag info <bag_file_name>
回放数据:
ros2 bag play subset
  1. 解决依赖问题
rosdep install -i --from-path src --rosdistro galactic -y
  1. 编译
colcon build
--packages-up-to :编译指定的功能包,而不是整个工作空间
--symlink-install :节省每次重建python脚本的时间
-event-handlers console_direct+ :在终端中显示编译过程中的详细日志
  1. 设置环境变量
例:
cd ~/dev_ws
. install/setup.sh
  1. 创建功能包
在src下:
ros2 pkg create --build-type ament_cmake <package_name>

ROS2极简总结-Nav2-概述(中)控制器

上一节,主要介绍导航功能包Nav2的规划部分,本节为控制部分:

控制器概述  Controller

注意黄色部分,具体看下图。

 


插件 Plugins

  • 控制器
  • 过程检查
  • 目标检查 

控制器服务器 Controller Server

[nav2_controller_server]

  • 输入:全局路径,代价地图
  • 输出:速度指令

默认为 DWB 控制器

发布速度:~/cmd_vel (geometry_msgs/Twist)

包含多个插件:

  • 轨迹生成器插件
  • 评分插件
  • 目标检查器插件

DWB控制器 DWB Controller

轨迹生成器插件

负责生成局部轨迹并输出指令速度。

目前有两个插件(一次只能加载一个):

  • 标准轨迹生成器
  • 有限加速器
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 0.22
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.22
      min_speed_theta: 0.0

评分插件 Critic Plugins

对轨迹生成器生成的轨迹进行评分。 可以加载多个插件并将它们的分数添加到每个轨迹的最终分数中。

示例:

  • BaseObstacle:基于路径经过代价地图的位置
  • ObstacleFootprint:基于验证机器人足迹上的所有点都没有接触到代价地图中标记的障碍物。
  • GoalDist:基于轨迹使机器人与目标姿势的接近程度。
  • ...
 critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]

目标检查器 Goal Checker

验证机器人是否达到了目标

目前有两个插件(一次只能加载一个):

  • SimpleGoalChecker - 检查位置以查看机器人是否已达到目标。
  • StoppedGoalChecker - 检查位置以及机器人是否已停止。

可以参数化目标“范围”(位置、旋转等...)。

goal_checker:
  plugin: "nav2_controller::SimpleGoalChecker"
  xy_goal_tolerance: 0.25
  yaw_goal_tolerance: 0.25
  stateful: True

controller_server:
  ros__parameters:
    use_sim_time: False
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    controller_plugins: ["FollowPath"]

    # DWB parameters
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 0.22
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.22
      min_speed_theta: 0.0
      # Add high threshold velocity for turtlebot 3 issue.
      # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
      acc_lim_x: 2.5
      acc_lim_y: 0.0
      acc_lim_theta: 3.2
      decel_lim_x: -2.5
      decel_lim_y: 0.0
      decel_lim_theta: -3.2
      vx_samples: 20
      vy_samples: 5
      vtheta_samples: 20
      sim_time: 1.7
      linear_granularity: 0.05
      angular_granularity: 0.025
      transform_tolerance: 0.2
      xy_goal_tolerance: 0.25
      trans_stopped_velocity: 0.25
      short_circuit_trajectory_evaluation: True
      stateful: True
      critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
      BaseObstacle.scale: 0.02
      PathAlign.scale: 32.0
      PathAlign.forward_point_distance: 0.1
      GoalAlign.scale: 24.0
      GoalAlign.forward_point_distance: 0.1
      PathDist.scale: 32.0
      GoalDist.scale: 24.0
      RotateToGoal.scale: 32.0
      RotateToGoal.slowing_factor: 5.0
      RotateToGoal.lookahead_time: -1.0

controller_server_rclcpp_node:
  ros__parameters:
    use_sim_time: False

下一节介绍恢复器。


以上是关于ROS2指令总结的主要内容,如果未能解决你的问题,请参考以下文章

ROS2极简总结-新增概念

ROS2极简总结-核心概念

ROS2极简总结-文件系统

ROS2极简总结-核心概念

ROS2极简总结-MoveIt2

ROS2极简总结-坐标变换-TF