Home ROS 환경설정
Post
Cancel

ROS 환경설정

ROS 작업 공간 만들기

1
2
3
$mkdir -p ~/catkin_ws/src
$cd ~/catkin_ws
$catkin_make

catkin_makecatkin 작업공간으로, 작업하기 위한 편리한 도구다. 작업영역에서 처음 실행하면 src폴더에 링크가 생성된다. 그리고, devel/build 디렉토리가 함께 생성된다. devel 폴더 내에 여러 가지 설정이 있고, 이러한 파일 중 하나를 소싱하면 이 작업 영역이 나의 환경 위에 덮어진다.

1
$source devel/setup.bash
1
2
$echo $ROS_PACKAGE_PATH
/home/ice/catkin_ws/src:/opt/ros/noetic/share

그 후, 파일을 열어 아래 코드를 추가해줘야 한다.

1
sudo gedit ~/.bashrc
1
2
3
4
5
alias cm='cd ~/xycar_ws && catkin_make'
source /opt/ros/melodic/setup.bash
source ~/xycar_ws/devel/setup.bash
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTname=localhost

추가한 후 저장한다. 그 후 source코드를 통해 시스템에 반영한다.

1
source ~/.bashrc

ROS환경변수가 어떻게 설정되었는지 확인해본다.

1
2
3
4
5
6
7
8
9
10
11
printenv | grep ROS

ROS_VERSION=1
ROS_PYTHON_VERSION=3
ROS_PACKAGE_PATH=/home/ice/xycar_ws/src:/home/ice/catkin_ws/src:/opt/ros/noetic/share
ROSLISP_PACKAGE_DIRECTORIES=/home/ice/xycar_ws/devel/share/common-lisp:/home/ice/catkin_ws/devel/share/common-lisp
ROS_ETC_DIR=/opt/ros/noetic/etc/ros
ROS_MASTER_URI=http://localhost:11311
ROS_HOSTname=localhost
ROS_ROOT=/opt/ros/noetic/share/ros
ROS_DISTRO=noetic

이렇게 환경설정이 완료되었다.


turtlesim 예제

이 예제를 수행하기 위해서는 4개의 터미널이 필요하다. 노드1(publisher = turtle_teleop_key)에서 노드2(subscriber = turtlesim_node)로 토픽(turtle1/cmd_vel)을 전송한다.

  • roscore
  • rosrun turtlesim turtlesim_node
  • rosrun turtlesim turtle_teleop_key
  • rosnode실행, rostopic실행
    • rosrun rqt_graph rqt_graph

일단 터미널1에서 roscore을 실행한다.

터미널2에서 rosnode list를 실행시켜보면 /rosout 만 출력되는 것을 볼 수 있다.

그 다음 터미널2에 rosrun turtlesim turtlesim_node를 실행시켜 node를 생성하게 되면 거북이가 나오는 창이 하나 뜬다.

<img src=”/assets/img/ros/rosrunnode.png” width = 50%><img src=”/assets/img/ros/turtle.png” width=50%>

터미널3에 rosrun turtlesim turtle_teleop_key를 실행한다. 이를 실행하면 터미널에서 방향키로 거북이를 움직일 수 있게 된다.

그 후, 터미널2에서 rosnode list를 다시 실행시켜보면 다른 것들이 추가되어 있다.

rqt_graph를 살펴보기 위해 터미널4에 rosrun rqt_graph rqt_graph를 실행시켜본다.

그림을 보면 teleop_turtle(퍼블리셔 노드) 에서 /turtle/cmd_vel(토픽)이 /turtlesim(서브스크라이버 노드)로 전송되고 있는 것을 확인해볼 수 있다. 그리고 다시 터미널4에 rostopic list를 실행하면 어떤 토픽이 발생(전송)되고 있는지 확인할 수 있다.

그 중 1개를 선택하여 어떤 값인지 확인이 가능하다. 또한, rostopic list -v를 통해 퍼블리셔 노드와 서브스크라이버 노드를 더 자세히 볼 수 있다.


이 때, 토픽을 직접 지정해줄 수도 있다.

1
2
3
4
5
#rosrun {퍼블리셔} {1회} {토픽이름} {메시지 타입} -- {메시지 내용} => 1회 z방향으로 1.8만큼 twist(돈다)
rosrun pub -1 /turtle/cmd_vel geometry_msgs/Twist -- '[2.0,0.0,0.0]' '[0.0,0.0,1.8]'

# -r 은 발행 주기(Hz) => 초당 1회 => 1초당 1회
rosrun pub /turtle/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0,0.0,0.0]' '[0.0,0.0,1.8]'



Reference

This post is licensed under CC BY 4.0 by the author.