Identitas Cakru:
- Nama: Fauzan Mohamad Abdul Ghani
- NIM: 13524113
- Departemen: Programming
- Unit Robotika ITB - SEKURO 18
Package ROS2 destroyer mengimplementasikan sistem kendali dasar Destroyer II menggunakan konsep Inverse Kinematics sederhana. Program terdiri dari 4 node yang saling berkomunikasi melalui topic ROS2.
| Node | Tipe | Topic |
|---|---|---|
auto_mode_destroyer |
Publisher | /autonomous_destroyer (Twist, 2Hz random) |
drive_mode_destroyer |
Publisher | /drive_destroyer (Twist, keyboard input) |
check_move_destroyer |
Publisher-Subscriber | Sub: /drive_destroyer, /autonomous_destroyer · Pub: /power_destroyer, /move_type |
move_destroyer |
Subscriber | /power_destroyer, /move_type |
Mempublish data Twist acak ke topic /autonomous_destroyer dengan frekuensi 2Hz. Nilai linear dalam range [-5, 5] m/s dan angular dalam range [-1, 1] rad/s.
Membaca input keyboard secara real-time dan mempublish data Twist ke topic /drive_destroyer sesuai tombol yang ditekan.
| Tombol | Aksi | Nilai Twist |
|---|---|---|
| ↑ Arrow Up | Maju | linear.x = 5.0 |
| ↓ Arrow Down | Mundur | linear.x = -5.0 |
| → Arrow Right | Geser Kanan | linear.y = -5.0 |
| ← Arrow Left | Geser Kiri | linear.y = 5.0 |
b / B |
Rem / Berhenti | semua = 0.0 |
r / R |
Rotasi Kanan | angular.z = -1.0 |
l / L |
Rotasi Kiri | angular.z = 1.0 |
| Ctrl+C | Keluar | — |
Menerima data dari kedua publisher dan meneruskan ke /power_destroyer dan /move_type. Input dari keyboard (Driver) diprioritaskan selama 0.5 detik setelah input terakhir.
Menerima data dari /power_destroyer dan /move_type, lalu menampilkan:
- Orientasi Gerak: Maju / Mundur / Geser Kiri / Geser Kanan / Berputar Kiri / Berputar Kanan
- Tipe KendaliAktif: Autonomous / Driver
- Omni Wheel Direction: FL / FR / BL / BR (Maju / Mundur / Berhenti)
- ROS2 Humble
rclcppgeometry_msgsstd_msgscolcon- C++17
git clone https://github.com/Zannn210/tugas-d2-sekuro18-13524113.git
cd tugas-d2-sekuro18-13524113mkdir -p ~/ros2_ws/src
cp -r src/destroyer ~/ros2_ws/src/
cd ~/ros2_ws
source /opt/ros/humble/setup.bash
colcon build --packages-select destroyer
source install/setup.bash# Terminal 1
source ~/ros2_ws/install/setup.bash
ros2 run destroyer move_destroyer
# Terminal 2
source ~/ros2_ws/install/setup.bash
ros2 run destroyer check_move_destroyer
# Terminal 3
source ~/ros2_ws/install/setup.bash
ros2 run destroyer auto_mode_destroyer
# Terminal 4
source ~/ros2_ws/install/setup.bash
ros2 run destroyer drive_mode_destroyertugas-d2-sekuro18-13524113/
├── docs/
│ ├── bagian-1/
│ ├── bagian-2/
│ ├── bagian-3/
│ └── bonus/
├── src/
│ └── destroyer/
│ ├── destroyer/
│ │ ├── destroyer_move.cpp
│ │ ├── destroyer_auto.cpp
│ │ ├── destroyer_drive.cpp
│ │ └── destroyer_check.cpp
│ ├── launch/
│ │ └── destroyer_launch.py
│ ├── CMakeLists.txt
│ ├── LICENSE
│ └── package.xml
├── .gitignore
└── README.md
ROS2 menggunakan DDS (Data Distribution Service) sebagai middleware komunikasi. Secara default ROS2 Humble menggunakan FastDDS (eProsima). Node yang berjalan di user berbeda dapat berkomunikasi selama berada dalam ROS_DOMAIN_ID yang sama (default: 0). Hal ini memungkinkan node move_destroyer yang berjalan sebagai user cakru18 dapat menerima data dari node-node yang berjalan sebagai user zan.