环境 与 准备

  1. Ubuntu 16.04(博主的是VM虚拟机)
  2. kinetic版本的ROS平台
  3. 手柄(博主的是索尼的PS4手柄)
  4. 能把这篇博客上的东西实现 仿真机器人的准备

一、连接手柄
如果你使用的是VM虚拟机,连接手柄后,可能会有提示,硬件以连接上。如果没有提示你需要在VM右下角找到你的手柄,如果是亮的则手柄已经连接,如果不亮,点击手柄图标,点击连接就可以了。

如果提示连接不上,首先检查VM是否为最新版本

更新完成后,再更新Tools

点击更新 VMware Tools 后会弹出一个窗口,把里面那个压缩包解压到home里面,然后在里面运行终端
sudo ./vmware-install.pl

然后一直回车就行了,最后重启下VM,在右下角找到手柄,连接虚拟机,看看是否成功。

二、编写手柄操控的Python程序
连接好手柄后在/dev/input 中应该会出现js0 这个文件,这个就是手柄设备,Python的evdev模块就可以读取事件。但在这里我们用一个已经封装完备的ROS节点,Joy包里的joy_node节点。

rosrun joy joy_node #启动joy_node
rostopic echo joy   #然后我们监听这个节点,看看有没有输出手柄事件


这些就是joy_node传输的数据格式

header  #Header 类型
axes    #摇杆数据
buttons     #按钮数据

这些数据就是sensor_msgs/msg/Joy.msg 这个msg文件格式。
现在我们有了手柄数据,那么只需要将手柄数据发送给仿真小车节点,就能使小车移动了。
这次我们依然使用rbx_vol_1作为模拟小车,不清楚的朋友可以看下最上面准备工作中的第四条
想要使rbx_vol_1中的仿真小车移动,我们需要知道小车移动所接收的Msg类型,我们启动仿真机器人

roscore
roslaunch rbx1_bringup fake_pi_robot.launch
rosrun rqt_graph rqt_graph

你会看到这样一个图示

很明显我们的小车节点arbotic订阅了cmd_vel话题(topic),我们只需要看看cmd_vel 传输的msg是什么类型的就行了。
rostopic type cmd_vel #查看cmd_vel 类型
输出geometry_msgs/Twist,然后在查看具体的类型
rosmsg info geometry_msgs/Twist

接下来的工作就是编写Python节点。

#!/usr/bin/env python3#我用的是python3,如果你用的是2,删掉3就行了
#coding=utf-8 import rospy
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist
class JoyRob():"""docstring for JoyRob"""listener_joy = None#监听joy话题talker_rob = None#向机器人话题发布数据joy_msg = Nonedef __init__(self):self.theNode = rospy.init_node('wtmsb')self.listener_joy = rospy.Subscriber('joy',Joy,self.callback)self.talker_rob = rospy.Publisher('cmd_vel',Twist,queue_size=10)self.rate = rospy.Rate(50) # 定义hzwhile not rospy.is_shutdown():self.publish()self.rate.sleep()def publish(self):if self.joy_msg:self.talker_rob.publish(self.joy_msg)def callback(self,date):cmd = Twist()cmd.linear.x = date.axes[3]#axes是摇杆数据cmd.linear.y = date.axes[4]#右摇杆控制移动cmd.angular.z = date.axes[0]#左摇杆用来控制方向cmd.angular.y = date.axes[1]self.joy_msg = cmd  if __name__ == '__main__':JoyRob()

因为我们在Python脚本中使用了

from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist

所以我们要在CMakeLists.txt文件中修改一些东西

加上这两个依赖,然后重新catkin_make就行了。
三、运行

roscore
rosrun joy joy_node
roslaunch rbx1_bringup fake_pi_robot.launch
rosrun 你的工作空间 刚写的节点名称.py#运行刚写好的Python节点
rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz

不出意外你应该可以看到rviz中的仿真机器人

推动左右摇杆就可以使机器人动起来了

