Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Tugas Day 2 - Departemen Programming SEKURO 18

Identitas Cakru:

  • Nama: Fauzan Mohamad Abdul Ghani
  • NIM: 13524113
  • Departemen: Programming
  • Unit Robotika ITB - SEKURO 18

Deskripsi Program

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

Penjelasan Node

1. auto_mode_destroyer

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.

2. drive_mode_destroyer

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

3. check_move_destroyer

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.

4. move_destroyer

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)

Dependencies

  • ROS2 Humble
  • rclcpp
  • geometry_msgs
  • std_msgs
  • colcon
  • C++17

Cara Menjalankan

1. Clone Repository

git clone https://github.com/Zannn210/tugas-d2-sekuro18-13524113.git
cd tugas-d2-sekuro18-13524113

2. Build Package

mkdir -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

3. Jalankan Node (4 terminal terpisah)

# 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_destroyer

Struktur Folder

tugas-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

Catatan DDS

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages