| RSCUAD 2021
| Rscuad Team
peraturan ini dibuat dikarenakan banyaknya penambahan baris program dan pengembangan robot disetiap tahun yang membuat program cukup berantakan, maka rule ini digunakan untuk mencoba melakukan perubahan format program sesui dengan format dari Darwin-OP sehingga program akan lebih mudah dianalisis dan rapi saat dilakukan penambahan kode secara masif.
kami merekomendasi menggunakan code editor Visual Studio Code
- proses editing program dilakukan dikomputer pengembang jika dirobot tidak dianjurkan menggunakan vs code seperti odroid xu4.
pisahkan research Rscuad dengan folder robot darwin OP2 dengan menggunakan submodule untuk library rscuad. tambahkan setiap research baru di dalam repo rscuad. penambahan hanya dilakukan dengan ijin ketua tim.
-
clone folder base OP2
$ git clone https://github.com/R-SCUAD-PROGRESS/rscuad-base.git --recurse-submodules $ cd rscuad-base
anda dapat dengan mudah melakukan konfigurasi dengan melakukan perintah:
$ sudo chmod 777 setup.sh
$ ./setup.sh
-
masuk pada directory Linux/project buat nama baru dengan mengcopy folder soccer jika rule berubah
-
jika tidak lakukan workflow pada folder yang sudah tersedia seperti dibawah
+ build + include + lib - project + Soccer -> perlombaan offline / sepak bola normal + Technical -> perlombaan Technical challenge ....
Aturan pertama yang harus diikuti semua orang wajib menggunakan 'tab' karakter, dan tidak menggunakan spasi, untuk membuat indentasi kode. Juga 'tab' karakter harus mewakili 4 spasi.
Gunakan Pascal case untuk class dan function, gunakan Camel case untuk variable see referance
pada penggunakan kurung kurawal dilakukan dibawah pernyatan (if statement) dan jika ditutup harus sejajar dengan awalan, contoh:
if (error != -ENODEV)
{
Foo();
Bar();
}
jika anda ingin menggunakan else statement, maka else statement tidak boleh sejajar dengan kurung kurawal sebagai berikut:
if (error != -ENODEV)
{
Foo();
Bar();
}
else
{
ReportError();
goto exit;
}
Jika kurung kurawal tidak diperlukan untuk sebuah pernyataan, jangan menggunakannya karena itu tidak diperlukan, contoh:
if (error != -ENODEV)
Foo();
else
goto exit;
jika menggunakan terlalu banyak pernyatakan pastikan membuat fungsi baru pada sebelum fungsi main. hal ini akan memudahkan pengeliatan dalam baris program untuk identifikasi, contoh jika mengalami hal seperti ini:
int main()
{
.....
if(state1)
{
if(state2)
{
if(state3)
{
if(parameterEquation)
{
if(robotEquation)
//do something
}
}
}
}
}
gunakan function untuk membuat program lebih rapi
int Foo()
{
if(parameterEquation)
{
if(robotEquation)
//do something
}
}
int main()
{
.....
if(state1)
{
if(state2)
{
if(state3)
Foo();
}
}
}
variabel merupakan hal yang sering membuat struktur program berubah pada RSCUAD kita coba kembalikan sesuai dengan Framework Darwin-OP yaitu menggunakan bahasa inggris dan nama yang sesuai dengan keperluan variable
const int threshold = 250;
float approach = 0;
gunankan tipe data yang sesui dengan kebutuhan. jika hanya digunakan untuk trigger yang bernilai true dan false maka cukup gunakan boolean;
bool trig = false;
deskripsikan variable pada header library program, kemudian deskripsikan nilai pada construction library lihat disini
file header.h
class Header
{
public:
.....
.....
private:
int yAxis;
int xAxis;
};
file header.cpp
int Header::Header()
: yAxis(0)
, xAxis(0)
{
}
komentar digunakan untuk mendeskripsikan algoritma atau program yang kondisinya perlu dideskripsikan gunakan perintah /* ... untuk mendiskripsikan suatu algoritma tertentu dan // untuk variable. gunakan komentar yang jelas pada setiap algoritma sehingga mudah dipahami. komentar diperbolehkan menggunkan bahasa indonesia.
const int threshold = 250; // const digunakan untuk nilai ketetapan
float approach = 0; // konstanta nilai awal
/*
* algoritma dribling
*/
if(pan != threshold)
Foo();
gunakan pola DRY Principle untuk mengurangi program yang tidak diperlukan. contoh menggunakan perulangan.
/*
* Tidak disarankan
*/
servoPan = 5;
servoPan = 10;
servoPan = 15;
servoPan = 20;
/*
* disarankan
*/
for(int i=5; i<=20; i+5)
servoPan = i;
gunakan fuction atau library jika sebuah kondisi yang digunakan terus menerus
void Foo()
{
X_MOVE_AMPLITUDE = 10;
Y_MOVE_AMPLITUDE = 15;
}
....
int main()
{
......
Foo();
}
GIT adalah sebuah vcs(version control system) digunakan untuk melakukan log dan kolaborasi dalam tim. Tutorial git dapat dilihat disini.
-- pengembangan robot untuk mode jika melakukan pengembangan robot dengan mode-mode tertentu untuk pertandingan yang sama. pengembang diharuskan menggunakan branch untuk membuat environment sendiri sehingga tidak ada perubahan saat melakukan pengembangan di mode lain.
$ git branch mode2
$ git checkout mode2
hanya seperti itu. jika ingin melihat branch seperti ini:
$ git branch
> master
* mode2
tanda * berarti project kita poda branch tersebut.
jika melihat program tidak sesuai format, maka pengembang wajib memperbaiki dan mengkompile terlebih dahulu selanjutkan melakukan update commit dengan nama "format adjustment" dengan cara sebagai berikut.
$ git add .
$ git commit -m "# format adjustment"
$ git push origin master