main.py
from jetbot import Robot import rospy from sensor_msgs.msg import Joy from geometry_msgs.msg import Twist import time robot = Robot() def stop(): robot.stop() def step_forward(): robot.forward(0.4) time.sleep(0.5) robot.stop() def step_backward(): robot.backward(0.4) time.sleep(0.5) robot.stop() def step_left(): robot.left(0.3) time.sleep(0.2) robot.stop() def step_right(): robot.right(0.3) time.sleep(0.2) robot.stop() class JoyTwist(object): def __init__(self): self._joy_sub = rospy.Subscriber('joy', Joy, self.joy_callback, queue_size=1) self._twist_pub = rospy.Publisher('cmd_vel', Twist, queue_size=1) def joy_callback(self, joy_msg): if joy_msg.buttons[0] == 1: print('backward') step_forward() if joy_msg.buttons[1] == 1: step_right() print('right') if joy_msg.buttons[2] == 1: print('forward') step_backward() if joy_msg.buttons[3] == 1: print('left') step_left() if __name__ == '__main__': rospy.init_node('joy_twist', disable_signals=True) joy_twist = JoyTwist() print('joy_twist init') rospy.spin()
PS3コントローラがつながっているホストPCで以下を実行
$ roscore 別ターミナル $ rosrun joy joy_node
Jetson Nanoでmain.pyを起動する。
Object detectionと組み合わせたらマジで面白かった