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

2021-08-15 03:19:52 字數 2151 閱讀 7771

首先把手柄插入主機,一般來說可以通過檢查/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檔案,為了啟動的時候方便一點

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

最後吐個槽,編輯器好難用(╯°д°)╯文字的格式和大小老是不對勁,行距也時常出問題。。。

是不是該學習一下那個markdown,感覺挺高階的樣子呢。。。

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

1.適配與測試遊戲手柄 首先把手柄插入主機,一般來說可以通過檢查 dev input檢視,裡面js 的裝置一般就是手柄了 ls dev input 然後使用jstest,安裝的話sudo apt get install就好,使用jstest的語句如下 sudo jstest dev input js...

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

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

機械人遊戲

小a和小b在乙個r行s列的棋盤上玩遊戲,棋盤上的每乙個棋格都有乙個方向標記 上 下 左或右 遊戲按如下方式進行 小a先將k個棋格塗上黑色 初始為白色 並且他不能塗黑最後一列的棋格 隨後,小b在第一列的任意乙個棋格上放乙個小機械人 此時,小機械人將會不停地沿著他所在的棋格所指示的方向走到乙個相鄰的棋格...