본문 바로가기

분류 전체보기

(9)
[충돌회피-3]Shallow depth image 1.depth image 회득 def get_depth_img(self): # Request DepthPerspective image as uncompressed float response = self.client.simGetImages([airsim.ImageRequest("high_res", airsim.ImageType.DepthPerspective, True, False)])[0] # Reshape to a 2d array with correct width and height depth_img_in_meters = airsim.list_to_2d_float_array(response.image_data_float, response.width, response.height) depth_img_in_..
[충돌회피-1]프로젝트 시작 및 참고 논문 가을학기 대학원 입학전 교수님에게 미리 연구실 생활을 하고싶다하여 7월부터 연구실 생활을 하게되었다. 연구 주제가 강화학습 기반 충돌회피 및 path planning이다 보니 강화학습 공부하면서 토이 프로젝트로 Airsim에서 구현을 해보라는 사수형님의 제안에 프로젝트를 시작하게 되었다. 내가 필력이 그렇게 좋은것은 아니지만 이렇게 블로그에 내가 햇던 과정들을 기록하는게 나중에 연구를 하거나 논문을 쓸때 도움이 될거같아 기록을 남긴다. 또한 글을 적으면서 그때 생각했던 것도 같이 적을거라 사담이 들어갈거같다. 처음에는 강화학습만 2주 가량 공부하다가 박사과정 선배님이 주신 충돌회피 관련 논문중 가장 맘에 드는 아래 논문을 참고하였다. 참고 논문:Smooth Trajectory Collision Avoid..
[ 충돌회피-2] 드론 리스폰&충돌감지&Unit Vector 충돌 혹은 도착점 도착후 새로운 시나리오가 시작될때 출발점으로 다시 가야함으로 아래와같은 코드를 작성했습니다. 1.리스폰 위치 알아내기 import airsim #setting for connecting Airsim client = airsim.MultirotorClient() client.confirmConnection() client.enableApiControl(True) client.armDisarm(True) def get_position(self): # Get the vehicle pose (global position and orientation) of the drone vehicle_pose = self.client.simGetVehiclePose() # Get the global posi..
Opencv를 이용한 디지털 영상처리 Chapter03 정리 및 연습문제 ※ 개인적으로 공부하면서 남긴 기록이라 잘못된 내용이 있을수있어서, 잘못된 내용은 댓글로 알려주세욥 1. Mat 클래스 Opencv에서 영상을 처리하기위해서는 Matrix형태로 데이터를 처리하게되는데 행렬을 쉽게 구현해놓은 것이 Mat클래스입니다. 교수님께서는 대학원시절에 이걸 2차원 배열로 직접 구현했다는데 ㄷㄷㄷㄷ 2. Mat 클래스 기본 구조 Mat클래스 생성자 기본형: Mat (int rows, int cols, int type, const Scalar &s); or Mat (size(int rows,int cols), int type, const Scalar &s); rows: 영상의 행 개수 cols: 영상의 열 type:화소값을 저장하는데 쓰는 자료형(아래에서 자세히 설명) s:화소의 초기값..
s #ifndef IMAGE_PROCESSING_H_ #define IMAGE_PROCESSING_H_ #include #include #include #include #include #include #include #include "opencv2/imgproc/imgproc.hpp" #include #include using namespace std; using namespace cv; class image_process { private: ros::Publisher pub_x; ros::Publisher pub_y; ros::Publisher pub_flag; image_transport::Subscriber sub_img; cv_bridge::CvImagePtr cv_ptr; int minHue,max..
[씨름로봇] 영상처리- color tracking(2) 최종 코드 1. 헤더 #ifndef IMAGE_PROCESSING_H_ #define IMAGE_PROCESSING_H_ #include #include #include #include #include #include #include #include "opencv2/imgproc/imgproc.hpp" using namespace std; using namespace cv; class image_process { private: ros::Publisher pub; image_transport::Subscriber sub_img; cv_bridge::CvImagePtr cv_ptr; int minHue,maxHue; int minSat,maxSat; int minVal,maxVal; int centerX,..
[씨름로봇] 영상처리- color tracking(1) color tracking 이전 글에서 말했듯이 로봇을 인식하는 방법이 아래 사진처럼 로봇위의 색 원통을 보고 로봇을 인식을 해야합니당 자 그러면 어떻게 하느냐 처음에는 yolo같은 딥러닝 알고리즘을 써야하나 했지만 그냥 HSV기반으로 컬러 필터를 만들어서 그부분만 객체화 시키면 되긴하죠 hsv라는 건 이미지의 RGB 대한 정보를 삼차원 형태로 나눈것인데 H(Hue=>색조), S(Saturation=>채도), V(Value=>명도) 자 그래서 이미지를 hsv로 변환해서 할겁니다. 배운지 꽤되서 기억이 가물가물물 소스코드 1. header #ifndef IMAGE_PROCESSING_H_ #define IMAGE_PROCESSING_H_ #include #include #include #include #i..
[씨름로봇] 색 기반 물체 추적 -PID제어로 서보모터 제어 PID제어로 서보 모터 제어 좀.. 어이가 없죠 서보 모터 자체가 PID제어로해서 목표각을 넣어주면 그정도로 각도로 제어가 되는 Servo.h를 쓰면서 그 위에 pid제어기를 또 사용한다니.... 뭐 pid제어기를 사용하는 이유는 물체까지 거리를 알수없어 각도를 못구하기때문에 pid제어기로 물체가 화면의 가운데로 오도록 모터를 제어하게됩니다. PID 제어기 pid제어기에 대한 이론적인 내용은 스킵스킵 pid 제어기에서 error=물체와 영상 화면 중간 좌표와의 거리, process=액츄에이터가 될거같은데 Setpoint랑 output은 뭐지?? 음....대충 ouput= angle로보고 Setpoint는 그냥 error로 보아야될거같네요 수업시간에 배운 내용에 따르면 Kp, Ki, Kd파라미터 값 설정이..