본문 바로가기

개발

C 언어 - linked list를 노드로 구현해 봤다. 자료구조 중에서 가장 기초가 되는 형태가 Linked List이다. List들이 서로 이어져 있는 모양인데, 이를 노드라는 기본형들의 연결로 만들어 본다. 노드란 놈은 이렇게 생겼다. 원하는 데이터를 담고 있는 부분과, 다음 연결된 노드를 가리키는 포인터로 구성이 되어 있다. c코드로 나타내 보자면 아래와 같이 생겼다. 1234struct Node { int data; /* 데이터 */ struct Node* nextNode; /* 다음 노드를 가리키는 부분 */};Colored by Color Scriptercs 우리가 실행시켜 볼 main문은 다음과 같이 생겼다. 12345678910int main() { struct Node* Node1 = CreateNode(100); struct Node* No..
C 언어 문자를 숫자로 & 숫자를 문자로 문자를 숫자로 바꾸어 주는 함수는 atoi()이고 stdlib.h에 들어있다. 이는 표준 함수이고 자주 쓰이도 한다. 반대로 숫자를 문자로 바꾸어 주는 함수는 itoa()인데 이는 비표준 함수여서 MS계열인 Visual Studio에서는 쓸 수 있지만 보든 환경에서 쓸 수 있다고는 보장할 수 없다. 이 두 함수들은 정수들 사이에서만 변환이 가능하다, 소수는 못한다. 그리고 범위를 넘어가는 큰 수도 불가하다. 각종 알고리즘 문제들을 풀다 보면 종종 이들이 쓰일 때가 있는데, 이를 구현해 본다. 1234567891011121314151617char* itoa(int val, char * buf, int radix) { char* p = buf; while (val) { if (radix
C - 구조체 배열을 함수에 사용할 때!! 모든 언어가 그렇지만 C언어는 계속 잊어먹는다. 내가 제대로 익히지 못해서가 제일 크다. 그래서 이번에도 다시 정주행을 하고 있는데, 그 과제를 하면서 생긴 이슈에 대한 기록이다. 123456struct Book { char name[30]; char author[30]; char pub[30]; int borrowed;};cs 도서 관리 프로그램을 짜는것이 목표인데, 우선 이런 Book이라는 구조체를 작성하고 이 Book들이 많이 모여 있는 library라는 배열을 만들었다. -강좌에서 이렇게 시키지는 않았음 이 배열 안에 원소들에 접근해서 결론적으로 각 원소의 멤버들의 값을 바꾸고 싶은게 우리가 원하는 것이다. 그런데 함수로 모듈화를 하면, 포인터로 이 주소값을 넘겨야 하는데 이에 대한 이슈이다. 결..
visual studio에서 파이썬 패키지 사용하기 요즘 파이썬을 다시 배우면서 AI 강의를 듣고 있는데 visual studio에서 파이썬 패키지를 추가하는 방법을 작성해 본다. 아무것도 하지 않은 상태에서 import numpy 같은 것을 하면 아래와 같이 뜬다. 보기->다른 창-> 파이썬 환경에서 패키지(PyPI) 검색창에 원하는 패키지 이름을 적게 되면 아래 링크와 같이 pip install oooooo(패키지 이름)이 나타나는데 그것을 그냥 클릭해 주면 완성이다!!!! 참고로 visual studio에서 사용하는 pip은 버전이 10.0.1낮아서 일부 패키지 다운시 실패가 떴는데 이는 pip을 다시 다운받아서 해결한다. opencv같은 것도 nuget으로 바로 설치할 수 있어서 visual studio는 잘 알기만 하면 참 좋은 것 같다. (잘 ..
ros에서 opencv 사용 및 webcam 사용하기 일단은 다음의 커맨드를 통해서 자신의 ros 버전에 맞는 opencv 패키지가 설치되어 있는지 확인을 해 본다. $ sudo apt-get install ros-kinetic-cv-bridge $ sudo apt-get install ros-kinetic-cv-camera 일반적으로 ros를 사용한다면 catkin을 사용한 빌드 시스템을 사용한다. 이 포스트는 이를 가정하고 작성하겠다. 처음 자신만의 노드를 만들 때 종속성으로 roscpp std_msgs 와 같은 패키지를 포함시켜 주는데 webcam사용을 위해 최소한으로 필요한 것들의 리스트는 다음과 같다. 여기서 가장 중요한 것이 find_package( OpenCV REQUIRED )를 반드시 작성해 주어야 한다는 것이다. 이것 때문에 고생했다. 그..
ros 메시지 통신을 공부하고 오로카의 갓갓 표윤석님의 강의(https://cafe.naver.com/openrt/3043)를 그대로 따라하면서 정리한 내용이다. 우선 이 강의가 만들어질 때와 달리 버전이 바뀐 것이 있기에 달라진 설정이 있었다. 강좌의 package.xml 파일과 달리 나의 package.xml은 아래 그림과 같이 포맷 2로 쓰였다. 그래서 대신에 위와 같이 , 가 생겼는데 그래서 다음의 문서를 참고해서 위와 같이 수정하였다. 다음으로는 직접적인 코드에서의 알아낸 내용이다. make가 끝난 뒤 roscore도 키고 아래의 명령어를 치면 ros_tutorial_msg라는 토픽이 열린다. $ rosrun oroca_ros_tutorials ros_tutorial_msg_publisher $ rostopic echo /r..
오드로이드 카메라 oCam-1MGN-U 사용법 oCam(oCam-1MGN-U) 설정 - 1메가 픽셀 USB 3.0 모노 글로벌 셔터 카메라 이다. - USB 3.0으로 사용시 더 빠른 프레임을 얻는다. - 제작사 페이지(http://withrobot.com/camera/ocam-1mgn-u/)에서 스펙과 예제 영상을 볼 수 있고 깃허브 페이지 (https://github.com/withrobot/oCam/tree/master/Firmware)에서 Windows용 USB 드라이버/업로드 프로그램/최신 펌웨어를 다운 받는다. - 장치 관리자에서 아래 그림과 같이 카메라로 인식을 해야 한다. 장치 관리자에서 oCam을 인식한 모습 위 그림같이 인식을 하지 못하는 경우 혹은, 다시 최신의 펌웨어를 업로드하고 싶은 경우 다음의 순서대로 진행한다. Update..
오드로이드 ubuntu & ros 설치 오늘은 국내 회사인 하드 커널 사의 Odroid의 기본 설정을 해보겠습니다 .크게 1. os설치 및 기본 환경 구성 2. odroid에 ros 설치 정도입니다. 그럼~ 우선 준비물을 챙겨 봅시다!!!OS image file - 저는 우분투 16.04 mate 를 사용하였습니다. 다음의 링크를 따라 들어간 뒤 자신의 디바이스에 맞는 버전의 파일을 다운로드 합시다. 저는 xu4를 사용해서 위의 빨간 박스의 파일을 다운받았습니다~!! 그런데 확장자 이름이 조금 이상합니다~ xz가 뭐지?? 싶은데 리눅스 환경에서 주로 사용하는 압축 방식이라 합니다. 이것의 압축을 풀기 위해서 반디집을 설치합니다. Windows용 반디집 설치저의 지난 포스트에서 기억하실지 모르겠지만 os이미지 파일을 이용해서 부팅용 usb를 만..