空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

rosとarduinoでラジコンをつくる(pc側)

joy stickでコマンドを送り、arduinoにros経由で信号を送る

pythonでjoy stickのコマンドを受け取り(sub)送る(pub)コードを書く

手順

  1. ターミナル1

    $ roscore

  2. ターミナル2

    $ rosrun joy joy_node

  3. ターミナル3

以下のpythonコードを実行

$ python joy_twist.py
import rospy
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist

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=100)
        self.operation = [0.0, 0.0, 0.0]

    def joy_callback(self, joy_msg):
        self.operation[0] = joy_msg.axes[0]
        self.operation[1] = joy_msg.axes[1]

if __name__ == '__main__':
    rospy.init_node('joy_twist')
    rate = rospy.Rate(10) # 10hz
    joy_twist = JoyTwist()
    twist = Twist()
    
    while not rospy.is_shutdown():
        twist.linear.x = joy_twist.operation[1]
        twist.angular.z = joy_twist.operation[0]
        rospy.loginfo(twist)
        joy_twist._twist_pub.publish(twist)
        rate.sleep()

Joy Stick Library

Access joysticks/game controllers from Python in Linux via the joystick driver. See https://www.panda3d.org/forums/viewtopic.php?f=8&t=16767 · GitHub

evdev 0.1.1 : Python Package Index