Superman API Documentation - YuKyungKim/GitTest02 GitHub Wiki
Superman์ linux ๊ธฐ๋ฐ Drone OS์ด๋ค.
์ด ๋ฌธ์๋ Superman API์ ๋ํด ๊ธฐ์ ํ ๋ฌธ์์ด๋ค.
tables of contents
- Control
- Motor
- Class Motor
- MotorInterface.c
- PID
- Class PID
- Sensor
- Class IMUInterface
- Motor
- Network
- network.c
- protocol.c
- Struct PACKET
- TCP_Server.c
- UDP_Server.c
- Drone_Epoll.c
- ctl.c
๋ชจํฐ ์ฅ์น๋ฅผ ์ํ ๊ธฐ๋ณธ ํด๋์ค. ๊ณตํต๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ.
์๋ก์ด ์ฅ์น ์ถ๊ฐ์ ์ด ํ์ผ์ include ํ์ฌ ๊ทธ๋๋ก ์ฌ์ฉํ๋๋ก ํจ.
๊ฐ ํจ์๋ค์ ์๋ก ์ถ๊ฐํ๋ ์ฅ์น ํ๊ฒฝ์ ๋ฐ๋ผ ์ค์ .
private int speed
private int pin
public int init()
set up wiringPi enviroment
Returns
- -1 : Error
- 1 : OK
public int setPin (int pinNum)
Selecting Pin number using softpwm output
Parameters
- pinNum
- pin using pwm gpio
Returns
- -1 : Error
- 1 : OK
public void calibration()
Calbration for init setting ESC motor.
public void setSpeed (int value)
Setting speed
Parameters
- Speed value
- range (0 ~ 2500)
public void stop()
Stop drone
MotorInterface ์ ๊ตฌํ๋ถ๋ก ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํจ.
Motor.h ์ ์ํด ์ฌ์ฉ๋๋ ์ฅ์น๊ฐ ๊ฒฐ์ ๋๋ฉฐ ํด๋น ํ์ผ์ ์ธํฐํ์ด์ค๋ก ์ฌ์ฉ.
์๋ก์ด ์ฅ์น๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ์ด ํ์ผ์ ๋ณต์ฌํ์ฌ ์ฌ์ฉ.
public int Motor::init()
set up wiringPi enviroment
๊ณตํต๋ถ๋ถ. wiringPi ์ค์ ๋ฐ ์๋ ์ด๊ธฐํ
Returns
- -1 : Error
- 1 : OK
public int Motor::setPin (int pinNum)
Selecting Pin number using softpwm output
๊ณตํต๋ถ๋ถ. ๋ชจํฐ ์ฌ์ฉ ํ๋๋ฒ ์ค์ .
Parameters
- pinNum
- pin using pwm gpio
Returns
- -1 : Error
- 1 : OK
public void Motor::calibration()
Calbration for init setting ESC motor.
๊ฐ ESC ์ ๋ฐ์ดํฐ์ํธ ์ฐธ์กฐํ์ฌ Clibrate ์ฝ๋ ์์ฑ
public void Motor::setSpeed (int value)
Setting speed
๊ณตํต๋ถ๋ถ. Range ๋ฒ์ ๋ด์ ์๋ ์ง์
Parameters
- Speed value
- range (0 ~ 2500)
public void Motor::stop()
Stop drone
๊ณตํต๋ถ๋ถ. ์๋ 0 ์ง์
private float Kd
private float Ki
private float Kp
private float P_pid
private float I_pid
private float D_pid
private float P_err
private float I_err
private float D_err
private float dt
private float P_ pid_prev
private struct timeval start_point
private struct timeval end_point
public int init()
public void setTuning (float kd, float ki, float kp)
set pid constant for calculating
Parameters
- kp : p constant
- ki : i constant
- kd : d constant
public int calcPID (float aimVal, float inVal)
Calculation pid ( input to aim value )
Parameters
- aimVal : aim that we want tilt
- inVal : current tilt
Returns
- int : integer value that motor power
public void initKpid (float kd, float ki, float kp)
changing pid constant during executing program
IMU์ ๊ธฐ๋ณธ์ ์ธ ํจ์๋ค์ ์ ์ ํ ๋ถ๋ถ์ผ๋ก, ์๋ก์ด ์ผ์๋ฅผ ์ถ๊ฐํ ๋ IMUInterface ํด๋์ค๋ฅผ ์์ ๋ฐ์ ์ฝ๋ฉํ ๊ฒ.
public int init()
์ผ์ ์ด๊ธฐํ, ์ฐ๊ฒฐํ์ธ.
Returns
- 1 = ์ฐ๊ฒฐ ์ฑ๊ณต
- 0 = ์ฐ๊ฒฐ ์คํจ
public void getIMUData (float *roll, float *pitch, float *yaw)
์ผ์์ Roll, Pitch, Yaw๋ฅผ ๊ณ์ฐ.
public void calibration()
์ผ์ offest ๋ณด์
network์ ์ ์ธ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ธฐ ์ํ ํ์ผ.
int network_init (int* tcp, int* udp)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
int json_read (int socket, double x, double * y, double * z, int * t)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
void json_write (int socket, double x, double y, double z, int t)
์ค๋ช
Parameters
- param1 :
- parma2 :
int network_exit (int tcp, int udp)
์ค๋ช
Parameters
- param1 :
- parma2 :
int tcp_read (int socket)
์ค๋ช
Parameters
- param1 :
- parma2 :
network์ ์ ์ธ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ธฐ ์ํ ํ์ผ.
Packet string_to_struct (char* buf)
char array์ ์๋ ๋ฐ์ดํฐ๋ฅผ packet๊ตฌ์กฐ์ฒด์ ๋ฃ๋ ํจ์.
char๋ฅผ ๋ฆฌํด ๋ค์๋ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์, argu์ ์ง์ด๋ฃ๋๋ค.
Parameters
- packet : buf์ ์ง์ด๋ฃ์ ๋ฐ์ดํฐ๊ฐ ์๋ struct
- buf : struct์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ char
void struct_to_string (Packet packet, char *buf)
packet๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ char array๋ก ๋๊ธฐ๋ ํจ์ char๋ฅผ ๋ฆฌํด๋ค์๋ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์, argu์ ์ง์ด๋ฃ๋๋ค.
Parameters
- packet : buf์ ์ง์ด๋ฃ์ ๋ฐ์ดํฐ๊ฐ ์๋ struct
- buf : struct์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ char
float ntohf* (float f)
floatํ ๋ณ์๋, htonlํจ์๊ฐ ์๋จน๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก, ๋ฐ๊ฟ์ฃผ๋ ํจ์์ด๋ค.
Parameters
- f : byteorder๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ float
Returns
- host byte order๋ก ๋ฐ๋ float ๋ณ์
float htonf (float f)
์ค๋ช
Parameters
- param1 :
- parma2 :
int endian_check()
network byte order์ธ์ง host byte order์ธ์ง ํ์ธํ๋ ํจ์
Returns
- 0 :
- 1 :
void print_buf (char* buf)
char array์ buffer๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ๋ฒํผ
Parameters
- buf : ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํ ๋ณ์
void print_packet (Packet packet)
์ค๋ช
Parameters
- packet : ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํ ๋ณ์
void packet_swticher (Packet packet)
์ค๋ช
Parameters
- param1 :
int init_message (int socket)
init ์ ์ฐจ๋ฅผ ์ํํ๋ ํ๋ก์ธ์ค flag==1์ผ๋,
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
void recv_control (int socket)
control message๋ฅผ ๋ฐ๋ ํจํท
Parameters
- param1 :
- parma2 :
void send_status (int socket)
status message๋ฅผ ๋ณด๋ด๋ ํจํท
Parameters
- param1 :
- parma2 :
Packet์ ๊ตฌ์กฐ.
uint8_t H
Header ๋ถ๋ถ์ด๋ค. 0xEE๋ก ๊ณ ์ .
uint8_t F
flag๋ถ๋ถ์ด๋ค. ์ด flag๋ฅผ ํตํ switch๋ฌธ์ผ๋ก ํจ์๋ฅผ ์คํํ๋ค.
uint16_t S
sequence ๋ถ๋ถ์ด๋ค. ์ถํ์ ๊ฒฐ์ ํ ์์ ์ด๋ค.
float X
control์์๋ x์ถ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
float Y
control์์๋ y์ถ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
float Z
control์์๋ z์ถ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
uint32_t T
control์์๋ thoughput์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
// ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ X,Y,Z,T๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ด๋ณด๋ด๋ ์ญํ ์ ํ๋ค.// -> ์ด๋ค ๋ค๋ฅธ ๊ฒฝ์ฐ? ์ด๋ค ๋ฐ์ดํฐ? ์์ธํ ์ค๋ช ํ์..
TCP_Socket์ ์์ฑ๊ณผ ํด๋น ๋์คํฌ๋ฆฝํฐ ๋ฐํ.
int CreateTCPServerSocket (unsigned short port)
ServerSocket์ ์์ฑํ๊ธฐ ์ํ ํจ์ socket->bind->listen๊น์ง
Parameters
- port : ํด๋น ํฌํธ๋ฒํธ๋ก Tcp server socket์ ์์ฑํ๊ธฐ ์ํ ๋ณ์
Returns
- -1 : socket ์์ฑ ์คํจ
- 0 : bind error
int AcceptTCPConnection (int servSock)
CreateTCPServerSocket์ ํตํด ์์ฑ๋ Serversocket์ผ๋ก acceptํ๊ธฐ ์ํ ํจ์
Parameters
- servSock : ServerSocket์ ๋์คํฌ๋ฆฝํฐ
Returns
- ์ค์ ๋ก ์ฐ๊ฒฐ๋ client์ 1:1๋ก ์ฐ๊ฒฐ๋์ด ์๋ TCP์์ผ ๋์คํฌ๋ฆฝํฐ
int TCP_connect_init (unsigned short port)
CreateTCPServerSocket์ AccpetTCPConnection์ ์ํํด, ์ค์ 1:1 ๋ก client ์ฐ๊ฒฐ๋ ์์ผ์ ๋์คํฌ๋ฆฝํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ ์ํ ํจ์.
DOS-project์์๋ ๋ ์ด์์ TCP server socket์ด ํ์ ์๊ธฐ ๋๋ฌธ์, close๋ฅผ ํตํด ๋ซ๊ณ , 1:1๋ก ์ฐ๊ฒฐ๋ ๋์คํฌ๋ฆฝํฐ๋ง ๋ฐํํ๋ค.
Parameters
- port: Server Socket์ ์ด๊ธฐ ์ํ port number
Returns
- ์ค์ ๋ก ์ฐ๊ฒฐ๋ client์ 1:1๋ก ์ฐ๊ฒฐ๋์ด ์๋ TCP์์ผ ๋์คํฌ๋ฆฝํฐ
UDP_Socket์ ์์ฑ๊ณผ ํด๋น ๋์คํฌ๋ฆฝํฐ ๋ฐํ.
int CreateUDPServerSocket (unsigned short port)
UDP socket์ ์์ฑํ๊ธฐ ์ํ ํจ์.
socket์์ bind๊น์ง.
Parameters
- port: ํด๋น ํฌํธ๋ฒํธ๋ก UDP server socket์ ์์ฑํ๊ธฐ ์ํ ๋ณ์
Returns
- -1 : socket ์์ฑ ์คํจ
- 0 : bind error
int UDP_connect_init (unsigned short port)
๊ธฐ์กด์ 1:1 ๋ฐฉ์์ UDP ์ฐ๊ฒฐ ๋ฐฉ๋ฒ ๋์ connected UDP ๋ฐฉ์์ ์ด์ฉํ๋ฉด, UDP socket์ IP์ PORT๋ฒํธ๋ฅผ ๋ฏธ๋ฆฌ ์ ๋ ฅํ ์ํ์์ ๋ฐ์ดํฐ๋ง ์ ์กํ์ฌ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ ํ ์ ์๋ค.
๋ํ ๊ธฐ์กด์ UDP ๋ฐฉ์์์๋ recvfrom์ด๋ sendto ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐํด, Conneted UDP ๋ฐฉ์์์๋ read, writeํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ด ์ค์ ์ฝ๋์ ํจ์จ์ฑ๋ ์ฆ๊ฐํ๋ฏ๋ก, Connected UDP ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค.
Parameters
- tcp : getpeername์ผ๋ก ์๋๋ฐฉ์ ip๋ฅผ ํ์ธํ๊ธฐ ์ํ ๋ณ์
- port: ์๋ udp port๋ฒํธ๋ฅผ ์๊ธฐ ์ํ ๋ณ์
Returns
- ์ค์ ๋ก ์ฐ๊ฒฐ๋ client์ 1:1๋ก ์ฐ๊ฒฐ๋์ด ์๋ TCP์์ผ ๋์คํฌ๋ฆฝํฐ.
EPOLL ํด๋น ๋์คํฌ๋ฆฝํฐ ์์ฑ๊ณผ, epoll์ ์์ผ์ ์ถ๊ฐํ๋ ๊ณผ์ ๊ณผ, ๋๋ฆฌ๋ ๊ณผ์
int epoll_init()
epoll ๋์คํฌ๋ฆฝํฐ๋ฅผ ์์ฑํ๋ ํจ์
Returns
- epoll ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํ
int epoll_run (int tcp1, int udp1, int udp2, int timeout)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
socket์ ์ค์ ๊ณผ ํ์ธ์ ๋ํ ํจ์ ๊ตฌํ.
void get_string_access_mode2 (int val, char* ret)
์ค๋ช
Parameters
- param1 :
- parma2 :
int async_test (int fd, int flag)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
int change_mode (int socket)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :
int sock_reuse (int socket)
์ค๋ช
Parameters
- param1 :
- parma2 :
Returns
- result1 :
- result2 :