根据手柄操控仿真机器人相关推荐

  1. 高仿真机器人助力临床医学发展

    仿真机器人作为机器人家族当中一个非常重要的分支,越来越多的应用的到相关科研前沿领域,比如说无人航空航天试验以及临床医学. 类人机器人是开发难度最高的机器人之一,因为大家希望从它身上看到人的表情和反应. ...

  2. roboguide仿真 机器人轨迹绕圈走

    roboguide仿真 机器人轨迹绕圈走的问题,解决办法之一 想要让末端到达绿色圆柱的位置,但是轨迹异常,绕了一大圈才到达圆柱位置 解决办法 修改PR寄存器里的CONF,换成NUT 修改之后的轨迹:

  3. ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)

    所用的学习链接: [奥特学园]ROS机器人入门课程<ROS理论与实践>零基础教程P278-288 [以上视频笔记见http://www.autolabor.com.cn/book/ROST ...

  4. ROS系统SLAM基础学习:gazebo仿真机器人自主导航

    ROS系统SLAM基础学习:gazebo仿真机器人自主导航 move_base节点配置 amcl节点配置 导航仿真 导航SLAM仿真 自主探索SLAM仿真 自主导航:避障 遇到的问题及解决方法和总结 ...

  5. 仿真机器人控制器代码开源啦!

    之前用Qt做了个简单的Demo,用VS2008+Qt4.8.6+Coin3D开发环境,以埃夫特ER3A-C60机器人模型为例,开发了一个仿真机器人控制器.之前有写过两篇文章介绍: Qt设计机器人仿真控 ...

  6. android仿真平台,一种仿真机器人Android平台的车道偏离预警方法与流程

    技术特征: 1.一种仿真机器人android平台的车道偏离预警方法,其特征是:本预警方法包括五步,第一步初始化参数列表,第二步基于梯度方向的车道线检测,第三步更新参数列表,第四步基于行扫描线的车道线检 ...

  7. xacro搭建ros仿真机器人(待更新)

    Rviz和Gazebo中的效果: 关于urdf和xacro的基于语法及使用可看之前的博客以及ros wiki上的教程: ROS仿真机器人---URDF的XML格式描述学习笔记(wiki教程)_芃晟的博 ...

  8. ROS仿真机器人学习笔记一

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  9. 机器人SLAM与自主导航——(四)Gazebo仿真机器人导航

    (1)创建launch文件 启动Gazebo仿真环境: mrobot_gazebo/launch/mrobot_laser_nav_gazebo.launch 启动move_base导航功能节点: m ...

最新文章

  1. Python maketrans() 方法
  2. spring-redis-data的一个坑
  3. Linux中的动态库和静态库(.a/.la/.so/.o)
  4. java接口是类型吗_JAVA中,接口到底是不是类
  5. php购物车生成订单,php – 在购物车,结帐和查看订单中设置产品自定义字段和显示值...
  6. Deep Learning论文笔记之(五)CNN卷积神经网络代码理解
  7. ITK:将BinaryMorphologicalClosingFilter应用于给定LabelMap的一个LabelObject
  8. notepad php源码,GitHub - CharlesKiki/Web-Notepad: 这是一个仿制有道云笔记的原生PHP小玩具。...
  9. linux系统时间代表,Linux上有两种时间,一种是硬件时间,一种是系统时间
  10. matlab 编辑器设置,编辑器设置,包括语言、备份和显示设置
  11. python从列表某位置开始读取_python如何读取列表中元素的位置?
  12. TensorFlow实战minist数据集 softmax回归分类(一)
  13. 如何拒绝国外IP/屏蔽国外IP访问服务器?
  14. 可以出题的答题小程序
  15. 自媒体常用小程序:去水印、配音、文案提取
  16. matlab无限长一维原子链,固体物理 03-03一维双原子链
  17. python对文件的写作方法_python读写csv文件 - 作文写作问答 - 归教作文网
  18. 第十四届蓝桥杯模拟赛第一期试题【Java解析】
  19. Swift编程语言简介
  20. 解决H5页面无法滚动

热门文章

  1. mysql 查询姓张或者姓王_题目:MySql数据查询题目(学生和课程成绩)
  2. 2021-2027全球与中国点对点微波天线市场现状及未来发展趋势
  3. hadoop学习笔记411
  4. 星沙工业机器人_蓝思机器人有限公司
  5. 使用注解来让后端获取前端参数的常用方式
  6. Javascript实现划词标记+划词搜索功能代码实例
  7. 中国天然气产业发展战略规划及十四五投资策略分析报告2022-2028年版
  8. 电子工程专业评副高总结_副高评职工作总结
  9. Intellij IDEA 安装使用Jrebel热部署详解
  10. 关于ie浏览器兼容性处理