Robotics/ROS

3. roscore, rosmaster, rosnode

Dogun Kim 2025. 2. 10. 22:24

 이전 글에서 roslaunch 명령어를 통해 로봇이 포함된 gazebo, 시각화를 위한 rviz를 동시에 실행했다. 이후 rosrun 함수를 통해 telpoperation을 추가적으로 실행했었다. 이러한 함수들에 대해 공부해볼 것이다.

 

  • Node

우선  ROS는 각 프로세스들을 Node의 단위로 관리한다는 것을 알아야한다. 

ex) 카메라로 인지하는 프로세스를 한 노드로...

 각 프로세스 즉 노드들이 서로 데이터를 주고 받기 위해서는 어떤 노드가 존재하며, 이 노드의 정보는 무엇이고 등의 정보 공유가 필요할 것이다. 이를 위해 각 노드들을 관리하는 것이 바로 ROS Master이다.

 

참고를 위해 launch를 하면 다음과 같은 결과가 터미널에 나올 것이다. 여기서 NODES 부분에서 여러 노드들이 실행된 걸 알 수 있다. 

$ cd ~/gcamp_ws
$ sds

$ roslaunch gcamp_gazebo gazebo_world.launch 

... logging to /home/kimsooyoung/.ros/log/7f9651be-4e53-11eb-b4c9-9cb6d08bf543/roslaunch-kimsooyoung-XPS-13-9370-32277.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

xacro: in-order processing became default in ROS Melodic. You can drop the option.
started roslaunch server http://localhost:35661/

SUMMARY
========

PARAMETERS
 * /gazebo/enable_ros_network: True
 * /joint_state_publisher/use_gui: False
 * /robot_description: <?xml version="1....
 * /rosdistro: melodic
 * /rosversion: 1.14.10
 * /use_sim_time: True

NODES
  /
    gazebo (gazebo_ros/gzserver)
    gazebo_gui (gazebo_ros/gzclient)
    joint_state_publisher (joint_state_publisher/joint_state_publisher)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    rviz (rviz/rviz)
    urdf_spawner (gazebo_ros/spawn_model)

auto-starting new master
process[master]: started with pid [32301]
ROS_MASTER_URI=http://localhost:11311
...

 

 

 

  • roscore
roscore

ROS Master를 실행시키는 명령이다. ROS Master는 하나만 존재할 수 있기에 여러번 실행할 수 없다.

 

 

 

  • roslaunch
roslaunch gcamp_gazebo gazebo_world.launch

launch 파일을 실행한다. ROSMaster를 포함해 모든 노드들이 실행된다. 

 

 

 

  •  실행 중인 노드들 확인하기

실행 중인 노드를 확인하고 싶으면 다음 커맨드를 사용한다.

$ roslaunch gcamp_gazebo gazebo_world.launch
# 런치 파일에 포함된 모든 노드들이 실행됐다.


$ rosnode list # 1) 실행중인 노드들이 나온다.


$ rosnode info /<노드 이름> # 2) 특정 노드의 정보를 확인할 수 있다.


rqt_graph # 3) 모든 노드들이 어떻게 연결되어 있는지 시각화 해준다.

 

rqt_graph의 결과

 

화살표 방향을 통해 어떤 방향으로 통신이 이루어지는지 확인할 수 있다. 이전 강의에서 원격 조종을 했었다. 이를 다시 실행한 후 rqt_graph를 확인해보겠다.

 

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

 

rqt_graph

 

teleop_twist_keyboard 라는 Node가 추가되었고, /cmd_vel을 통해 /gazebo와 연결됐다.

더 자세한 정보를 알고 싶다면 rosnode info /<노드 이름> 함수를 사용하면 된다.

 

다음 글에서 새로 생겨난 파일들과 node를 실행하는 방법에 대해 더 자세히 다루겠다.

 

 

출처)

https://www.youtube.com/watch?v=MN5Gixvu2rc

 

 

 

 

'Robotics > ROS' 카테고리의 다른 글

4. rosrun, roslaunch, launch  (0) 2025.02.10
2. Gazebo 환경과 사용법  (0) 2025.02.10
1. ROS란?, ROS 설치  (0) 2025.02.10