Anda di halaman 1dari 22

MERANCANG GERAKAN ROBOT HUMANOID MENGGUNAKAN ROS GAZEBO

BAB I : PENDAHULUAN
1.1 Latar Belakang

Memprogram Robot humanoid memerlukan waktu yang lama dan banyak percobaan.
Salah satu masalah adalah terbatasnya robot yang siap diprogram. Robot tidak siap
diprogram dapat disebabkan karena masalah mekanik atau jumlah robot yang dapat
diprogram sedikit. Dari masalah tersebut programer harus bergantian ketika ingin
mencoba source code untuk motion pada robot mereka. Untuk mengatasi masalah
tersebut programer dapat menggunakan simulasi. Untuk mempermudah programmer
dalam memprogram robot maka digunakan software Robot Operating System (ROS).
Dengan menggunakan ROS maka hasil source code program yang dibuat tidak perlu
diubah melainkan bisa langsung di upload ke Robot. Untuk simulasi dapat digunakan
Gazebo yang merupakan bagian dari ROS. Dengan menggunakan Gazebo programer
tidak perlu memerlukan robot asli untuk mengimplementasikan programnya.

Kondisi pandemi merupakan kondisi yang membatasi manusia dalam kehidupannya


sehari-hari, banyak orang yang ingin melakukan pekerjaannya terpaksa melakukannya
secara online. Tetapi apa yang terjadi kepada orang yang kerjaannya terikat dengan benda
fisik?

ROBOTIIK merupakan organisasi dibawah Fakultas Ilmu Komputer Universitas


Brawijaya, mereka adalah organisasi yang mengembangkan robot sebagai riset. Mereka
adalah salah satu organisasi yang terhalang akses terhadap robot dikarenakan pandemi,
menghambat progresi riset mereka. Tim di robot dapat dibagi menjadi mekanik, dan
programmer. Dan di sisi mekanik dimana mereka memang harus menyentuh robot untuk
bekerja, ada juga programmer yang membuat Gerakan robot. Tim programmer pada saat
ini tidak memiliki akses untuk membuat gerakan karena mereka perlu mencoba gerakan
yang mereka rancang ke robot langsung untuk melihat kestabilan dan keakuratan robot.
Solusi untuk masalah ini adalah untuk melakukan simulasi menggunakan Robot
Operating System (ROS) melalui program Gazebo.

ROS sendiri dipilih dikarenakan telah menjadi standar internasional, terutama di


negara-negara barat. Selain itu ROS merupakan projek yang bersifat open source dan
memiliki banyak dukungan oleh komunitas robotika. Simulasi di ROS menggunakan
program bernama Gazebo, yang akan memvisualisasi robot secara tiga dimensi. Selain itu
Gazebo juga akan mensimulasikan gravitasi dan fisika yang ada di dunia nyata untuk
memastikan keakuratan.
1.2 Rumusan Masalah
- Apa itu robot humanoid?
- Apa itu ROS Gazebo?
- Bagaimana cara menggunakan program simulasi (ROS)?
- Bagaimana cara merancang gerakan robot humanoid?

1.3 Tujuan
- Mengetahui apa itu robot humanoid
- Mengetahui apa itu ROS Gazebo
- Dapat menggunakan program simulasi (ROS)?
- Dapat merancang gerakan robot humanoid?

1.4 Manfaat
- Mempermudah dalam proses development robot
- Menambah pengalaman dalam memprogram robot humanoid

1.5 Batasan Masalah


- Program motion yang dibuat menggunakan bahasa python
- Simulasi yang digunakan adalah Gazebo
- Didalam simulasi lingkungan nya ideal
BAB II : PROFIL LOKASI PKL
2.1 Sejarah Perusahaan
Pada tahun 2002 diprakarsai oleh Jurusan Teknik Elektro membuka Konsentrasi
Informatika dan Komputer (paket E) yang akhirnya menjadi cikal bakal Prodi Teknik
Perangkat Lunak. Kemudian pada tahun 2005, Jurusan Teknik Elektro membuat tim
untuk membuat proposal pengajuan Prodi Informatika ke DIKTI. Akhirnya pada tahun
2007 ijin penyelenggaraan dari Dikti nomor 1575/D/T/2007 turun, dengan nama Program
Studi Teknik Perangkat Lunak jenjang program Sarjana (S1), maka penerimaan
mahasiswa baru dibuka dan menerima 45 mahasiswa pada angkatan pertama. Proses
penyelenggaran pendidikan dilakukan di Jurusan Teknik Elektro.

