通過遊戲手柄控制機械人(ROS)

2021-10-25 20:17:36 字數 2588 閱讀 1076

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

自己寫的乙個launc**件,為了啟動的時候方便一點

"joy_dev" default=

"/dev/input/js0" />

"joy" type=

"joy_node" name=

"joy_node"

>

"dev" value=

"$(arg joy_dev)

" />

"deadzone" value=

"0.3" />

"autorepeat_rate" value=

"20" />

"joytwist" type=

"joytwist.py" name=

"joytwist" output=

"screen"/>

啟動命令

roslaunch joyetwist joytwist.launch
然後就可以愉快的用手柄控制烏龜了,比自帶的鍵盤teleop舒服太多了

通過遊戲手柄控制機械人(ROS,Twist)

首先把手柄插入主機,一般來說可以通過檢查 dev input檢視,裡面js 的裝置一般就是手柄了 ls dev input 然後使用jstest,安裝的話sudo apt get install就好,使用jstest的語句如下 sudo jstest dev input jsxx為之前js 的字尾數...

機械人技術(5)AtdRobot無線手柄控制教程

上一章節我們介紹了如何用鍵盤控制我們的機械人底盤運動。實際使用過程中,我們很難抱著筆記本來遙控小車。更為常見的情況是利用無線遙控手柄來進行遙控控制小車的前進 後退和轉彎。本機械人系統為大家準備的是gamesir遊戲手柄,該手柄握感舒適,且按鍵豐富,可以用於本機械人系統的控制。無線手柄的接收器連線到底...

機械人ros通訊

除錯幾天,ros之間的通訊。雖然還有點bug,但總之網路配置成功,並且能夠正 常通訊,現在記錄一下這個過程。一,網路通訊除錯 1 利用ifconfig命令檢視主機master turtlebot的上網本 和客戶端即工作機的 ip。2 利用hostname命令檢視,上網本和工作機使用者名字。3 開啟h...