#ROS를 사용하며 항상 그냥 하라는대로 CMakeList.txt 파일을 변경해 왔었는데 이번기회에 약간 알아보고 실습도 해보니 모르고 있을 때와 다르게 감이 확 왔다. #cmake Makefile을 보다 쉽고 편리하게 작성할 수 있게 해주는 것이므로 Makefile에 대해 알아볼 필요가 있었다. https://www.tuwlab.com/27193 #https://www.tuwlab.com/ece/27234 cmake를 사용하면 좋은 점은 소스코드와 실행파일에 관심을 집중하고 중간에나오는 부산물들에대해서 신경을 덜 쓸수 있게 된다고 한다. 배운 구문 몇가지add_executable() : 생성할 바이너리 add_library() : 라이브러리 추가target_link_libraries() : 바이너리에 ..
#g++ 컴파일러의 기본적인 옵션들을 정리해보자.CMakeList.txt를 작성할 때도 유용하게 쓸 지식인 것 같다. g++ --help 명령을 통해 알아본 옵션들이다. 옵션:-pass-exit-codes : 단락의 가장 높은 에러코드에서 탈출--help : 정보 표시--target-help : 특정 코맨드라인 옵션의 타겟 출력--version : 버전 정보 출력-dumpspecs : 모든 내장 스펙 문장 출력-dumpversion : 컴파일러의 버전 출력-dumpmachine : 컴파일러의 타겟 프로세스 출력-print-search-dirs : 컴파일러의 검색 경로의 디렉토리들을 출력-print-libgcc-file-name : 컴파일러의 동료 라이브러리 이름 출력-print -file-name= : ..
#위임 생성자(delegating constructor)는 배울 때 미국에서 swift를 하며 매일 같이 생각했던 delegate와 같았다. constructor 에서 같은 클래스 내의 다른 constructor를 쓸 수 있는 기능을 delegating cnostructor라고 한다. ex) class Student{private:int id;int score; public://일반적인 constructorStudent( const int& id_input, const int& score_input) : id(id_input), score(score_input) {} //delegating constructor를 사용Student(const int& id_input){Student(id_input, 10..
# 막간을 이용해 C++ 강의를 들으며 따라했다. expression list treated as compound expression in mem-initializer이런 에러가 나왔는데 문제가 된 줄은Something() : i(1), d(3,14), c('a') : { }였다. 구글링한 결과 만족할 만한 경우가 별로없었고 잘 되던 구문이 왜 문제 인지 몇분 정도 고민 했는데, 3,14 가 문제였다. 콤마가 아니라 점을 적어야 했는데,, 비쥬얼 스튜디오였으면 잘 잡아줬을 것 같긴 하다. # 멤버리스트로 생성를 이용한 초기화를 할 땐something : i{1} , d{3.4} ,c{'a} 처럼 () 가 아니라 {}로 받을 수 있다. 다른 점은 {}를 쓰면 형 변환을 막아주어 좀 더 엄격한 선언을 할 수..
# C++ 기본적인 클래스 개념을 다지기 위해 다시 공부를 시자했다. 홍정모 교수님의 따라배우는 C++ 로 입문하였다. 오버로딩 전까지는 이걸로 개념을 다지고 다시 primer로 돌아가던가 영상을 쭉본후 primer로 다시 다지는 식으로 공부하면 좋을 것 같다. #1. class 는 기본적으로 멤버를 private으로 선언한다.2. private멤버는 public 메서드에서 접근할 수 있다.3. 클래스 객체{멤버들} 방식으로 초기화 선언 할 수 있다. #vim은 하루에 꼭 한번 써보면서 연습중이다. 편할 때도 있고 불편할 때도 있어서 뭔가 아쉽다. #gedit을 여러모로 손봐서 썩 괜찮은 에디터로 만들었다. c++ 환경구성은 매일 해나가는 재미가 있다. #gazebo튜토리얼 한 편을 끝냈다. 내일은 또 ..
# Gazebo 를 이용한 velodine Lidar 모델링 첫 번째 튜토리얼 http://gazebosim.org/tutorials?cat=guided_i&tut=guided_i1 # world 파일을 실행했는데 이상하게 아무 것도 뜨지 않아서 한참 찾아보았다. 문제는 부분을 내부에 뒀어야했는데 내부, 밖에다 두게되어 이런 현상이 있었다. 조인트를 삽입하고 센서를 모델링하는 부분까지 실습해 보았다. 아직 inertia나 pose가 왜그런식으로 정해지는지 감이 잘 오지 않는다.
#lofi hip hop을 듣다가 좋은 말이 흘러나와 스티커 메모에 적었다. Yesterday is history, tomorrow is a mystery, but today is a gift. That is why it is called present. 예전에 어바웃 타임을 보면서 생각해 보았던 교훈을 다시금 되새길 수 있었다. 알고보니 쿵푸팬더에서의 대사였다. #오늘 어느정도 나태한 날을 보냈다. 나는 어떤 결심을 가지고 일을 하면 2주정도의 간격에서 반동이 한 번 오는 것같다. 이건 평생을 살면서 바뀐적이 없는 텀이기에, 이 기간을 고치려 하지 않을 것이다. 사람은 쉽게 변하지 않고, 나 또한 수많은 후회를 겪으며 내가 누군지 잘 알게 되었기 때문이다. 다만 내가 이런 사람이란 것을 인정하고 내가 ..
1. default constructor (디폴트 생성자)의 역할 클래스 객체();- 이 문장을 사용하면 디폴트 생성자가 사용되며 객체가 객체화 될줄 알았는데 아니었다. 함수가 정의되는 것이었다. 다시 보니 클래스타입의 반환형을 갖는 함수인게 당연한건데 다른 생성자를 이용한 초기화에 생각이 몰리다보니 저런 생각을 했던 것 같다. 심지어 책에서도 C++ 초보자들이 하는 실수라고 주의 사항에 적혀있다 ㅋㅋ 2. 클래스 임시적 형 변환 (implicit class-type conversions) 이 파트는 C++ 카테고리에서 따로 한번 정리해야겠다. 좀 신기하면서도 복잡한 내용이었는데 간략히하면 클래스에 인자를 하나만 받는 생성자가 있을 때 그 인자타입을 갖는 변수를 해당 클래스로 형 변환 할수 있다는 것이다..