Pada tahun 2009 dipilih Ketua Program Studi yang pertama dimana saat itu
Program Studi masih berada di bawah Fakultas Teknik. Pada tahun 2009 ijin
perpanjangan penyelenggaraan dari Dikti nomor 3355/D/T/K-N/2009 turun dengan
perubahan nama Informatika dengan masa berlaku sampai tanggal 31 Agustus 2013. Pada
tahun tersebut Program Studi Informatika / Ilmu Komputer terbagi menjadi 2 konsentrasi
yaitu konsentrasi Teknik Informatika dan Sistem Komputer. Namun pada tahun 2011
konsentrasi Sistem Komputer memisahkan diri dari Program Studi Informatika/Ilmu
Komputer menjadi Program Studi Sistem Komputer sampai sekarang dengan berbagai
perubahan menjadi Program Studi Teknik Komputer. Sehingga Program Studi Teknik
Informatika leluasa untuk berkembang dengan berbagai konsentrasi atau disebut juga
keminatan.

Dengan adanya pembentukan Program Teknologi Informasi dan Ilmu Komputer


Universitas Brawijaya (PTIIK-UB) berdasarkan Surat Keputusan Rektor Universitas
Brawijaya nomor 516/SK/2011 tanggal 27 Oktober 2011, Program Studi Informatika dan
Ilmu Komputer berada di bawah PTIIK dengan nama Program Studi Informatika / Ilmu
Komputer. Pada tahun 2015 berdasarkan Organisasi dan Tata Kelola (OTK) Universitas
Brawijaya terbaru yang disahkan melalui Permenristekdikti No.4 Tahun 2016 tentang
Organisasi dan Tata Kerja Universitas Brawijaya dan Peraturan Rektor Universitas
Brawijaya No.20 Tahun 2016 tentang Susunan Organisasi dan Tata Kerja. PTIIK berubah
menjadi Fakultas Ilmu Komputer dengan memiliki 2 (dua) Jurusan, yaitu Jurusan Teknik
Informatika dan Jurusan Sistem Informasi. Program Studi Teknik Informatika berada
dibawah Jurusan Teknik Informatika beserta dengan dua program studi lain (Teknik
Komputer dan Magister Ilmu Komputer).
-
2.2 Alamat Perusahaan

Nama Perusahaan : Jurusan Teknik Informatika Universitas Brawijaya

Alamat : Fakultas Ilmu Komputer, Universitas Brawijaya, Jl. Veteran no.8,

Malang, Indonesia-65145

Telp/Fax : (0341) 577-911

Email : filkom@ub.ac.id

2.3 Visi dan Misi Perusahaan

2.3.1 Visi
Menjadi program studi bereputasi internasional dalam pengkajian dan
pengembangan Teknologi Sistem Pintar (Smart Systems Technology) untuk menghasilkan
solusi Informatika dalam rangka mendukung pembangunan bangsa melalui integrasi Tri
Dharma Perguruan Tinggi pada tahun 2020.

2.3.2 Misi
1. Menyelenggarakan pendidikan sarjana yang berkualitas di bidang Informatika
yang berorientasi pada pengkajian ilmu pengetahuan dan kewirausahaan.
2. Mengembangkan penelitian yang inovatif, berkualitas dan kontributif dalam
pengkajian dan pengembangan Teknologi Sistem Pintar (Smart Systems
Technology).
3. Melaksanakan pengabdian pada masyarakat secara berkelanjutan untuk
menerapkan hasil-hasil pengkajian dan pengembangan Teknologi Sistem Pintar
(Smart Systems Technology) dalam rangka mendukung pembangunan bangsa.
4. Membangun kerjasama yang konstruktif dan dinamis dengan seluruh pemangku
kepentingan di tingkat nasional maupun internasional.

2.3.3 Tujuan
1. Menghasilkan lulusan sarjana yang memiliki kompetensi yang sesuai dengan
standar nasional dan internasional di bidang Informatika.
2. Menghasilkan produk-produk penelitian yang inovatif dan berkualitas sehingga
mampu memberikan kontribusi dalam pengembangan Teknologi Sistem Pintar
(Smart Systems Technology).
3. Menghasilkan produk-produk terapan Teknologi Sistem Pintar (Smart Systems
Technology) sebagai solusi di masyarakat dalam rangka mendukung
pembangunan bangsa.
4. Meningkatkan kuantitas dan efektivitas kerjasama dengan para pemangku
kepentingan dalam rangka menunjang tercapainya visi misi program studi.

