通过游戏手柄控制机器人(ROS)

1.适配与测试游戏手柄

首先把手柄插入主机,一般来说可以通过检查/dev/input查看,里面js#的设备一般就是手柄了

ls /dev/input/

然后使用jstest,安装的话sudo apt-get install就好,使用jstest的语句如下:

sudo jstest /dev/input/jsX

X为之前js#的后缀数字,根据数字不同,可以检测不同的手柄。
最后要记得检查一下手柄设备的权限,需要的权限是读和写,需要添加的话命令如下:

sudo chmod a+rw /dev/input/jsX

2.安装joy ROS包

接下来安装ROS的joy包

sudo apt-get install ros-ROS版本-joy

启动joy节点之前要先设定一下这个节点所读取的手柄设备:

rosparam set joy_node/dev "/dev/input/jsX"

然后开启joy节点

rosrun joy joy_node

如果能通过rostopic list看到joy主题,并通过echo看到内容的话就成功了

3.代码

原作者是:Andrew Dai

#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist
from sensor_msgs.msg import Joy
 
def callback(data):
	twist = Twist()
	twist.linear.x = data.axes[1]
	twist.angular.z = data.axes[0]
        print('speed: %.2f, turn: %.2f'%(twist.linear.x,twist.angular.z))
        if data.buttons[2]==1:
             twist.linear.x = 0
             twist.angular.z = 0
             print("STOP!!")
	pub.publish(twist)
 
# Intializes everything
def start():
	# publishing to "cmd_vel" to control turtle1
	global pub
	pub = rospy.Publisher('cmd_vel', Twist)
	# subscribed to joystick inputs on topic "joy"
	rospy.Subscriber("joy", Joy, callback)
	# starts the node
	rospy.init_node('Joy2Turtle')
	rospy.spin()
 
if __name__ == '__main__':
	start()

从joy主题内获取手柄的信息,其中

twist.linear.x = data.axes[1]
twist.angular.z = data.axes[0]

获取了手柄摇杆的信息,并直接填入twist信息里面。我这里直接填进去了,需要的话可以对数值进行调整,以免跑的太快

data.buttons[2]

获取了手柄上X键的信息,如果按下的话就会立即停止机器人的运动
最后发布twist信息,将控制命令传给机器人

4.Launch File

自己写的一个launch文件,为了启动的时候方便一点

<launch>
  <arg name="joy_dev" default="/dev/input/js0" />
 
  <node pkg="joy" type="joy_node" name="joy_node">
    <param name="dev" value="$(arg joy_dev)" />
    <param name="deadzone" value="0.3" />
    <param name="autorepeat_rate" value="20" />
  </node>
 
  <node pkg="joytwist" type="joytwist.py" name="joytwist" output="screen"/>
 
</launch>

启动命令

roslaunch joyetwist joytwist.launch

然后就可以愉快的用手柄控制乌龟了,比自带的键盘teleop舒服太多了

————————————————

原文链接:https://blog.csdn.net/seeseeatre/article/details/79188095

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值