본문 바로가기
반응형

Language & Framework & GIT116

[C++] 스마트 포인터(SMART POINTER) BAG 파일에 대해 다루다보니, 메모리 할당에 관한 코드를 보게 되어서 그런지 스마트 포인터들이 많이 보였다. 스마트 포인터는 C++에서 메모리 관리를 도와주는 중요한 기능이다. 일반적으로 new 키워드를 사용해 동적으로 할당받은 메모리는, 반드시 delete 키워드를 통해 해제해야 한다. C++에서는 메모리 누수로부터 프로그램의 안전성 보장을 위한 스마트 포인터를 제공한다. 스마트 포인터 : 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해준다. 자주 쓰이는 스마트 포인터는 unique_ptr, shared_ptr이다. 내가 보고 있는 코드만 봐도, 스택오버플로나 다른 참고자료도 대부분 위 두 개만 쓴다. 왜 쓰는 지를 모르는 상황에 갖다 붙여넣기만 하니, 답답해서 정리했다... 2023. 10. 27.
[ROS2] ROS2 BAG 명령어 ROS2에서 BAG파일을 다루는 명령어에 대해 정리해봤다. 1. BAG 파일 레코딩 ros2 bag record -o my_bag_file.bag topic_name 이 명령어는 "topic_name" 토픽에서 수신되는 메시지를 "my_bag_file.bag"라는 이름의 Bag 파일에 레코딩한다 2. BAG 파일 재생 ros2 bag play my_bag_file.bag "my_bag_file.bag" Bag 파일을 재생한다. 이때 레코딩된 메시지가 원래 시간대로 재생된다. 3. BAG 파일 정보 표시 ros2 bag info my_bag_file.bag "my_bag_file.bag" Bag 파일의 정보를 표시한다. 이 명령어는 Bag 파일의 토픽 목록, 메시지 수, 레코딩 기간 등을 보여준다. 4. .. 2023. 10. 27.
[ROS] source /opt/ros/humble/setup.bash 와 source install/local_setup.bash 의 차이 우선 후자에 어떤 내용이 있는지 모르는 경우로 설명을 한다. source /opt/ros/humble/setup.bash : 해당 명령어는 '/opt/ros/humble' 경로에 설치된 ROS의 릴리스 환경을 설정하는데 사용 - ROS의 패키지, 라이브러리의 환경 변수를 현재 터미널 세션에 추가하여 해당 ROS 릴리스의 도구 및 패키지를 사용할 수 있게 하는 것이다. - /opt/ros/humble 은 설치된 ROS 버전의 디렉토리 경로를 나타낸다. source install/local_setup.bash : 현 작업 중인 ROS의 WORKSPACE의 환경 설정에 사용된다. - 직접적으로 설치된 경로가 아니기 때문에, USER가 직접 작성하거나 다운로드한 ROS패키지와 노드의 환경 변수를 서정하여, 해당.. 2023. 10. 25.
[ROS2] Underlay? Overlay? ROS를 사용하다보면 Underlay와 Overlay라는 말이 많이보인다. 이는 패키지 및 환경 구성에 사용되는 중요한 개념이다. Underlay : Ros 환경에서 사용 가능한 기본 ROS 설치를 말한다. 일반적으로 Ros release로 설치되는 ROS 코어 및 표준 라이브러리와 도구를 포함한다. Underlay는 시스템에 설치되며, '/opt/ros/' 디렉토리에 위치한다 는 ROS 릴리스 명을 나타낸다 ROS Underlay는 기본 라이브러리, 도구, 메시지 및 서비스 정의 + 기본 ROS 기능을 제공 Overlay : User가 설치하거나 개발 중인 패키지를 포함하는 사용자 지정 ROS 작업 공간을 가리킨다. 사용자는 ROS 자체 패키지 및 노드를 추가, 확장한다. Overlay는 사용자 홈 디.. 2023. 10. 25.
[LINUX] ros2 [-h][--use-python-default-buffering] 너무 간단한 문제였다. 리눅스에서 새로운 터미널을 띄울 때마다 local_setup.bash를 통해 파일 경로들이 어떻게 되어있는지를 알려주면 됐다. 오랜만에 다뤄서 스텍오버플로까지 뒤지다가, 잘못하면 파일 다 삭제할뻔 했다. . ~/ros2_humble/install/local_setup.bash 커맨드를 입력하면 해결된다. 패키지를 따로 만들어서 실행하게 되면 해당 패키지의 setup파일을 찾아서 알려주면 된다. 2023. 10. 23.
[LINUX] 소스와 바이너리 패키지 설치, 차이가 뭘까? 몰라서 찾아봤다. 소스 컴파일 설치 소스 패키지 소스 패키지에는 일반적으로 여러 파일이 포함되어 있으며 릴리스를 용이하게 하기 위해 소스 패키지가 일반적으로 패키지 및 압축되어있다. Linux에서 가장 일반적으로 사용되는 패키지 압축 형식은 "tar.gz" 이며 소스 패키지를 Tarball 이라고도 한다. Tarball은 Linux 시스템 용 패키징 도구로, 소스 패키지를 패키징 및 압축 할 수 있으며, 결과로 압축 된 압축 파일을 Tarball 파일이라고 한다. 소스컴파일 설치방식의 장점 RPM 파일 없이 소스코드 파일만 제공하는 경우도 많다. 소스코드로 직접 설치하면 더 세밀한 설정이 가능하며 기능을 자유롭게 선택할 수 있다. 소프트웨어가 컴파일 및 설치되기 때문에 시스템에 보다 적합하고 더 안정적이.. 2023. 10. 23.
[LINUX] 쉘 스크립트(Shell Script) 작성 및 필요성 쉘 스크립트(Shell Script) shell을 통한 프로그래밍이 가능하다. 보통 리눅스 등의 서버 작업 프로그래밍 시 많이 쓰인다. 쉘 스크립트는 파일 안에 스크립트를 작성한 후, 즈후걸후란 실행 시 해당 스크립트가 실행되는 방식이다. 쉘 스크립트의 첫 줄은 #!/bin/bash 로 시작된다. #은 주석이다. !은 shebang(, 해시뱅,hashbang)으로 불리며, 스크립트가 실행될 인터프리터를 지정하는 역할이다. 쉘 스크립트는 실행 권한이 있어야 실행 시킬 수 있다. 간단한 쉘 스크립트를 만들어서 실행 해보자. $ vi forever.sh vi [쉘 파일명]을 입력하여 쉘 파일 생성/편집 모드로 들어간다. 필자는 파일명은 forever.sh 로 만들어 보겠다. * shell script의 파일 .. 2023. 10. 20.
반응형