ROS机器人系统常规命令行操作

网友投稿 885 2022-05-29

(图文设计来源于创客贴-免费非商用板块)

# 0x1实验环境:

本实验环境使用的是Ubuntu16.04系统环境,当然目前ROS在Ubuntu18.04上也较为兼容。并且如果使用C语言进行ROS开发的话,可安装类似于Windows下VS的Cmake工具,便于更近一步开发。

本文近1400字,阅读需要8分钟

# 0x2开启ROS:

king@king:~$ roscore

# 0x3启动小乌龟测试节点:

king@king:~$ rosrun turtlesim turtlesim_node

此时,我们可以看到在Ubuntu系统终端命令行的控制下,ROS为我们打开了ROS自带的小乌龟测试节点。此时在配合控制节点就可以对于小乌龟进行方向操控。

# 0x4查看各节点直接的关系:

king@king:~$ rqt_graph

# 0x5列出各系统节点:

king@king:~$ rosnode list /rosout /teleop_turtle /turtlesim

其中 /rosout 是采集所有节点里面的日志信息,用来提交给上面的仿真模拟界面来做显示。

查看指定节点的具体信息 (以 turtlesim 节点具体信息为例):

king@king:~$ rosnode info /turtlesim -------------------------------------------------------------------------------- Node [/turtlesim] Publications: * /rosout [rosgraph_msgs/Log] * /turtle1/color_sensor [turtlesim/Color] * /turtle1/pose [turtlesim/Pose] Subscriptions: (通过键盘方向来反馈给仿真模拟系统) * /turtle1/cmd_vel [geometry_msgs/Twist] Services: * /clear * /kill * /reset * /spawn * /turtle1/set_pen * /turtle1/teleport_absolute * /turtle1/teleport_relative * /turtlesim/get_loggers * /turtlesim/set_logger_level contacting node http://king:45867/ ... Pid: 2709 Connections: * topic: /rosout * to: /rosout * direction: outbound (45045 - 127.0.0.1:38664) [24] * transport: TCPROS * topic: /turtle1/cmd_vel * to: /teleop_turtle (http://king:39861/) * direction: inbound (58676 - king:50595) [31] * transport: TCPROS

通过分析,我们甚至能够看到底层运行的TCP协议,会话等。

# 0x6打印当前系统的所有话题列表:

king@king:~$ rostopic list/rosout/rosout_agg/turtle1/cmd_vel/turtle1/color_sensor/turtle1/pose

尝试通过 ros­topic 命令来控制海龟实例按照要求移动

其中 ros­topic 表示发布数据给某一个 topic

其中 /turtle1/cmd_vel 为话题名 (选中后直接按 Tab 会自动补全话题)

自动补全的 geom­e­try_msgs/Twist 为发布的数据内容,消息结构

消息结构内的具体数据,例如本实例中即为 x,y,z

ROS机器人系统常规命令行操作

king@king:~$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"

# 0x7终端产生器的服务器列表:

king@king:~$ rosservice list/clear/kill/reset/rosout/get_loggers/rosout/set_logger_level/spawn/teleop_turtle/get_loggers/teleop_turtle/set_logger_level/turtle1/set_pen/turtle1/teleport_absolute/turtle1/teleport_relative/turtlesim/get_loggers/turtlesim/set_logger_level

# 0x8使用/spawn产生一只新的海龟:

king@king:~$ rosservice call /spawn "x: 0.0y: 0.0theta: 0.0name: ''"

我们在模拟器中,画出模拟器的 x,y,z(具体的控制方位是这么回事)

此时就建立出了一个坐标系位于x=2 y=2的海龟。

这样我们在节点列表内在查看,出现一个名为turle2的海龟。

king@king:~$ rostopic list/rosout/rosout_agg/turle2/cmd_vel/turle2/color_sensor/turle2/pose/turtle1/cmd_vel/turtle1/color_sensor/turtle1/pose

此时我们通过第二个海龟的节点即可以对第二只海龟进行控制 (可以双人海归快打)

/turle2/cmd_vel/turle2/color_sensor/turle2/pose

# 0x9保存之前的姿势状态:

rosbag record -a -o cmd_record

-a指的是保存全部all,-o是将调整好的姿势状态保存成文件夹的形式,方便第二次打开处理。

开始记录姿态数据......

记录完毕后,退出自动保存

rosbag play cmd_record.bag(保存的bag目录)

机器人

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:带你走入Electron开发!
下一篇:Linux分配home容量给根目录
相关文章