[ROS] ROS Noetic 환경 구성
설치 환경
OS : Ubuntu 23.10
GPU : NVIDIA GeForce RTX 4080 Laptop GPU
ROS version: ROS1 Noetic
ROS Noetic install
1. Ubuntu Repository 설정 확인
- Software & Updates 들어가서 main, universe, restricted, multiverse 모두 check 되어 있는지 확인
2. ROS 설치
-
packages.ros.org에서 소프트웨어 다운로드를 할 수 있도록 sources.list 설정
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'xxxxxxxxxx sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
-
ROS 설치
sudo apt install ros-noetic-desktop-full
2.1 Docker를 이용한 ROS (2번으로 설치가 되지 않는 경우)
Ubuntu 23.10에서는 noetic이 설치가 되지 않는 것 같아 Docker Image를 이용하여 실행
- Docker Image를 이용하여 Docker container 생성
# <DISTRO> : indigo / kinetic / melodic / noetic 등등...
docker run -it \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
osrf/ros:<DISTRO>-desktop-full
- Docker Image를 이용하여 Docker container 생성
3. ROS 환경 구축
ROS는 설치를 한 후, 사용 중인 터미널에서 ROS는 사용하기 위한 방법은 환경 설정은 위한 셋업 파일을 실행
-
일시적 실행을 위한 명령
source /opt/ros/noetic/setup.bash
-
영구적인 방법
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc
4. 의존 패키지 설치
-
의존 패키지 설치
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
-
terminator (다중 터미널 창 관리 위함)
sudo apt install terminator
5. rosdep 초기화
sudo rosdep init
rosdep update
이 때, sudo rosdep init
하는데 아래와 같은 error가 발생한다면
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
아래와 같은 명령어로 파일을 제거하고 다시 명령어 사용
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
ROS 삭제
삭제가 필요한 경우
wget -c https://raw.githubusercontent.com/qboticslabs/ros_install_noetic/master/ros_uninstall_noetic.sh && chmod +x ./ros_uninstall_noetic.sh && ./ros_uninstall_noetic.sh
ROS workspace 구성
ROS 기반의 프로젝트는 별도의 workspace 폴더를 만들어 구성
아래와 같은 폴더로 구성이 됨
- src
- devel
- build
- logs
ROS workspace 빌드를 하기 위해서는 catkin 사용
ROS 빌드
-
ROS workspace를 위하여 아래와 같이 폴더 구성
mkdir -p ~/catkin_ws/src
- catkin_ws가 workspace의 root 폴더
- 필요한 소스 코드는 src 폴더 아래에 저장
-
전체 workspace 빌드
catkin_make
-
root 폴더에서 실행
-
빌드가 되면 build, devel 폴더 생성
-
-
소스 코드 사용위한 환경 설정
source devel/setup.bash
ROS Node
ROS에서 node는 어떤 프로그램이 실행하는 하나하나의 단위
즉 실행 가능한 최소 단위의 프로세스를 의미
ROS NODE 실습
-
terminator 실행
exec dbus-run-session -- bash terminator
-
튜토리얼 실습을 위한 ROS 패키지 설치
sudo apt install ros-noetic-ros-tutorials
-
roscore 실행
roscore
- ROS 기반 시스템에서 전제 조건으로 여겨지는 일부 노드와 프로그램의 집합
- ROS를 사용할때 가장 먼저 실행해야 함
- terminal에서 항상 실행하고 있어야 함
-
node list 확인
rosnode list
- roscore만 실행한 경우에는
/rosout
만 결과로 나옴
- roscore만 실행한 경우에는
-
예제 노드 (프로그램) 실행
rosrun [package_name] [node_name] rosrun turtlesim turtlesim_node
- 실행 하면 위와 같은 결과 출력
-
node list 확인
rosnode list
- 위의 거북이 그림을 출력하면
/rosout
와/turtlesim
, 2개의 결과 출력
- 위의 거북이 그림을 출력하면
ROS Topic
ROS TOPIC, Message
간단하게 말하면 어떤 데이터의 단위
Node안에서 데이터를 다른 node와 주고 받을 때, 그 단위를 topic이라고 생각할 수 있음
A node 에서 B node로 ‘helllo’ 라는 라는 문장을 전달하면
A node는 publish 라는 행위를 통해 topic을 보냄
B node는 subscribe라는 행위를 통해 topic을 받음
이 때 message 라는 개념이 등장하는데 topic을 publish, subscribe 할 때 사용되는 ROS의 자료형이라고 생각하면 되고, ROS에서 노드들끼리 서로 topic에 message 발행하여 통신을 주고 받음
node는 topic에 message를 publish, subscribe하여 message 주고 받음
ROS TOPIC 실습
-
roscore와 turtlesim이 실행된 상태로 새로운 터미널에서 키보드로 turtlesim을 조작할 수 있는 node 실행
rosrun turtlesim turtle_teleop_key
- 위의 명령어를 실행한 터미널에서 화살표로 조작 가능
-
node list 확인
rosnode list
/rosout
,/teleop_turtle
,/turtlesim
-
ROS topic 확인
-
rostopic 명령어를 통한 확인
rostopic list
- 현재 활성화된 node로 부터 얻을 수 있는 모든 topic 확인 가능
/rosout
,/rosout_agg
,/turtle1/cmd_vel
,/turtle1/color_sensor
,/turtle1/pose
rostopic echo /turtle1/cmd_vel
- echo를 통하여 해당 topic으로부터 나오는 값 실시간 확인 가능
-
시각화를 통한 확인
sudo apt install ros-noetic-rqt sudo apt install ros-noetic-rqt-common-plugins
- 시각화를 위함 rqt-graph 설치
rosrun rqt_graph rqt_graph
-
위의 실습으로 다시 정리를 하자면
ROS topic은 서로 다른 노드 간에 데이터 등의 정보를 주고받을 때 쓰이는 단위라고 생각하는 것이 좋음
ROS bag
ROS bag 실습 1
-
실습 파일 다운로드
- https://www.dropbox.com/s/9gofcgfzaa8oyft/ouster_example.bag?dl=0
-
해당 파일을 실행하기 위해 ouster ros package 설치하여 환경 구성
mkdir -p ouster_ws/src && cd ouster_ws/src git clone https://github.com/ouster-lidar/ouster_example cd .. catkin_make
- rosbag 파일이 ouster LiDAR를 기준으로 제작이 되어 ouster ros package가 설치되어야 함
-
rosbag 파일 실행
rosbag play -l ouster_example.bag
-l
: 무한하게 재생하고 싶은 경우, loop를 의미
-
rosbag 파일 정보 확인
rosbag info
-
rosbag 파일 시각화
rviz
- rviz는 ROS에서 제공하는 시각화 툴 중 하나
ROS bag 실습 2
-
실습 파일 다운로드
- https://ndownloader.figshare.com/files/15571046
-
다운받은 rosbag 실행
rosbag play -l lobby_lidar.bag
-
bag 파일 정보 확인
rosbag info lobby_lidar.bag
-
VLP16 드라이버 설치
sudo apt install ros-noetic-velodyne mkdir -p velo_ws/src && cd velo_ws/src git clone https://github.com/ros-drivers/velodyne.git cd .. rosdep install --from-paths src --ignore-src --rosdistro noetic -y catkin_make
- velodyne을 기반으로 데이터를 취득했기 때문에
-
rosbag 파일 시각화
rviz
- rosbag이 실행되고 있는 상태에서 rviz를 실행하여 시각화
-
launch 파일 사용을 위한 환경 설정
source devel/setup.bash roslaunch velodyne_pointcloud VLP16_points.launch
velo_ws
에서 진행
참고