WSL 환경에서 ROS 개발을 위한 윈도우-리눅스 혼합 전략
최근 들어, 로봇 운영 체제(ROS)는 로봇 개발자의 필수 도구로 자리 잡았습니다. 특히, 윈도우즈와 리눅스 OS를 혼합하여 사용하는 전략은 개발 환경을 효율적으로 관리하는 데 도움이 될 수 있습니다. 본 기사에서는 WSL(Windows Subsystem for Linux) 환경에서 ROS를 개발하는 방법에 대해 자세히 설명하겠습니다.
1. WSL (Windows Subsystem for Linux) 소개
WSL은 마이크로소프트가 제공하는 기능으로, 윈도우 환경에서 리눅스 배포판을 실행할 수 있도록 해줍니다. 이를 통해 개발자는 두 운영 체제의 장점을 동시에 활용할 수 있습니다.
2. WSL 설치 방법
- WSL 활성화: 먼저, 제어판에서 '프로그램'으로 이동하여 'Windows 기능 켜기 또는 끄기'를 선택합니다. 그 다음 'Windows Subsystem for Linux'를 선택하고 확인합니다.
- 리눅스 배포판 설치: Microsoft Store에 접근하여 원하는 리눅스 배포판을 검색하고 설치합니다. 대표적인 배포판으로는 Ubuntu가 있습니다.
- WSL 업데이트: 설치가 완료되면, 명령 프롬프트에서 'wsl --set-default-version 2' 명령어를 입력하여 WSL 2로 업그레이드합니다.
3. ROS 설치하기
ROS를 설치하기에 앞서, WSL 환경에서 몇 가지 기본 패키지를 설치해야 합니다.
3.1. 기본 패키지 설치
sudo apt update
sudo apt upgrade
sudo apt install -y build-essential
sudo apt install -y git
3.2. ROS 설치
ROS 설치는 대개 리눅스 환경에서 다음과 같이 이루어집니다.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 421C365BD9FF1F17
sudo apt update
sudo apt install ros-noetic-desktop-full
3.3. 환경 설정
ROS 환경을 설정하기 위해 다음 명령어를 실행합니다.
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
4. VS Code에서 ROS 프로젝트 개발하기
Visual Studio Code(이하 VS Code)는 다양한 개발 환경을 지원하는 IDE로, ROS 개발 시에도 유용하게 사용됩니다.
4.1. VS Code 설치
VS Code는 윈도우 환경에서 설치한 후, WSL과 연동하여 사용할 수 있습니다. VS Code를 설치 후, WSL 확장을 설치합니다.
4.2. ROS 패키지 생성
프로젝트를 시작하기 위해 ROS 패키지를 생성해야 합니다. 다음 명령어를 사용하여 새로운 패키지를 만듭니다.
cd ~/catkin_ws/src
catkincreatepkg myfirstpackage std_msgs rospy
4.3. CMakeLists.txt 및 package.xml 수정
패키지를 성공적으로 생성한 후, CMakeLists.txt와 package.xml을 수정하여 필요한 종속성을 추가합니다.
- CMakeLists.txt: 필요한 라이브러리와 의존성을 추가하고 빌드 설정을 구성합니다.
- package.xml: 패키지의 메타데이터를 포함하는 파일로, ROS의 종속성을 정의합니다.
5. ROS 노드 및 메시지 만들기
ROS의 핵심 구성 요소인 노드와 메시지를 만들어 봅시다.
5.1. 노드 생성
myfirstpackage의 src 폴더 내에 hello_ros.py라는 새로운 파이썬 파일을 생성합니다. 이 파일의 내용은 다음과 같습니다.
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10)
10Hz
while not rospy.is_shutdown():
msg = "Hello, ROS world!"
rospy.loginfo(msg)
pub.publish(msg)
rate.sleep()
if name == 'main':
try:
talker()
except rospy.ROSInterruptException:
pass
5.2. 노드 실행
cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun myfirstpackage hello_ros.py
6. WSL과 윈도우의 통합
WSL을 통해 리눅스 환경에서 개발하면서도 윈도우의 다양한 도구를 사용할 수 있는 이점이 있습니다. 예를 들어, 윈도우의 파일 탐색기를 사용하여 WSL의 파일에 접근하거나, VS Code와 같은 외부 편집기를 활용하여 파일을 편집할 수 있습니다.
6.1. 파일 공유
WSL에서 생성한 파일은 기본적으로 윈도우 파일 시스템에 접근할 수 있으며, 반대로도 가능합니다. 다음 경로를 통해 WSL의 파일에 접근할 수 있습니다.
\\wsl$\{배포판명}\{경로}
6.2. GUI 애플리케이션 실행
WSL2에서는 리눅스에서 GUI 애플리케이션을 직접 실행할 수 있습니다. 이를 통해 개발 시 편리하게 그래픽툴을 사용할 수 있습니다.
7. ROS 개발 시 유용한 도구들
- rqt: ROS의 그래픽 도구이며, 노드와 주제를 모니터링하는 데 유용합니다.
- RViz: 로봇의 센서 데이터를 시각화하는 데 사용됩니다.
- gazebo: 로봇 시뮬레이터로, 실제 하드웨어 없이도 로봇의 동작을 테스트할 수 있습니다.
8. 문제 해결 및 커뮤니티 지원
ROS 개발 중 발생할 수 있는 문제는 다양합니다. 이런 경우, 다음 자료를 참고하는 것이 좋습니다.
- ROS 공식 문서: ROS의 다양한 기능과 설치 방법이 상세하게 설명되어 있습니다.
- Stack Overflow: 개발 중 발생한 오류에 대한 질문과 답변을 찾을 수 있는 플랫폼입니다.
- ROS 포럼: 다양한 사용자가 모여 정보를 공유하고 문제를 해결하는 커뮤니티입니다.
9. 마무리
WSL 환경에서 ROS를 개발하는 것은 윈도우와 리눅스의 장점을 적절히 결합할 수 있는 훌륭한 방법입니다. 이번 기사를 통해 제공된 정보들이 초보자 여러분께 도움이 되기를 바랍니다. 로봇 개발 여정에서 많은 성과를 이루시기를 기원합니다.





