목록컴퓨터 (14)
Bunny Code

roscd : 지정한 ROS 패키지의 디렉터리로 이동 roscore : 마스터, 로그 기록, 파라미터 관리 등 rosrun : 노드 실행 roslaunch : 노드를 여러 개 실행 및 실행 옵션 설정 rosclean : ROS 로그 파일을 검사하거나 삭제 rostopic : 토픽 정보 확인 rosservice : 서비스 정보 확인 rosnode : 노드 정보 확인 rosparam : 파라미터 정보 확인, 수정 rosbag : 메시지 기록, 재생 rosmsg : 메시지 정보 확인 rossrv : 서비스 정보 확인 catkin_create_pkg : 패키지 자동 생성 catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드 catkin_eclipse : 캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 ..

Node → 최소 단위의 실행 가능 프로세서 → ROS에서 Node 단위로 프로그램을 나누어 작업 → 각 Node는 메시지 통신으로 데이터를 주고 받음 Package → 위의 노드 혹은 노드 실행을 위한 정보 등을 묶어 놓은 것 → 패키지의 묶음을 메타패키지라고도 함 Message → 노드간의 데이터를 주고받을 때 사용하는 수단 → 메시지는 integer, floating point, boolean 와 같은 변수형태 → 메시지 안의 메시지를 품고 있는 배열과 같은 구조도 사용 가능 Topic → 단방향의 메시지 통신 방법(연속성을 가짐) (ex, 센서 데이터) → 보내는 애 : Publisher, 받는 애 : Subscriber → 1:N, N:1, N:N 도 가능 → 대부분의 메시지에 Topic 사용 ..

try except 구문으로 예외의 정보, 즉 '예외 객체'를 확인할 수 있습니다. try : except as : 바로 예시를 들어볼게요! 위의 실행된 코드 화면을 보면 정수를 입력함으로서 생기는 오류의 종류, 즉 '예외 객체의 자료형'은 'ValueError" 라는 것을 알 수 있고, 내용은 'invalid literal for int() with base 10 : '정수' 라는 것을 알 수 있습니다. 그렇다면 위에서의 예외 객체를 사용해 예외를 구분해보도록 하겠습니다. 예외 구분은 생기는 예외의 종류가 무엇인지 알고 싶을때 사용합니다. 위의 코드에 문자열을 입력하면 아래와 같은 오류가, 범위에서 벗어난 수를 입력하면 아래와 같은 오류가 나타납니다. 위의 두 가지 오류를 구분해서 처리하고 싶을 때 e..

바로 저번 포스팅에서 try except 구문을 활용해 예외 처리하는 방법을 배웠는데요. 이번에는 try except 구문에다 else 를 추가해보도록 하겠습니다. try : except : else : 저번에 사용한 코드를 그대로 사용해볼게요. try, except 구문만 있을 때는 예외가 발생하지 않았을 때 실행할 코드도 try 영역에 넣었었죠?? 이번에는 예외 발생 가능성이 있는 코드만 try 영역에 넣고 else 구문으로 나머지를 빼보겠습니다. try : input_1,input_2 = int(input("가속도 입력 >")),int(input("시간 입력 >")) except : print("정수로만 입력 가능해요.") else : print("등가속도 운동할 때") print("가속도 :", ..

여태까지 파이썬을 공부하면서 여러 오류들을 보셨을 겁니다. 오류는 크게 '구문 오류' 와 '예외 오류(런타임 오류)' 로 나뉘는데 두 가지가 무엇인지 먼저 알아볼게요. 1) 구문 오류 = 프로그램 자체가 실행되지 않는 오류 예시 : print("구문 오류") print("프로그램이 실행 자체가 안되는 구만" 위와 같이 일부러 두 번째 print 구문의 괄호를 작성하지 않으면 아래와 같은 오류가 발생합니다. 저기 보이는 SyntaxError 라고 불리는 것은 '구문 오류'를 의미합니다. 첫 번째 작성된 올바른 print 구문도 실행되지 않은 것을 확인할 수 있습니다. 그렇다면 '예외 오류' 는 어떨까요? 2) 예외 오류(런타임 오류) = 프로그램이 일단 실행된 다음, 실행 중에 발생하는 오류 예시 : pr..

튜플은 리스트와 비슷한 자료형인데, 한 번 결정된 요소를 바꿀 수 없다는 점이 리스트와 다릅니다. +) 튜플은 괄호를 생략해도 튜플로 인식할 수 있는 경우, 괄호 생략 가능 tuple = (, , ... , ) (리스트의 괄호 형태는 [], 딕셔너리의 괄호 형태는 {}) 위의 사진에서 볼 수 있듯이, 튜플의 요소를 변경하려고 할 경우 오류가 발생하는 것을 확인할 수 있습니다. 여기서 또 주의해야할 점이, 리스트는 요소의 개수에 상관없이 항상 선언하는 방법이 똑같지만, 튜플의 경우 요소를 하나만 가질 경우 특별한 방법이 필요합니다. tuple = (, ) (첫 번째 요소 뒤에 의미 없는 쉼표를 넣어줘야 함.) 튜플을 사용해 값을 할당하는 것도 간단합니다. 튜플을 사용하면 여러 개의 값을 리턴하고 할당할 수..

저번 포스팅에서 재귀 함수는 계산을 반복하기 때문에 문제점이 많다고 했습니다. 이번 포스팅에서는 이로 인해 생기는 문제점인 메모화 기술을 알아보겠습니다. 먼저, 재귀 함수도 복습할 겸, 생기는 문제점을 실감하기 위해 재귀 함수를 이용해 피보나치 수열을 작성하는 코드를 살펴볼게요! 위의 코드 처럼 입력하면 굉장히 잘 짜여진 코드라고 생각할 수 있지만 저 코드로 피보나치 수열의 40 번째 항을 계산해보세요. 코드가 바로 40번째 항을 출력해주나요?? 아닙니다!! (컴퓨터에 따라 다르겠지만 저는 한 3~4초정도 걸렸어요.) 더 높은 항을 구하려고 할 수록 걸리는 시간은 기하급수적으로 늘어나게 됩니다.(아까 언급하기도 했지만 계산을 많이 반복하기 때문) 그렇다면 코드를 작성해서, 얼마나 반복하는지도 알아보겠습니..

이번 포스팅에서는 return 이라는 키워드에 대해 다뤄보겠습니다. return 이 의미하는 바는 '함수를 실행했던 위치로 돌아가라', '함수를 여기서 끝내라' 라는 뜻입니다. (매개변수 포스팅 부터 갑자기 어려워지는 듯한 느낌이 심한데 저도 어려워서 이해하느라 힘들었어요..ㅠㅠ) 위의 입력 화면을 보시면 return 이라는 키워드가 아래의 print("버즈밴드는 못생겼어") 의 출력을 막아줍니다. print("버즈밴드는 멋있어") 까지만 출력해주고 함수를 끝내줍니다. 만약 return 뒤에 자료를 입력하면, 자료를 가지고 return 하게 됩니다. return 뒤에 써 준 100000 라는 숫자를 가지고 return 한 것을 확인할 수 있습니다. 일반적으로 함수를 만들 때 값을 만들어 리턴하는 형태로 ..