|
|
Ros2 기초5
과제
1. 각장의 내용을 정리하여 제출하시오.
- 9장
Turtlesim 패키지 설치
sudo apt update
sudo apt install ros-foxy-turtlesim
Turtlesim 이란?
Turtlesim은 ros 창시자 Morgan Quigley 박사에 의해 시작되었다. ROS를 처음 접하는 유저들에게 튜토리얼로 제공하기위해 ROS 패키지로 제작되었다.
Turtlesim 패키지
ros2 pkg list : 설치된 패키지 또는 본인이 직접 작성한 패키지를 확인할 수 있다.
Turtlesim 노드
ros2 pkg executables <패키지명> : 패키지명에 해당하는 노드들을 출력
draw_square : 사각형 모양으로 turtle을 움직이게하는 노드
mimic : 유저가 지정한 토픽으로 동일 움직임의 turtlesim_node를 복수개 실행시킬 수 있는 노드
turtle_teleop_key : turtlesim_node를 움직이게 하는 속도 값을 퍼블리시하는 노드
turtlesim_node : turtle_teleop_key 으로부터 속도 값을 토픽으로 받아 움직이게 하는 간단 2D 시뮬레이터 노드
Turtlesim 패키지 & 노드 실행
ros2 run turtlesim turtlesim_node : run 명령어를 이용해 실행할 수 있다.
ros2 run turtlesim turtle_teleop_key : 노드의 거북 이를 움직일 수 있다.
노드, 토픽, 서비스, 액션의 조회
두 노드간의 동작이 단순히 키보드 값을 전달하여 움직이는게 아니라 눌려진 키보드의 키값에 해당되는 병진 속도(linear velocity)와 회전 속도(angular velocity)를 geometry_msgs 패키지의 Twist 메시지 형태로 보내고 받는 다는 것이다.
Turtlesim_node와 turtle_teleop_key가 실행되어 있을 때의 결과 값
rqt_graph 로 보는 노드와 토픽의 그래프 뷰
동그라미가 노드이고, 네모는 토픽 또는 액션이며 화살표는 메시지의 방향을 의미
rqt_graph
-10장
노드와 메시지 통신
노드(node)는 최소 단위의 실행 가능한 프로세스를 가리키는 용어로서 하나의 실행 가능한 프로그램을 이야기하는 것을 말한다. ros시스템에서는 많은 노드들이 연동된다. 이 많은 노드를 사용하는 ros 시스템을 위해서는 노드와 노드 사이에 입출력 데이터를 서로 주고받을 수 있도록 설계해야한다. 여기서 주고받는 데이터를 ROS에서는 메시지라고 하고 주고받는 방식을 메시지 통신이라고 한다. 그리고 메시지를 주고받는 통신 방법에 따라 토픽(topic), 서비스(service), 액션(action), 파라미터(parameter)로 나뉘게 된다.
노드들간의 메시지 통신
토픽은 비동기식 단방향 메시지 송수신 방식으로 msg 메시지 형태의 메시지를 발간하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신이라고 볼 수 있다.
토픽
서비스는 양방향 메시지 송수신 방식으로 서비스의 요청(Request)을 하는 쪽을 Service client라고 하며 서비스의 응답(Response)을 하는 쪽을 Service server라고 한다.
서비스
액션은 비동기식_동기식 양방향 메시지 송수신 방식으로 액션 목표 Goal를 지정하는 Action client과 액션 목표를 받아 특정 태스크를 수행하면서 중간 결괏값에 해당되는 액션 피드백(Feedback)과 최종 결괏값에 해당되는 액션 결과(Result)를 전송하는 Action server 간의 통신이라고 볼 수 있다. 액션의 구현 방식을 더 자세히 살펴보면 그림 5와 같이 토픽(topic)과 서비스(service)의 혼합이라고 볼 수 있는데 액션 목표 및 액션 결과를 전달하는 방식은 서비스와 같으며 액션 피드백은 토픽과 같은 메시지 전송 방식이다.
액션
토픽과 서비스로 구성된 액션
파라미터(Parameter)는 그림 6의 각 노드에 파라미터 관련 Parameter server를 실행시켜 외부의 Parameter client 간의 통신으로 파라미터를 변경하는 것으로 서비스와 동일하다고 볼 수 있다.
파라미터
노드 실행 (ros2 run)
Ros2 run 명령어를 이용해 특정 패키지의 특정 노드를 실행시킨다.
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
노드와 노드간의 메시지 통신을 그래프 형태로 표시한다.
rqt_graph
노드목록
ros2 node list : 명령어를 통해 노드 목록을 확인 할 수 있다.
각 노드 이름을 출력시켜준다.
노드 이름이 같아 실행하는데 문제가 생기면 ros2 run turtlesim turtlesim_node __node:=new_turtle 를 이용해 노드 이름을 변경해 준다
이름을 변경한 뒤 ros2 node list를 다시 해주면
new_turtle이 추가된 것을 알 수 있다.
노드정보 (ros2 node info)
노드의 정보를 확인하기 위해선 ros2 node info 명령어에 정보를 보기 위한 노드 이름을 지정해 준다. 이 정보에는 지정된 노드의 Publishers, Subscriber, Service, Action, Parameter 정보를 확인할 수 있다.
-11장
토픽
비동기식 단방향 메시지 송수신 방식으로 msg 메시지 형태의 메시지를 발행하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신이라고 볼 수 있다.
하나 이상의 토픽을 발행할 수 있을 뿐만 아니라 Publisher기능과 동시에 토픽을 구독하는 Subscriber 역할도 동시에 수행할 수 있다.
토픽목록확인 (ros2 topic list)
ros2 run turtlesim turtlesim_node 을 이용해 터틀심을 실행시키고 ros2 node info명령어를 이용해 turtlesim_node 노드의 토픽정보를 확인
ros2 topic list -t : 이 명령어를 사용해 더 간단한 메시지를 확인 할 수 있다. 이 명령어는 현재 개발 환경에서 동작 중인 모든 노드들의 토픽 정보를 볼 수 있다.
추가로 -t는 메시지의 형태(type)를 표시한다.
rqt_graph를 실행해 그래프를 띄우고 ros2 run turtlesim turtle_teleop_key를 실행하면
rqt에
그림과 같이 출력되고
발행하는 노드, 구독하는 노드와 상관없이 모든 토픽을 보기 위해서는 rqt_graph 화면에서 `Dead sinks`와 `Leaf topics`를 해제하여 모두 보이게 하면 된다.
토픽 정보 확인 (ros2 topic info)
rqt_graph를 이용하여 토픽의 pub/sub 상태를 확인하는 방법이외에도 ROS 2 CLI 툴을 이용하여 하기와 같이 토픽 메시지 형태, 토픽의 발행 및 구독 정보를 확인할 수도 있다.
토픽 내용 확인 (ros2 topic echo)
ros2 topic echo를 사용하면 해당 토픽의 값을 확인해볼 수 있다.
토픽 대역폭 확인 (ros2 topic bw)
ros2 topic bw으로 지정된 토픽 메시지의 송수신되는 토픽의 초당 대역폭을 알 수 있다.
토픽 주기 확인 (ros2 topic hz)
ros2 topic hz 명령어를 이용하면 토픽의 전송 주기를 확인할 수 있다.
토픽 지연 시간 확인 (ros2 topic delay)
ros2 topic delay명령어를 이용하면 메시지의 발행시간과 구독한 시간의 차이를 계산해 지연 시간을 확인 할 수 있다.
토픽 발행 (ros2 topic pub)
ros2 topic pub <topic_name> <msg_type> "<args>" 명령어에 토픽이름, 토픽 메시지 타입, 메시지 내용을 기술하면 된다.
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}" 와 같이 입력하면 병진 속도 linear.x 값으로 2.0 m/s를 넣었고, 회전 속도 angular.z 값으로 1.8 rad/s를 입력하여 해당 값에 따라 거북이가 이동한다.
지속적인 발행을 원한다면 --once 옵션 제거하고 대신 --rate 1 옵션처럼 주기 1Hz의 발행도 할 수 있다.
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
bag 기록 (ros2 bag record)
ROS에는 발행하는 토픽을 파일 형태로 저장하고 필요할 때 저장된 토픽을 다시 불러와 동일 타이밍으로 재생할 수 있는 기능이 있다. 이를 rosbag이라고 한다.
ros2 bag record <topic_name1> <topic_name2> <topic_name3> 의 형식으로 실행하며
이와 같이 결과가 도출되어 파일형태로 저장된다.
bag 정보 (ros2 bag info)
저장된 rosbag 파일의 정보를 확인하려면 bag 정보 (ros2 bag info) 명령어를 이용하면 된다. 파일크기, 기록시간, 기록날짜, 기록끝난날짜, 타임스태프와 취득한 토픽의 이름 메시지 형태 메시지 별 개수와 총 개수가 기록됨
bag 재생 (ros2 bag play)
rosbag 파일을 기록하고 정보를 확인해봤으니 이제는 재생을 해보자. 일단 turtlesim 노드를 종료한 후 다시 시작하여 초기화를 해준 후 아래의 예제처럼 rosbag를 재생하면 기록 시간 타이밍에 따라 토픽이 재생됨을 확인할 수 있다.
ROS 인터페이스 (interface)
ROS의 노드 간에 데이터를 주고받을 때에는 토픽, 서비스, 액션이 사용되는데 이 때 사용되는 데이터의 형태를 ROS 인터페이스(interface)라고 한다. 토픽, 서비스, 액션은 각각 msg, srv, action interface를 사용하고 있으며 정수, 부동 소수점, 불리언과 같은 단순 자료형을 기본으로 하여 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들이 나열된 배열과 같은 구조도 사용할 수 있다.
-12장
서비스 (service)
서비스는 동기식 양방향 메시지 송수신 방식으로 서비스의 요청을 하는 쪽을 Service Client라고 하며 요청 받은 서비스를 수행한 후 서비스의 응답(Response)을 하는 쪽을 Service Server라고 한다.
동일 서비스에 대해 복수의 클라이언트를 가질 수 있도록 설계되었다. 단, 서비스 응답은 서비스 요청이 있었던 서비스 클라이언트에 대해서만 응답을 하는 형태이다
서비스 목록 확인 (ros2 service list)
turtlesim 패키지의 turtlesim_node를 실행하고 서비스 목록 확인 (ros2 service list) 명령어로 현재 실행 중인 노드들의 서비스 목록을 확인
위의 목록중 아래의 7가지 서비스에 대해 집중적으로 살펴본다
서비스 형태 확인 (ros2 service type)
특정 서비스의 형태가 궁금하다면 서비스 형태 확인 명령어인 ros2 service type을 이용하면 된다. 사용 방법은 다음과 같이 명령어 뒤에 특정 서비스명을 입력하면 어떤 형태의 서비스인지 확인할 수 있다.
서비스 형태 확인 명령어가 아니더라도 위에서 설명하였던 서비스 목록 확인 (ros2 service list) 명령어에 옵션으로 -t를 붙여주면 형태를 서비스 목록과 함께 볼 수 있다.
서비스 찾기 (ros2 service find)
ros2 service find 명령어에 매개변수로 특정 서비스 형태를 적어주면 된다.
서비스 요청 (ros2 service call)
ros2 service call <service_name> <service_type> "<arguments>" 명령어를 이용하며 매개 변수로 서비스명, 서비스 형태, 서비스 요청 내용을 기술하면 된다.
서비스1) /clear 서비스로 turtlesim 노드를 동작할 때 표시되는 이동 궤적을 지우는 서비스이다.
ros2 run turtlesim turtle_teleop_key를 이용해 이동 궤적을 그리고 ros2 service call /clear std_srvs/srv/Empty 명령어를 이용해 모두 지운다
서비스2) /kill 서비스는 죽이고자 하는 거북이 이름을 서비스 요청의 내용으로 입력하면 된다.
서비스3) /reset 서비스는 그림 6과 같이 모든 것이 리셋이 되면서 없어졌던 거북이가 다시 등장하거나 이동한 후에 모든 궤적도 사라지고 원점에 재위치 시킨다.
서비스4) /set_pen 서비스는 지정한 거북이의 궤적 색과 크기를 변경하는 것으로 아래와 같이 r, g, b 값을 조합하여 색을 지정하고, width로 궤적의 크기를 지정할 수 있다.
서비스5) /spawn 서비스는 지정한 위치 및 자세에 지정한 이름으로 거북이를 추가시키게 된다.
서비스 인터페이스 (service interface, srv)
서비스 또한 토픽과 마찬가지로 별도의 인터페이스를 가지고 있는데 이를 서비스 인터페이스라 부르며, 파일로는 srv 파일을 가르킨다.
/spawn 서비스에 사용된 Spawn.srv 인터페이스를 예로
ros2 interface show명령어를 이용하여 확인할 수 있다.
- 13장
액션 (action)
액션은 비동기식+동기식 양방향 메시지 송신 방식으로 액션목표를 지정하는 Action Client과 액션 목표를 받아 특정 태스크를 수행하면서 중간 결괏값에 해당되는 액션 피드백(feedback)과 최종 결괏값에 해당되는 액션 결과(result)를 전송하는 Action Server 간의 통신이라고 볼 수 있다.
액션 서버 및 클라이언트
이번 ROS 2 액션 (action) 실습에도 지난 강좌 때와 마찬가지로 turtlesim 노드와 teleop_turtle 노드를 이용하여 테스트하였다.
ros2 run turtlesim turtlesim_node 을 이용해 turtlesim 노드를 실행하고 ros2 run turtlesim turtle_teleop_key 를 이용해 거북이를 움직인다. 지금까지는 teleop_turtle 노드가 실행된 터미널 창에서 ← ↑ ↓ → 키와 같이 화살표 키를 눌러 turtlesim의 거북이를 움직여봤는데 이번에는 G, B, V, C, D, E, R, T 키를 사용한다. rotate_absolute 액션의 기준 각도가 된다. 다른 키는 위치별로 0.7854 radian 값씩 정회전 방향(반시계 방향)으로 각 각도 값이 할당되어 있다.
액션 목표의 취소 없이 목표 theta 값에 도달하면 아래와 같이 표시
하지만 액션 목표 theta 값에 도달하기 전에 turtle_teleop_key가 실행된 터미널 창에서 F 키를 눌러 액션 목표를 취소하게 되면 turtlesim_node이 실행된 터미널 창에 아래와 같이 목표가 취소되었음을 알리면서 거북이는 그 자리에서 멈추게된다.
노드 정보 (ros2 node info)
각 실행된 노드의 액션 정보를 확인하기 위해서는 노드 정보 ros2 node info 명령어를 사용
turtlesim 노드는 Action Server 역할을 하며 turtlesim/action/RotateAbsolute 이라는 action 인터페이스를 사용하는 /turtle1/rotate_absolute 이라는 이름의 액션 서버임을 확인할 수 있다.
액션 목록 (ros2 action list -t)
액션 정보를 확인하는 방법으로는 위와 같이 특정 노드의 정보를 확인하는 방법 이외에도 액션 목록 ros2 action list -t 명령어를 이용하여 현재 개발 환경에서 실행 중인 액션의 목록을 확인하는 방법도 있다.
액션 정보 (ros2 action info)
검색된 액션 목록의 더 자세한 정보를 확인하기 위해서는 액션 정보 ros2 action info 명령어를 이용하면 되는데 그 결과로 사용되는 액션 이름과 해당 액션의 서버 및 클라이언트 노드 이름 및 갯수를 표시해준다.
액션 목표(action goal) 전달
ros2 action send_goal명령어를 통해 액션 목표(action goal)를 전달해보겠다.
ros2 action send_goal <action_name> <action_type> "<values>" 각각 액션 이름, 액션 형태, 목표 값을 차례로 입력하면 된다.
예를 들어 거북이를 12시 방향인 theta: 1.5708 값을 목표로 주게 되면 그림 5와 같이 이동하게 되며 아래처럼 전달한 목표 값과 액션 목표의 UID(Unique ID), 결괏값으로 이동 시작 위치로의 변위 값인 delta를 결과로 보여주며 마지막으로 상태를 표시하게 된다.
<Theta: 1.5708으로 회전한 모습>
--feedback 옵션을 붙여주면 된다. 이를 통해 거북이가 정해진 theta (-1.5708, 시계 6시 방향)으로 회전하며 위에서 언급한 목표 값, UID, 결괏값, 상태 값 이외에도 Feedback 값으로 총 회전 값의 남은 회전 량을 피드백으로 표시하게 된다. 이를 수행하면 그림 6과 같이 시계 6시 방향으로 회전하게 된다.
액션 인터페이스 (action interface, action)
/turtle1/rotate_absolute 액션에 사용된 RotateAbsolute.action 인터페이스를 알아보기 위해서 ros2 interface show명령어를 이용하여 확인할 수 있다. 이 명령어를 이용하면 아래의 결괏값과 같이 turtlesim/action/RotateAbsolute.action은 float32 형태의 theta, delta, remaining 라는 세개의 데이터가 있음을 알 수 있다.
-14장
ROS 2 인터페이스 (interface)
ROS의 노드 간에 데이터를 주고받을 때에는 토픽, 서비스, 액션이 사용되는데 이 때 사용되는 데이터의 형태를 ROS 2 인터페이스(interface)라고 한다.
ex)
메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들이 나열된 배열 형태는 단순 자료형을 기반으로 하고 있다. 이를 각 인터페이스 파일(msg, service, action)에서 정의할 때에는 아래와 같이 기술한다. 여기서 fieldtype이 메시지 자료형이고 fieldname이 메시지 이름에 해당된다.
메시지 인터페이스 (message interface, msg)
예로 /turtle1/cmd_vel 토픽은 geometry_msgs/msgs/Twist 형태이다. 이름이 좀 긴데 풀어서 설명하면 기하학 관련 메시지를 모아둔 geometry_msgs 패키지의 msgs 분류의 Twist 데이터 형태라는 것이다. Twist 데이터 형태를 자세히 보면 Vector3 linear과 Vector3 angular 이라고 되어 있다. 이는 메시지 안에 메시지를 품고 있는 것으로 Vector3 형태에 linear 이라는 이름의 메시지와 Vector3 형태에 angular 이라는 이름의 메시지, 즉 2개의 메시지가 있다는 것이며 Vector3는 다시 float64 형태에 x, y, z 값이 존재한다. 다시 말해 geometry_msgs/msgs/Twist 메시지 형태는 float64 자료형의 linear.x, linear.y, linear.z, angular.x, angular.y, angular.z 라는 이름의 메시지인 것이다. 이를 통해 병진 속도 3개, 회전 속도 3개를 표현할 수 있게 된다.
메시지를 살펴보는 방법은 직접 코드를 보는 방법과 ros2 interface show 명령어를 이용하는 방법이 있다.
ros2 interface show에는 show 이외에도 list, package, packages, proto가 있다. list는 현재 개발 환경의 모든 msg, srv, action 메시지를 보여주며, packages는 msg, srv, action 인터페이스를 담고 있는 패키지의 목록을 보여준다. package 옵션에 패키지명을 입력하면 지정한 패키지에 포함된 인터페이스들을 보여주고 proto에 특정 인터페이스 형태를 입력하면 그 인터페이스의 기본 형태를 표시해준다.
서비스 인터페이스 (service interface, srv)
/spawn 서비스에 사용된 Spawn.srv 인터페이스를 알아보기 위해서는 ros2 interface show 명령어를 이용하여 확인할 수 있다. turtlesim/srv/Spawn.srv은 float32 형태의 x, y, theta 그리고 string 형태로 name이라고 두개의 데이터가 있음을 알 수 있다.
“---"는 구분자로 부르며 비스 인터페이스는 메시지 인터페이스와는 달리 서비스 요청 및 응답(Request/Response) 형태로 구분되는데 요청(Request)과 응답(Response)을 나누어 사용하기 위해서 “---"를 사용하게 된다.
액션 인터페이스 (action interface, action)
/turtle1/rotate_absolute 액션에 사용된 RotateAbsolute.action 인터페이스를 알아보기 위해서는 ros2 interface show 명령어를 이용해 확인할 수 있다. 결괏값이 turtlesim/action/RotateAbsolute.action은 float32 형태의 theta, delta, remaining 라는 세개의 데이터가 있음을 알 수 있다.
-15장
토픽, 서비스, 액션 비교
-16장
파라미터 (parameter)
파라미터 관련 Parameter server를 실행시켜 외부의 Parameter client 와 통신으로 파라미터를 변경하는 것으로 서비스(service)와 동일하다고 볼 수 있다. 단 서비스가 서비스 요청과 응답이라는 RPC(remote procedure call)가 목적이었다면 파라미터는 노드 내 매개변수를 서비스 데이터 통신 방법을 사용하여 노드 내부 또는 외부에서 쉽게 지정(Set) 하거나 변경할 수 있고, 쉽게 가져(Get)와서 사용할 수 있게 하는 점에서 그 사용 목적이 다르다고 볼 수 있다.
파라미터 목록 확인 (ros2 param list)
각각 turtlesim 노드와 teleop_turtle 노드를 실행
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
파라미터 목록을 확인할 수 있는 파라미터 목록 확인 ros2 param list 명령어를 사용하면 현재 개발 환경에서 실행 중인 노드(2개, turtlesim와 teleop_turtle)의 Parameter server에 접근하여 현재 사용 가능한 파라미터를 노드 별로 목록화 하여 표시하게 된다.
파라미터 내용 확인 (ros2 param describe)
파라미터 목록 확인을 통해 알아본 파라미터가 어떤 형태, 목적, 데이터 형태, 최소/최댓값을 가지는지 알아보기 위해서 ros2 param describe 명령어에 노드 이름과 파라미터 이름을 지정하면 된다.
turtlesim 노드의 background_b 파라미터에 대해 알아본 결과로 파라미터 이름은 background_b이고, 데이터 형태는 integer이며, 배경 컬러의 파랑 채널이라는 설명과 함께 최소, 최대, 스텝 값을 확인할 수 있다.
파라미터 읽기 (ros2 param get)
ros2 param get <node_name> <parameter_name> 노드이름과 파라미터 이름을 함께적어주면 파라미터를 읽을 수 있다.
예를 들어 파라미터 목록 확인 (ros2 param list) 명령어를 통해 확인된 background_r, background_g, background_b 파라미터의 값을 읽어 오면 결과를 확인 할 수 있다.
배경색은 r = 69, g = 86, b = 255 값의 색상
파라미터 쓰기 (ros2 param set)
ros2 param set <node_name> <parameter_name> <value> 노드 이름, 파라미터 이름, 변경할 파라미터의 값을 지정하면 파라미터를 쓸 수 있다.
예를 들어 배경색을 Dark Violet 으로 변경하기 위하여 r = 148, g = 0, b = 211 값으로 변경해보자.
파라미터 저장 (ros2 param dump)
ros2 param dump 명령어에 노드 이름을 적어주면 현재 폴더에 해당 노드 이름으로 설정 파일이 yaml 형태로 저장된다.
turtlesim.yaml 파일에는 turtlesim 노드가 파라미터 서버로하여 가지고 있는 background_r, background_g, background_b, use_sim_time 과 같이 4개의 파라미터의 현재 값이 저장되게 된다.
노드 실행시 저장된 파라미터 값들을 사용하려면 아래 예제와 같이 --ros-args --params-file 옵션과 함께 지정된 yaml 파일의 위치를 적어주면 된다.
파라미터 삭제 (ros2 param delete)
특정 파라미터 삭제는 아래 예제와 같이 ros2 param delete 명령어에 노드 이름과 파라미터 이름을 적어주면 된다.
파라미터가 삭제된 상태를 확인해보면 아래 예제와 같다.
2. 위의 네트워크 기초용어를 설명하시오.
네트워크 통신기초 개념: 네트워크 통신은 컴퓨터나 다른 디바이스 간에 데이터를 주고받는 과정을 말합니다.
네트워크: 네트워크는 여러 컴퓨터, 서버, 장치 또는 시스템이 상호 연결되어 데이터와 자원을 공유할 수 있는 구조를 말합니다.
이더넷: 컴퓨터 네트워크를 위한 표준화된 유선 통신 기술로, LAN에서 널리 사용되는 네트워크 기술
랜(LAN): LAN은 Local Area Network의 약자로, 제한된 지리적 영역 내에서 컴퓨터, 서버, 프린터 등의 장치들을 연결하여 데이터 및 자원을 공유하는 네트워크를 말합니다.
통신프로토콜: 컴퓨터 네트워크에서 데이터 통신을 위한 규칙과 형식의 집합으로 데이터의 전송, 수신, 오류 처리, 보안 등을 관리하여 효율적이고 안전한 통신을 가능하게 합니다
TCP/IP 프로토콜: TCP/IP은 인터넷을 포함한 네트워크 통신에서 가장 널리 사용되는 프로토콜 스택으로 데이터의 전송과 라우팅, 인터넷 연결 및 통신을 관리하는 역할을 합니다.
프로토콜 스택 구조: 컴퓨터 네트워크에서 데이터 통신을 위해 사용되는 프로토콜들이 계층적으로 구성된 모델을 의미합니다.
IP주소: 인터넷 프로토콜 네트워크에서 장치를 식별하기 위해 사용되는 숫자로 구성된 고유한 주소입니다.
Mac 주소: 네트워크 인터페이스 카드 에 할당된 고유한 식별자입니다. MAC 주소는 물리적인 네트워크 장치 에 할당되어 있으며, 이를 통해 장치들이 네트워크에서 고유하게 식별됩니다.
고정IP주소: 네트워크 장치에 대해 수동으로 할당된 고정적인 IP 주소입니다. 사용자가 수동으로 지정해야합니다.
동적IP주소: 네트워크 장치에 자동으로 할당되는 IP 주소입니다. DHCP (Dynamic Host Configuration Protocol)를 사용하여 네트워크에 연결된 장치에 동적으로 IP 주소를 할당합니다.
공인IP주소: 인터넷에서 고유하게 식별되는 IP 주소입니다. 이 주소는 인터넷 서비스 제공자에 의해 할당되며, 인터넷에 직접 연결된 장치에 사용됩니다.
사설IP주소: 사설 네트워크에서 사용되는 IP 주소로, 인터넷에서는 직접 노출되지 않고 내부 네트워크에서만 사용되는 것을 말합니다. 이를 통해 개인용 네트워크 에서 IP 주소를 관리하고, 인터넷과의 연결을 통해 공인 IP 주소를 공유할 수 있습니다.
TCP: 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, 신뢰성 있는 데이터 전송을 위해 설계된 연결형 프로토콜입니다.
UDP: 인터넷 프로토콜 스위트의 하위 프로토콜로, 비연결형 프로토콜로 작동합니다. UDP는 데이터 그램을 사용하여 데이터를 보내고 받는 프로토콜로, 신뢰성이나 연결 설정과 같은 기능은 제공하지 않습니다. UDP는 빠른 데이터 전송이 필요한 경우에 주로 사용됩니다.
유니캐스트: 네트워크 통신에서 한 송신자와 한 수신자 간의 통신을 의미합니다. 가장 일반적인 통신 형태로, 일대일 통신이라고도 합니다. 송신자가 특정한 IP 주소로 데이터를 보내면, 해당 IP 주소를 가진 단일 수신자만이 데이터를 수신하게 됩니다.
브로드캐스트: 네트워크 통신에서 데이터를 한 송신자가 네트워크 상의 모든 장치에게 동시에 전송하는 방식을 말합니다.
멀티캐스트: 네트워크 통신에서 데이터를 그룹으로 묶어 동시에 여러 수신자에게 전송하는 방식을 말합니다. 특정한 멀티캐스트 그룹에 속한 수신자에게 데이터를 전송합니다.
애니캐스트: 네트워크 통신에서 동일한 IP 주소를 가진 여러 개의 서버 또는 장치 중에서 가장 가까운 위치에 있는 장치에게 데이터를 전송하는 방식을 말합니다. 애니캐스트는 단일 IP 주소를 사용하지만, 그 주소를 가진 여러 개의 서버가 분산되어 있습니다.
라우터: 네트워크 간의 데이터 전송을 담당하는 네트워크 장치입니다. 라우터는 다양한 네트워크 연결과 트래픽을 관리하여 데이터를 효율적으로 전달하고, 여러 네트워크 간의 통신을 가능하게 합니다.
게이트웨이: 두 개 이상의 다른 네트워크 간에 데이터 통신을 가능하게 하는 네트워크 장치입니다. 게이트웨이는 서로 다른 네트워크 간의 프로토콜 변환, 데이터 형식 변환, 주소 변환 등을 수행하여 상호 연결되는 네트워크 간에 데이터 전달을 원활하게 합니다.
네트워크 허브: 네트워크에 연결된 다양한 장치들 간의 데이터 통신을 담당하는 네트워크 장치입니다. 간단한 형태의 네트워크 연결장치로, 네트워크에 연결된 모든 장치들이 허브를 통해 데이터를 주고받을 수 있습니다.
서브넷마스크: IP 주소의 네트워크 부분과 호스트 부분을 구분하는 데 사용되는 32비트 숫자입니다. 서브넷 마스크는 이진수로 표현됩니다.
IPv4: 인터넷에서 주로 사용되는 네트워크 계층 프로토콜입니다. IPv4는 32비트 주소 체계를 사용하여 인터넷상의 장치들이 통신할 수 있도록 지원합니다.
IPv6: 인터넷에서 사용되는 네트워크 계층 프로토콜로, IPv4의 주소 고갈 문제를 해결하고 더 많은 고유한 IP 주소를 제공하기 위해 개발된 버전입니다.
DNS(Domain Name Server): 인터넷에서 도메인 이름을 IP 주소로 변환하거나, IP 주소를 도메인 이름으로 변환하는 시스템입니다. 인터넷에서 컴퓨터나 네트워크 장치는 IP 주소를 사용하여 통신을 수행하지만, 사람들은 일반적으로 도메인 이름을 사용하여 웹사이트나 서비스에 접속합니다. DNS는 도메인 이름과 IP 주소 간의 매핑을 관리하여 이러한 변환을 가능하게 합니다.
WWW(World wide web): 인터넷을 통해 웹사이트에 접근하기 위한 서브 도메인입니다. 보통 웹사이트 주소(URL)의 일부로 사용됩니다.
http 프로토콜: 웹상에서 데이터를 주고받기 위해 사용되는 프로토콜입니다. HTTP는 클라이언트와 서버 간의 통신을 위한 규약이며, 웹 브라우저와 웹 서버 사이에서 HTML 문서, 이미지, 동영상 등의 리소스를 요청하고 전달하는 데 사용됩니다.
3. 운영체제이론에서 프로세스, 멀티프로세싱, 쓰레드, 멀티쓰레딩의 의미를 설명하시오.
프로세스: 실행 중인 프로그램을 의미합니다.
멀티프로세싱: 여러 개의 프로세서를 사용하여 동시에 여러 프로세스를 실행하는 방식을 말합니다.
쓰레드: 프로세스 내에서 실행되는 독립적인 실행 단위를 의미합니다.
멀티쓰레딩: 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 것을 의미합니다.
4. 윈도우즈에서 교재의 내용을 실습하고 결과를 제출할것
설치된 패키지 리스트
Turtlesim 패키지 노드 확인
Turtlesim 패키지의 노드 실행
노드, 토픽, 서비스, 액션의 조회
노드 목록
노드정보
토픽목록확인
토픽정보확인
토픽 내용 확인
토픽 대역폭 확인
토픽 주기 확인
토픽 퍼블리시
bag 기록
bag 정보
서비스 목록 확인
서비스 형태 확인
서비스 찾기
서비스 요청
서비스 인터페이스
노드 정보
액션 목록
액션 정보
액션 목표 전달
메시지 인터페이스
서비스 인터페이스
액션 인터페이스
파라미터 목록 확인
파라미터 내용 확인
파라미터 읽기
5. 리눅스에서 교재의 내용을 실습하고 결과를 제출할것
Turtlesim 패키지와 노드
Turtlesim 패키지의 노드 실행
노드, 토픽, 서비스, 액션의 조회
노드와 메시지 통신
노드 정보
토픽
토픽 정보 확인
토픽 내용 확인
토픽 대역폭 확인
토픽 주기 확인
토픽 발행
서비스 목록 확인
서비스 형태 확인
서비스 찾기
서비스 요청
액션 목록
액션 정보
메시지 인터페이스
파라미터 목록 확인
파라미터 내용 확인
파라미터 읽기
파라미터 쓰기
파라미터 저장
파라미터 삭제
6. 리눅스에서 커널(kernel)과 쉘(shell)의 개념을 설명하시오.
커널: 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 인터페이스 역할을 담당하는 프로그램입니다. 커널은 시스템의 핵심 기능을 관리하고 운영체제의 다른 부분과 상호작용하여 시스템 자원을 효율적으로 관리합니다.
쉘: 사용자와 운영체제 커널 사이의 인터페이스로 동작하는 프로그램입니다. 사용자가 명령어를 입력하면 쉘은 해당 명령어를 해석하고 실행합니다. 쉘은 명령어 해석기 역할을 수행하여 사용자가 운영체제와 상호작용할 수 있도록 도와줍니다.
7. 리눅스에서 쉘스크립트란 무엇인가?
쉘에서 실행되는 스크립트 프로그램을 말합니다. 쉘 스크립트는 일련의 명령어와 제어 구조를 포함하고, 쉘에서 한 줄씩 순차적으로 실행되는 텍스트 파일입니다. 이를 사용하여 복잡한 작업을 자동화하고, 일련의 명령어를 한 번에 실행할 수 있습니다.
8. 리눅스에서 source명령어를 설명하시오.
쉘 스크립트나 환경 설정 파일을 현재 쉘 세션으로 가져와 실행하는 명령어입니다. "source" 명령어를 사용하여 파일을 실행하면 해당 파일의 내용이 현재 쉘 세션에서 실행되며, 변수, 함수, 환경 변수 등을 현재 쉘 환경에 로드합니다. 쉘 스크립트나 설정 파일의 변경 내용을 즉시 반영하고, 현재 쉘 세션에서 사용할 수 있는 변수나 환경 설정을 설정하는 데 유용합니다.
|
|
