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

举报
hepta_nian 发表于 2021/12/07 13:06:58 2021/12/07
【摘要】 (图文设计来源于创客贴-免费非商用板块)ROS机器人操作系统是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switch­yard)项目。到2008年,主要由威楼加拉吉继续该项目的研发。ROS系统是机器人操作系统。# 0x1实验环境:本实验环境使用的是Ubuntu16.04系统环境,当然目前...

图片

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

ROS机器人操作系统是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switch­yard)项目。到2008年,主要由威楼加拉吉继续该项目的研发。ROS系统是机器人操作系统。

# 0x1实验环境:

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

本篇文章是作者在年前总结所写,参考课程为ROS大佬“古月居”的ROS21讲,若相关概念解释存在问题,还请各位斧正。

本文近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

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"

640.gif

# 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目录)

图片

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。