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