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
![servo_base](https://private-user-images.githubusercontent.com/67567093/333889176-7c31096a-9944-4762-8d10-b6ea2980b665.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NzM2NzAsIm5iZiI6MTczODg3MzM3MCwicGF0aCI6Ii82NzU2NzA5My8zMzM4ODkxNzYtN2MzMTA5NmEtOTk0NC00NzYyLThkMTAtYjZlYTI5ODBiNjY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDIwMjI1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYxNzk3OWIxZDA4OWZiYjc3YjgyOTE5ZjQ4NWQ0MTViOGQ4ODI3ZjcwNTZiMTJmZDg2ZTRjNTNlYjVlMjcyZTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vFU-PkIT7i4CaMUe0fEeYfAYoZ1wfyhVVb5rP9-xs1I)
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