2.3.4 Moto
Engineering our wise future through informatics Dengan moto ini, kami bertekad
untuk selalu melakukan perbaikan kualitas (continuous improvement) dalam berbagai
aspek, khususnya dalam pengembangan sumber daya manusia.

2.4 Struktur Organisasi Perusahaan


Berikut struktur organisasi Fakultas Ilmu Komputer dijelaskan pada Gambar 2.1 berikut

Gambar 2.1 Struktur Organisasi Fakultas Ilmu Komputer

Sumber: (www.jtif.filkom.ub.ac.id)

1. Dekan
● Wakil Dekan Bidang Akademik
● Wakil Dekan Bidang Umum dan Keuangan
● Wakil Dekan Bidang Kemahasiswaan
2. Senat Fakultas
3. Bagian Pembantu Dekan
● Sub bagian BPPM
● Sub bagian PSK
● Sub bagian BPJ
● Sub bagian GJM
4. Laboratorium
5. Jurusan Teknik Informatika
● Sub bagian UJM
● Prodi Sarjana Teknik Informatika
● Prodi Sarjana Teknik Komputer
● Prodi Magister Ilmu Komputer
● Kelompok Jabatan Fungsional Dosen
6. Jurusan Sistem Informasi
● Sub bagian UJM
● Prodi Sarjana Sistem Informasi
● Prodi Sarjana Teknologi Informasi
● Prodi Sarjana Pendidikan Teknologi Informasi
● Kelompok Jabatan Fungsional Dosen
7. Bagian Tata Usaha
● Sub bagian Akademik dan Kemahasiswaan
● Sub bagian Umum dan Keuangan

2.5 Rantai Bisnis Perusahaan


- (?)
BAB III : LANDASAN KEPUSTAKAAN
3.1 Tinjauan Pustaka

3.2 Dasar Teori

3.2.1 Robot Humanoid


Robot Humanoid merupakan salah satu jenis model robot yang memiliki postur
menyerupai manusia dimana memiliki dua kaki, tubuh, kepala (opsional), dan 2 tangan
(opsional), desain robot ini digunakan untuk tujuan Fungsional serperti berinteraksi
dengan alat dan lingkungan manusia atau untuk tujuan penelitian seperti pengerak
bipedal.

3.2.2 Simulasi
Simulasi adalah proses mendesain sebuah model dari sebuah lingkungan fisikal
yang teoritis ataupun aktual. Simulasi memungkinkan investigasi, desain, visualisasi,
bahkan pengujian sebuah objek yang tidak ada (virtual). Hasil dari sistem yang belum
dibuat dapat dilihat. Sebuah sistem mungkin dapat menghasilkan ledakan dan bahaya
bagi manusia, tetapi dengan simulasi mereka dapat ditampung dalam lingkungan yang
terpisah dari dunia nyata.

3.2.3 Forward Kinematic (DH)


Forward Kinematics adalah suatu fungsi yang memetakan sudut terhadap posisi.
Pengendalian ini menggunakan beberapa parameter, yaitu di antaranya dengan posisi dan
orientasi. Parameter posisi menentukan koordinat posisi robot, sedangkan orientasi
menentukan frame (dimensi yang digunakan robot) pada masing-masing joint (titik sendi)
pada robot.

3.2.4 Robot Operating System (ROS)

Robot Operating System (ROS), adalah sebuah framework software open source
yang mendukung pengembangan sistem yang kompleks dan modular di sebuah
lingkungan komputasi terdistribusi. Walaupun komponen inti dari ROS dapat dibilang
umum, tugas dan fungsi utama dari ROS dan ekosistemnya adalah untuk pengembangan
dan riset terhadap robot. Bagian yang kinerjanya penting ditulis dalam bahasa C++, tetapi
aplikasi yang bekerja diatas framework dapat ditulis di C++, Python ataupun Lisp.
BAB IV : METODOLOGI
4.1 Diagram alir metode

4.2 Spesifikasi hardware dan/atau Software

