ROS入门之 turtlesim 小海龟

首先,介绍一些ROS的常用命令行工具

  • rostopic
  • rosservice
  • rosnode
  • rosparam
  • rosmsg
  • rossrv

下面以ros的小海龟举例讲解ROS的使用:
以下三条命令需要在三个不同终端中依次运行
启动ROS Masterroscore
启动小海龟仿真器rosrun turtlesim turtlesim_node(rosrun + 功能包名 + 仿真器节点)
运行后出现仿真界面
启动小海龟控制节点rosrun turtlesim turtle_teleop_key(rosrun + 功能包名 + 键盘控制节点)
在此终端中通过方向键可以控制仿真界面中的小海龟移动。

查看节点

Commands:
	rosnode ping	test connectivity to node
	rosnode list	list active nodes
	rosnode info	print information about node
	rosnode machine	list nodes running on a particular machine or list machines
	rosnode kill	kill a running node
	rosnode cleanup	purge registration information of unreachable nodes

查看节点间通信关系
rqt_graph
显示如下:
在这里插入图片描述
turtle_teleop:键盘控制节点
turtlesim:仿真器节点
两者之间传递话题 /turtle/cmd_vel

查看节点列表
rosnode list
显示如下:

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

/rosout :为默认话题,采集节点信息,提交给上层用作显示。

查看节点信息
rosnode info /turtlesim
显示如下:

@ubuntu:~$ 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://gc-Lenovo-Y50c:37603/ ...
Pid: 5676
Connections:
 * topic: /rosout
    * to: /rosout
    * direction: outbound
    * transport: TCPROS
 * topic: /turtle1/cmd_vel
    * to: /teleop_turtle (http://gc-Lenovo-Y50c:45715/)
    * direction: inbound
    * transport: TCPROS

通过命令行工具使海龟运动
输入如下命令,可以通过Tab命令补齐。

gc@gc-Lenovo-Y50c:~$ rostopic pub  -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

回车后,可以发现小海龟可以自己移动了。

查看Twist中定义的数据类型
rosmsg show geometry_msgs/Twist

gc@gc-Lenovo-Y50c:~$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

服务器列表
rosservice list

gc@gc-Lenovo-Y50c:~$ 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

创建一个新的小海龟
在原点创建一个名为turtle2的小海龟

gc@gc-Lenovo-Y50c:~$ rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'turtle2'" 

话题记录
打开一个终端后,输入
话题记录命令:rosbag recode -a -O cmd_record
在teleop结点终端窗口中通过方向键控制海龟移动,后台会自动记录运动状态,并将其记录到home/cmd_record.bag文件中,Ctrl+c结束记录。
进入命令行输入
话题复现命令:resbag play cmd_record.bag
可以发现海龟可以复现运动。

古月ROS 21讲学习笔记

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小海龟ROS中的一个模拟机器人,我们可以使用ROS中的机器人操作系统(Robot Operating System)来实现对小海龟的手势控制。首先,我们需要使用ROS中的图像处理工具来识别手势。我们可以使用OpenCV库来实现手势识别,通过摄像头捕获图像,并使用计算机视觉技术来检测手势。 一旦我们能够识别出手势,就可以在ROS中编写控制算法,将识别到的手势映射成小海龟机器人的运动命令。通过编写ROS节点来实时接收并处理图像数据,并将手势信息转换成小海龟机器人的运动指令,我们可以实现手势对小海龟的实时控制。 在ROS中,我们可以使用机器人操作系统提供的可视化工具(如RViz)来实时查看小海龟机器人的运动轨迹和姿态,以便调试和验证手势控制算法的效果。 除了手势识别和控制算法的实现外,还需要将图像处理、控制算法以及小海龟机器人的通信和协调整合在一起。这意味着我们需要在ROS中编写多个节点和话题来实现图像数据的传输、手势识别数据的处理和小海龟机器人的运动控制。 通过以上步骤,我们就可以在ROS中实现手势控制小海龟,使得它能够根据我们的手势指令实时移动和转向。这一过程需要充分发挥ROS的分布式系统的特点,合理设计和组织各个节点和话题的通信,以及调试和优化手势识别和控制算法,从而实现对小海龟机器人的精准和实时的手势控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值