Control Player 
Pythonを使いプレーヤーを遠隔操縦してみましょう。
このページでは以下の内容を学びます。
- パッケージ、ノード作成
 - Pythonパブリッシャー作成
 
1. パッケージを作成する 
適当な作業場所に移動します。
bash
mkdir -p ~/minecraft_ros2_tutorial_ws/src
cd ~/minecraft_ros2_tutorial_ws/src以下コマンドを実行し、Pythonノードを含むパッケージのテンプレートを作成します。
bash
ros2 pkg create --build-type ament_python minecraft_ros2_tutorialテンプレートをもとに変更が必要な点を直します。
package.xml 
package.xmlにはパッケージの情報を記入します。
今回は依存関係で geometry_msgs が必要なのでそれを追記します
<test_depend> と <export> の間に以下を書き足してください。
xml
<depend>geometry_msgs</depend>また、descriptionやmaintainer、licenseタグも編集が必要なので編集します。
setup.py 
setup.py はPythonに関する設定を記入します。
今回はノードの登録が必要なので最後の方にある console_scripts を編集します
py
entry_points={
        'console_scripts': [
                'control_player = minecraft_ros2_tutorial.control_player:main',
        ],
},2. Pythonコードを書く 
minecraft_ros2_tutorial/control_player.py を作成し、以下のコードを記入します。
py
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
class ControlPlayer(Node):
    def __init__(self):
        super().__init__('control_player') # control_playerという名前のNodeを作成
        self.publisher_ = self.create_publisher(Twist, '/cmd_vel', 10) # /cmd_vel のパブリッシャーを作成
        timer_period = 0.01
        self.timer = self.create_timer(timer_period, self.timer_callback) # 0.01秒ごとに関数 timer_callback を実行
        self.speed = 1.0
        print("Control Player Node Initialized. Use wasd keys to move, Space to jump, WASD for rotation.")
    def timer_callback(self):
        key = input("enter key (wasd,space,WASD) >>>")
        twist = Twist() # メッセージ作成
        # 値を格納
        if 'w' in key:
            twist.linear.x += self.speed
        if 's' in key:
            twist.linear.x -= self.speed
        if 'a' in key:
            twist.linear.y += self.speed
        if 'd' in key:
            twist.linear.y -= self.speed
        if ' ' in key:
            twist.linear.z = 1.0
        if 'W' in key:
            twist.angular.y += self.speed
        if 'S' in key:
            twist.angular.y -= self.speed
        if 'A' in key:
            twist.angular.z += self.speed
        if 'D' in key:
            twist.angular.z -= self.speed
        self.publisher_.publish(twist) # メッセージをパブリッシュ
def main(args=None):
    rclpy.init(args=args) # ROS 2 初期化
    control_player = ControlPlayer()
    rclpy.spin(control_player) # spinで無限ループスタート
    # 終了時に以下実行
    control_player.destroy_node()
    rclpy.shutdown()
if __name__ == '__main__':
    main()このコードでは wasd で平行移動、 スペースキーでジャンプ、 WASD で視点移動ができるようなメッセージを送信します。
試しに実行してみましょう! (minecraft_ros2を起動して適当なワールドに参加しておいてください)
cd ~/ros2_tutorial_ws で作業場所に移動し、 colcon build でビルドしてみましょう!
初回のみ source install/setup.bash の実行が必要です。
bash
ros2 run minecraft_ros2_tutorial control_playerこれでマイクラ内のプレーヤーの移動がROS 2から遠隔でできるようになりました!