4.2.1 Linux (Ubuntu Bionic Beaver LTS 18.04.5)


Linux merupakan sistem operasi berbasis UNIX. Linux dikembangkan secara
open source sehingga mudah diakses dan memiliki berbagai distributor. Pada PKL ini
digunakan distributor Ubuntu. Alasan digunakan Ubuntu adalah karena aplikasi yang
digunakan untuk PKL yang dikerjakan memerlukan sistem operasi Ubuntu atau Debian,
namun karena Ubuntu lebih mudah digunakan penulis memilih menggunakan Ubuntu.
Versi dari Ubuntu yang digunakan adalah versi 18.04.5 atau dikenal juga dengan Bionic
Beaver. Alasan digunakan versi tersebut karena versi tersebut sudah stabil serta bug nya
terbilang rendah dan masih disupport oleh komunitas.

4.2.2 ROS (Melodic Morenia)

ROS Melodic merupakan versi dari ROS yang dikembangkan untuk umumnya
digunakan di Ubuntu 18.04 . Alasan digunakannya ROS versi ini adalah karena ada
beberapa paket yang tidak bisa dieksekusi secara langsung oleh versi ROS yang terbaru
(Noetic). Adapun beberapa fitur yang digunakan untuk PKL ini adalah:

Merupakan framework utama dimana semua


roscore fitur ROS bekerja. Terdiri dari koleksi nodes
dan program yang merupakan syarat untuk
menjalankan sistem berbasis ROS.

Merupakan tool berbasis Qt5, yang


rqt_graph memvisualisasikan setiap topik yang sedang
aktif, disertai dengan relasi topik satu sama
lain dalam bentuk graph.

Merupakan sebuah Library API yang menjadi


interface antara python dengan ROS. API ini
rospy memungkinkan programmer python untuk
berinteraksi dengan ROS Topic, Services, dan
Parameters.

Merupakan kumpulan perintah-perintah shell


berdasarkan bash. Fitur utama yang
rosbash digunakan di projek ini adalah rosrun, yang
berguna untuk menjalankan sebuah program
dari mana saja tanpa mengetahui pathnya

Mengandung sebuah alat berbasis command-


line untuk menampilkan informasi debugging
rostopic mengenai ROS Topics, yang termasuk
publisher, subscriber dan publishing rate
beserta pesan ROS (Messages)

4.2.3 Gazebo

Gazebo adalah simulator dinamis 3D dengan kemampuan untuk mensimulasikan


robot secara akurat dan efisien di lingkungan dalam dan luar ruangan yang kompleks.
Gazebo menawarkan simulasi fisika pada tingkat ketepatan tinggi, rangkaian sensor, dan
interface untuk pengguna dan program. Alasan digunakanya gazebo adalah karena
gazebo sudah merupakan bagian dari ROS, sehingga kode yang digunakan untuk simulasi
tidak perlu diubah ketika ingin di upload ke robot yang ingin digunakan.
4.2.4 Python 3.8

Python merupakan salah satu bahasa pemrograman yang bersifat multi platform.
Alasan digunakan Python karena python lebih mudah digunakan sehingga cocok
digunakan untuk mendevelop robot yang dicoding oleh beberapa orang. Versi yang
digunakan yaitu versi Python 3.8 Merupakan versi python terbaru sehingga lebih stabil
dan masih terus diupdate.

4.2.5 PLEN2

PLEN2 merupakan robot humanoid yang memiliki 18 joint untuk melakukan


suatu gerakan secara bebas. Robot ini dikembangkan oleh Plen Project Company inc.
Ukuran robot ini dapat terbilang kecil, sehingga gerakan nya lebih seimbang. Pada
project ini untuk melakukan simulasi digunakan 3D model dengan format .cad agar dapat
digunakan pada simulasi. Alasan digunakan PLEN2 karena program untuk robot ini
bersifat open source sehingga mudah untuk diakses. Alasan lainnya adalah karena ukuran
robot yang kecil dan rina memudahkan developer yang masih baru untuk belajar
memprogram robot humanoid.

4.3 Metode perancangan


Perancangan dimulai dengan menginstall ROS melodic pada Ubuntu berdasarkan
prosedur yang ada pada RSO wiki. Untuk penginstalan nya akan dipilih Desktop-Full
Install agar sekaligus menginstal Gazebo. Selanjutnya akan dianalisis gerakan joint
PLEN, program yang kita gunakan berbasis dari sebuah repository dari Maurice Rahme,
dimana didalamnya sudah terdapat URDF dan script sampel untuk gerakan dasar.
Analisis range of motion atau Degree of Freedom dari robot menghasilkan tabel seperti
berikut :

