欢迎光临
我们一直在努力

ROS2初步学习(三):ROS2简单命令操作

学习参考:古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统https://www.bilibili.com/video/BV16B4y1Q7jQ?vd_source=636631386050277a0aa165b966b7f53b

        命令行操作是ROS2开发中不可替代的基础技能。它提供了最直接、灵活、可脚本化的系统交互方式,贯穿于开发、调试、部署全流程。尽管图形工具能提升特定场景的效率,但命令行仍是深入掌握ROS2的必备能力,尤其在自动化、远程部署和资源受限环境中至关重要。

        在这里使用海龟仿真器来学习命令行的操作,首先打开终端,输入:

ros2 run turtlesim turtlesim_node

来启动仿真器,仿真器界面如下图所示。

        接下来启动第二个终端,输入:

ros2 run turtlesim turtle_teleop_key

这样的节点指令,该指令可以通过键盘的控制来对海龟进行控制,其中上下键控制海龟是向前走还是向后走,左右键控制海龟的转向,需要注意的是在对海龟进行操作的时候需要保证鼠标的光标停留在打开的第二个终端上,对海龟进行一定的操作结果如下图所示。

        如果要想查看当前系统之中有哪些节点的话,可以打开一个新的终端,输入:

ros2 node list

的命令,改命令会把当前在ROS2系统之中所有的节点打印出来。如下图所示,输入该命令之后,在之前所用到的teleop_turtle和turtlesim节点都被打印了出来。

        如果需要查看节点的详细信息,则需要输入命令:

ros2 node info 节点名

这里以turtlesim节点为例,输入命令ros2 node info /turtlesim,结果如下图所示。

        对于如何看到海龟仿真器中的当前数据的问题,由于海龟仿真器的大部分数据大部分是存储在话题当中的,可以输入命令:

ros2 topic

对于其后面可以接的指令如下图所示。

其中,各项指令的的功能翻译如下所示:

        bw – 显示主题使用的带宽;

        delay – 显示从消息头时间戳计算的主题延迟;

        echo – 输出主题的消息;

        find – 输出给定类型的可用主题列表;

        hz – 在屏幕上打印平均接收频率;

        info – 打印主题的信息;

        list – 输出可用主题列表;

        pub – 向主题发布消息;

        type – 打印主题的类型。

        这些命令的使用实例,如我们如果想要知道当前系统之中有哪些话题正在发布跟订阅,则可以使用:

ros2 topic list

来做查看当前海龟的状态,查看的结果如下图所示。

        使用:

ros2 topic echo /turtle1/pose

指令对状态进行打印,屏幕上会循环打印出当前的海龟状态,如下图所示。其中x,y为海龟当前的坐标值,theta为绕z轴的一个旋转角度,linear_velocity和angular_velocity分别当前状态的线速度和角速度。

        除了使用键盘来控制海龟的运动状态,还可以使用ros2 topic pub的命令来发布命令,这里以

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}}"

为例,以1Hz的频率向/turtle/cmd_vel话题发布Twist类型的消息,控制海龟的线速度和角速度,具体线速度设置为x方向2.0,y和z方向为0;具体角速度设置为z方向1.8,x和y方向为0。执行的结果如下图所示。可以发现海龟做起了圆周运动,这是因为指令规定了一个x方向的线速度,和z方向的角速度。

        如果想要再增添一只海龟,则需要输入命令

ros2 service call /spawn turtlesim/srv/Spawn "x: 2, y: 2, theta: 0.2, name: ''}"

其中可以给name后面加入自己定义的名字,便成为了第二只小海龟的名字,这里命名第二只小海龟的名字为“turtle2”(缺省的话系统也会自动命名为该名称),执行的结果如下图所示。

        对新生成的小海龟也进行的一定的控制指令,这里采用之前所使用到的pub命令,在这里需要把之前的命令中的turtle1更名为turtle2,即以

ros2 topic pub –rate 1 /turtle2/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 18}}"

执行后的结果如下图所示。

赞(0)
未经允许不得转载:171主机测评 » ROS2初步学习(三):ROS2简单命令操作
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址