Gazebo和ROS通信实现发球

ROS版本: ROS Kinetic
操作系统:Ubuntu16.04 LTS

YouTube上有一个视频,是一个乒乓球机器人在gazebo里面的方针
https://www.youtube.com/watch?v=HBNGeYZKJM4
因为项目需要,需要实现这个发球的装置。因为第一次接触gazebo和ros所以这里把自己的研究过程记录下来。

预备知识

1.ros的安装和通信机制,主要是话题和服务通信。
这里只需要根据根据ros wiki上的教程实现前20讲,就可以实现安装(包括gazebo_ros包)和简单入门。
http://wiki.ros.org/ROS/Tutorials
2.gazebo的一些基础知识(非必须),这里可以看一下gazebo的入门教程
http://gazebosim.org/tutorials

总体实现思路

整个方针的实现可以分为以下几步:
###环境的搭建
这里我们并不采用gazebo教程里面直接gui插入模型的方法,而是采用ros和gazebo的通信机制实现。如果我们按前面的方法正确安装了ros。接下来,打开终端,依次执行下列命令,每个命令可以打开一个终端
$roscore
$rosrun gazebo_ros gazebo
这事我们就打开了gazebo界面。接下来,我们需要一个小球.
$rosrun gazebo_ros spawn_model -database robocup_spl_ball -sdf -model my_ball1
ok,那么现在我们已经把所有需要的模型加载进来了(虽然就1个球)
参考网站:http://gazebosim.org/tutorials/?tut=ros_comm
###动起来
如果仔细看了上面的教程和参考网站,那我们就会有一个整体的思路:利用gazebo提供的话题和服务就可以实现,在环境的搭建中,我们是直接采用spawn_sdf_model服务实现的模型的加载。接下来我们需要把加载的网球删除。接着实现流程如下:
1.使用spawn_sdf_model服务加载一个网球,并指定小球的位置
2.使用apply_body_wrench服务,给网球施加一个斜向上的力,使其做斜抛运动
3.当球弹出后,进入while循环,使用get_model_state服务得到小球的位置,当小球位置飞出预定轨迹后,跳出循环。
4.使用delete_model服务将这个小球删除,回到1.
程序如下:

#!/usr/bin/env python


import time
import rospy
from gazebo_msgs.srv import SpawnModel
from gazebo_msgs.srv import DeleteModel
from gazebo_msgs.srv import ApplyBodyWrench
from gazebo_msgs.srv import
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值