No Nama Joint Minimum Maximum


Range (Radian) Range (Radian)

1 rb_servo_r_hip -1.7 1.7

2 r_hip_r_thigh -1.54 0.12

3 r_thigh_r_knee -1.7 0.75

4 r_knee_r_shin -0.2 0.95

5 r_shin_r_ankle -0.96 1.54

6 r_ankle_r_foot -0.45 0.8

7 lb_servo_l_hip -1.7 1.7

8 l_hip_l_thigh -0.12 1.54

9 l_thigh_l_knee -0.75 1.7

10 l_knee_l_shin -0.95 0.2

11 l_shin_l_ankle -1.54 0.95

12 l_ankle_l_foot -0.8 0.45

13 torso_r_shoulder -1.7 1.7

14 r_shoulder_rs_servo -0.15 1.7

15 re_servo_r_elbow -0.2 0.5

16 torso_l_shoulder -1.7 1.7

17 l_shoulder_ls_servo -0.15 1.7

18 le_servo_l_elbow -0.2 0.5

Peletakkan tiap joint di robot simulasi diilustrasikan di gambar dibawah


Setelah mengetahui kapabilitas dan jangkauan dari setiap joint, Motion akan dirancang
melalui aplikasi web dari PLEN untuk memvisualisasi gerakan.

Gerakan dibagi menjadi empat posisi utama, keempat posisi ini akan dicerminkan untuk
membuat gerakan simetris yang membuat PLEN untuk bergerak sebanyak 2 langkah.

4.4 Metode implementasi


Metode pengimplentasian ini menggunakan cara melakukan pengintallan packet contoller
dari ROS terlebiih dahulu dan repository dari moribots/plen_ml_walk

~/$ sudo apt-get install ros*controller*

Setelah melakukan installasi packet proses berikutnya adalah pembuatan Workspace


untuk PLEN

~/$ mkdir catkin_ws

~/$ mkdir catkin_ws/src

Selanjutnya adalah melakukan Clone projek PLEN dari repository github Mori dan
diletakan pada folder diluar catkin_ws, di dalamnya kita akan mengcopy isi dari folder
plen_ros ke folder src di catkin_ws

~/$ git clone https://github.com/moribots/plen_ml_walk.git


