RaspberryPi OS Bookworm & ROS 2 lecture
ros2 pkg create --build-type ament_python --dependencies rclpy servo_msgs --description "servo example" --package-format 3 --node-name servo_example_service --license Apache-2.0 servo_example
source /opt/ros/jazzy/setup.bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src git clone https://github.com/NITKK-ROS-Team/rpios_ros2_lecture.git cd ~/ros2_ws colcon build --symlink-install
フォトインタラプタの状態を読み取り、その値をトピックとして送信する。
source ~/ros2_ws/install/setup.bash ros2 run servo_example input_example_pub
受信する場合は、以下のコマンドを実行する。
source ~/ros2_ws/install/setup.bash ros2 topic echo /input
トピックから受信した値をサーボモータに出力する。
source ~/ros2_ws/install/setup.bash ros2 run servo_example servo_example_sub
送信する場合は、以下のコマンドを実行する。
# 0度 ros2 topic pub /servo std_msgs/msg/Int16 data:\ 0 # 90度 ros2 topic pub /servo std_msgs/msg/Int16 data:\ 90
トピックから受信した値をサーボモータに出力する。送信されるまで待機し、即座に結果が返される。
source ~/ros2_ws/install/setup.bash ros2 run servo_example servo_example_service
送信する場合は、以下のコマンドを実行する。
# 0度 ros2 service call /servo servo_msgs/srv/SG90 angle:\ 0 # 90度 ros2 service call /servo servo_msgs/srv/SG90 angle:\ 90
トピックから受信した値をサーボモータに出力する。送信されるまで待機し、結果が返されるまで待機する。
source ~/ros2_ws/install/setup.bash ros2 run servo_example servo_example_action
送信する場合は、以下のコマンドを実行する。
# 0度:フォトインタラプタの値が1になるまで待機 ros2 action send_goal /servo servo_msgs/action/SetAngle "{angle: 0}" --feedback # 90度:即座に返答される(仮実装) ros2 action send_goal /servo servo_msgs/action/SetAngle "{angle: 90}" --feedback