~/$ mv ~/plen_ml_walk/plen_ros/* ~/catkin_ws/src

~/$ cd catkin_ws/

Untuk projek dari PLEN ini hanya mengambil dari packet PLEN_ROS untuk
diimplentasikan pada Gazeboo jadi packet selain PLEN_ROS pada src bisa dihapus atau
dipindahkan. Langkah selanjuttnya melakukan build pada packet ini dengan perintah.
~/catkin_ws/$ catkin_make

Untuk mendesain Gerakan robot peneliti mengunakan phyton script untuk membuat
program yang otomatis melakukan Publish dan Suscribe pada topic
trajectory_msgs.msg dan source code untuk melakukan publish ada pada table
dibawah.

re_walk.py

1 #! /usr/bin/env python
2
3 from __future__ import print_function
4
5 import rospy
6 from trajectory_msgs.msg import JointTrajectory,
JointTrajectoryPoint
7
8 import numpy as np
9
10
11 class AllJoints:
12 def __init__(self, joint_name_lst):
13 rospy.loginfo('Waiting for joint trajectory Publisher')
14 self.jtp =
rospy.Publisher('/plen/joint_trajectory_controller/command',
15 JointTrajectory,
16 queue_size=1)
17 rospy.loginfo('Found joint trajectory Publisher!')
18 self.joint_name_lst = joint_name_lst
19 self.jtp_zeros = np.zeros(len(joint_name_lst))
20
21 def move_jtp(self, pos, duration):
22 jtp_msg = JointTrajectory()
23 jtp_msg.joint_names = self.joint_name_lst
24 point = JointTrajectoryPoint()
25 point.positions = pos
26 point.velocities = self.jtp_zeros
27 point.accelerations = self.jtp_zeros
28 point.effort = self.jtp_zeros
29 point.time_from_start = rospy.Duration(duration) #
rospy.Duration(1.0 / 60.0)
30 jtp_msg.points.append(point)
31 self.jtp.publish(jtp_msg)
32
33 def reset_move_jtp(self, pos):
34 jtp_msg = JointTrajectory()
35 self.jtp.publish(jtp_msg)
36 jtp_msg = JointTrajectory()
37 jtp_msg.joint_names = self.joint_name_lst
38 point = JointTrajectoryPoint()
39 point.positions = pos
40 point.velocities = self.jtp_zeros
41 point.accelerations = self.jtp_zeros
42 point.effort = self.jtp_zeros
43 point.time_from_start = rospy.Duration(0.1)
44 jtp_msg.points.append(point)
45 self.jtp.publish(jtp_msg)
46
47
48 class PlenEnvironment:
49 def __init__(self):
50 rospy.init_node('joint_position_node')
51 self.link_name_lst = [
52 'plen::base_footprint', 'plen::l_shoulder',
'plen::ls_servo',
53 'plen::l_elbow', 'plen::l_hip', 'plen::l_thigh',
'plen::l_knee',
54 'plen::l_shin', 'plen::l_ankle', 'plen::l_foot',
55 'plen::r_shoulder', 'plen::rs_servo',
'plen::r_elbow',
56 'plen::r_hip', 'plen::r_thigh', 'plen::r_knee',
'plen::r_shin',
57 'plen::r_ankle', 'plen::r_foot'
58 ]
59
60 self.joint_name_lst = [
61 'rb_servo_r_hip', 'r_hip_r_thigh', 'r_thigh_r_knee',
62 'r_knee_r_shin', 'r_shin_r_ankle', 'r_ankle_r_foot',
63 'lb_servo_l_hip', 'l_hip_l_thigh', 'l_thigh_l_knee',
64 'l_knee_l_shin', 'l_shin_l_ankle', 'l_ankle_l_foot',
65 'torso_r_shoulder', 'r_shoulder_rs_servo',
're_servo_r_elbow',
66 'torso_l_shoulder', 'l_shoulder_ls_servo',
'le_servo_l_elbow'
67 ]
68 self.all_joints = AllJoints(self.joint_name_lst)
69 self.starting_pos = self.all_joints.jtp_zeros
70
71 def reset(self):
72 self.joint_pos = self.starting_pos
73 print('RESET:', self.joint_pos)
74 self.all_joints.reset_move_jtp(self.starting_pos)
75
76 def step(self, action, duration):
77 print('STEP:', action)
78 self.joint_pos = action
79 self.all_joints.move_jtp(self.joint_pos, duration)
80
81
82 if __name__ == '__main__':
83 plen = PlenEnvironment()
84
85 plen.reset()
86
87 joint_val=np.zeros(18)
88 plen.step(joint_val,0.1)
89 rospy.sleep(1)
90 #=====Movement
Below=================================================
91 print("Hinge on Right")
92 joint_val[1] = 0.2 #hinge
93 joint_val[5] = 0.2 #hinge
94 joint_val[7] = 0.2 #hinge
95 joint_val[11]= 0.2 #hinge
96 joint_val[13]= 0.2 #arms
97 joint_val[16]= -0.2 #arms
98 plen.step(joint_val,0.5)
99 rospy.sleep(0.5)
100 #raw_input("Press Enter to continue...")
101
102 print("Hinge on Right 2")
103 #joint_val[1]= 0.3
104 #joint_val[5]= 0.3 #hinge don't change
105 #joint_val[6]= 0.2
106 #joint_val[7]= 0.3
107 #joint_val[11]= 0.3
108 joint_val[1] = 0.19
109 joint_val[8] = -0.6
110 joint_val[9] = 0.6
111 joint_val[10]= 0.3
112 plen.step(joint_val,0.5)
113 rospy.sleep(0.5)
114 #raw_input("Press Enter to continue...")
115
116 print("l")
117 joint_val[10]= -0.3
118 joint_val[8]= -0.6
119 joint_val[9]= 0.3
120 plen.step(joint_val,0.5)
121 rospy.sleep(0.5)
122 #raw_input("Press Enter to continue...")
123
124 print("Left Touchdown + Right Angle")
125 joint_val[1] = -0.2 #hinge
126 joint_val[5] = -0.2 #hinge
127 joint_val[7] = -0.2 #hinge
128 joint_val[11]= -0.2 #hinge
129 joint_val[2]= 0
130 joint_val[3]= 0 #paha
131 joint_val[4]= -0.3 #mata_kaki depan (pitch)
132 joint_val[10]= -0.3 #mata_kaki depan (pitch)
133 joint_val[12]= 0.6 #arms
134 joint_val[13]= 0.6 #arms opposing force
135 plen.step(joint_val,1)
136 rospy.sleep(1)
137 raw_input("Press Enter to continue...")
138 for i in range(3):
139 print("step 1")
140 joint_val=np.zeros(18)
141 joint_val[1] = 0.2 #hinge
142 joint_val[5] = 0.2 #hinge
143 joint_val[7] = 0.2 #hinge
144 joint_val[11]= 0.2 #hinge
145 joint_val[13]= 0.2 #arms
146 joint_val[16]= -0.2 #arms
147 plen.step(joint_val,0.5)
148 rospy.sleep(0.5)
149
150 print("step 2")#==============
151 joint_val[1] = 0.19
152 joint_val[8] = -0.6
153 joint_val[9] = 0.6
154 joint_val[10]= 0.3
155 plen.step(joint_val,0.5)
156 rospy.sleep(0.5)
157
158 print("step 3")
159 joint_val[10]= -0.3
160 joint_val[8]= -0.6
161 joint_val[9]= 0.3
162 plen.step(joint_val,0.5)
163 rospy.sleep(0.5)
164
165 print("step 4")#=========
166 joint_val[1] = -0.2 #hinge
167 joint_val[5] = -0.2 #hinge
168 joint_val[7] = -0.2 #hinge
169 joint_val[11]= -0.2 #hinge
170 joint_val[2] = 0
171 joint_val[3] = 0 #paha
172 joint_val[4] = -0.3 #mata_kaki depan (pitch)
173 joint_val[10]= -0.3 #mata_kaki depan (pitch)
174 joint_val[12]= 0.6 #arms
175 joint_val[13]= 0.6 #arms opposing force
176 plen.step(joint_val,1)
177 rospy.sleep(1)
178 print("step 1 reverse")
179 joint_val=np.zeros(18)
180 joint_val[1] = -0.2 #hinge
181 joint_val[5] = -0.2 #hinge
182 joint_val[7] = -0.2 #hinge
183 joint_val[11]= -0.2 #hinge
184 joint_val[13]= 0.2 #arms
185 joint_val[16]= -0.2 #arms
186 plen.step(joint_val,1)
187 rospy.sleep(2)
188
189 print("step 2 reverse")#==============
190 joint_val[7] = -0.19
191 joint_val[2] = 0.6
192 joint_val[3] = -0.6
193 joint_val[4]= -0.3
194 plen.step(joint_val,0.7)
195 rospy.sleep(1)
196 #raw_input("Press Enter to continue...")
197
198 print("step 3 reverse")
199 joint_val[4]= 0.3
200 joint_val[2]= 0.6
201 joint_val[3]= -0.3
202 plen.step(joint_val,1)
203 rospy.sleep(1)
204
205 print("step 4")#=========
206 joint_val[1] = 0.2 #hinge
207 joint_val[5] = 0.2 #hinge
208 joint_val[7] = 0.2 #hinge
209 joint_val[11]= 0.2 #hinge
210 joint_val[8] = 0
211 joint_val[9] = 0 #paha
212 joint_val[4] = 0.3 #mata_kaki depan (pitch)
213 joint_val[10]= 0.3 #mata_kaki depan (pitch)
214 joint_val[15]= -0.7 #arms
215 joint_val[16]= -0.9 #arms opposing force
216 plen.step(joint_val,1)
217 rospy.sleep(1)

Langkah selanjutnya setelah program Phyton script sudah dibuat maka harus dilakukan
build kembali dengan perintah catkin_make setelah packet dari PLEN sudah terisntal
maka projek moribots sudah bisa dijalankan.

4.5 Metode pengujian


- (?)

4.6 Metode pengambilan Kesimpulan


- (?)
BAB V : HASIL DAN PEMBAHASAN

5.1 Hasil

5.2 Pembahasan
BAB VI : Penutup
REFERENSI
Quigley, M.. “ROS: an open-source Robot Operating System.” ICRA 2009 (2009). 
 

Anda mungkin juga menyukai