4. doosan-robot2 (ROS2 pkg) -1, build (with, Docker install)
1. Docker Install
Docker란?
: Virtual Machine(VM)과 다르게 Host PC와 자원을 공유하며 실행되는 가상 플랫폼. 어렵지만 일단은 그렇구나 정도로만 하고 넘어가자. Docker를 공부하고자 하는 글이 아니기 때문에 자세한건 추후에 다시 다루도록 한다.
그래도 찜찜하다면, doosan-robot2(doosan robotics ROS2 pkg)의 경우 가상 제어기(emulator)를 돌리기 위한 프로그램 정도로 이해하자. 실제로 docker로 실행되는 container에서 emulator가 돌아간다.(virtual mode의 경우)
위에서 눈치챘을 지 모르겟지만, doosan-robot2은 docker를 install해야한다. 아래 링크를 따라 들어가면 쉽게 설치가 가능하다.
(주의, 이제부터 이어지는 글의 모든 CLI는 wsl 즉, terminator에서 실행한다. window의 명령 프롬프트 or power shell에서 타입해야하는 경우는 따로 언급하도록 하겠다.)
https://docs.docker.com/engine/install/ubuntu/
Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com
만약 위의 사이트가 복잡하다. 어렵다. 귀찮다. 한다면 아래 글을 복사 붙여넣기 하면 된다.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
설치가 완료되었다면, 사이트에서도 진행하는 아래 명령어로 설치 테스트를 할 수 있다.
'hello-world'라는 container를 실행하는 명령어이다. docker에서 기본으로 제공하는 container인데, 처음 실행시 다운로드를 자동으로 진행하게된다.
sudo docker run hello-world
정상적으로 다운로드 된 것이라면 아래와 같은 출력을 확인할 수 있다.
출력에도 hello-world image가 없다며 다운로드를 진행하는 것을 확인할 수 있다. 이제 끝이지만!!! 필자가 몇번 시행착오를 거친 후 알게된 내용이 있다. doosan-robot2 의 경우만인지, wsl때문인지 모르겠지만 docker에 권한을 부여해줘야한다. 아래 명령어를 복사해 붙여넣으면 해결된다.
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp
위 명령어 실행후 귀찮겠지만 wsl을 종료후 다시 시작해주도록 하자.
??? : 왜 해야하지?
라는 생각이 든다면 하지않고 넘어가도 좋다. 하지만, 결국 위 명령어를 입력해야될 때가 올것이다.....
2. doosan-robot2 패키지 build
이제 두산로보틱스의 ROS2 패키지, 'doosan-robot2'를 사용할 준비가 끝났다.
https://github.com/doosan-robotics/doosan-robot2
GitHub - doosan-robotics/doosan-robot2: ROS 2 for Doosan Robot
ROS 2 for Doosan Robot. Contribute to doosan-robotics/doosan-robot2 development by creating an account on GitHub.
github.com
README에 나와있는 installation을 따라하면 쉽게 build가능하다. (docker를 설치한 이유을 알 수 있다.)
참고로, README에 이상하게 $표시가 텍스트에 포함되어 복사 붙여넣기가 불편하다.
아래 수적된 내용이 있으니 이걸 복사, 붙여넣기 하면 편할듯!!!
25/02/27일 자로 README가 수정되어 $표시가 사라졌다. 문의를 할까 말까 고민하던 중이었는데, 안하길 잘했다! 하지만 수정되면서 명령어들이 여러개로 분리되었다. 단계별로 나눠놓은 듯 한데, 귀찮고, 복잡하고, 어렵다! -> 역시나 아래 명령어를 복사 붙여넣자.
(참고로 git clone을 할줄 아시는 분들이 주소를 이용해 그냥 git clone을 하는 경우가 있는데, 이래도 상관 없지만 아래 명령어와 같이 -b 'branch'를 해줘야 update내용을 그때그때 pull할 수 있다.)
### Prerequisite installation elements before package installation
sudo apt-get update
sudo apt-get install -y libpoco-dev libyaml-cpp-dev wget
sudo apt-get install -y ros-humble-control-msgs ros-humble-realtime-tools ros-humble-xacro ros-humble-joint-state-publisher-gui ros-humble-ros2-control ros-humble-ros2-controllers ros-humble-gazebo-msgs ros-humble-moveit-msgs dbus-x11 ros-humble-moveit-configs-utils ros-humble-moveit-ros-move-group
### install gazebo sim
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y libignition-gazebo6-dev
sudo apt-get install -y ros-humble-gazebo-ros-pkgs ros-humble-moveit-msgs ros-humble-ros-gz-sim ros-humble-ros-gz
### We assume that you have installed the ros-humble-desktop package using the apt-get command.
### We recommand the /home/<user_home>/ros2_ws/src
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone -b humble-devel https://github.com/doosan-robotics/doosan-robot2.git
git clone -b humble https://github.com/ros-controls/gz_ros2_control
rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
cd ~/ros2_ws/src/doosan-robot2
chmod +x ./install_emulator.sh
sudo ./install_emulator.sh
cd ~/ros2_ws
colcon build
### Edit&source ROS install/setup.bash
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
. ~/.bashrc
이제 패키지 build가 완료되어 예제를 실행할 수 있다!
doosan-robot2 github에 있는 예제를 실행하 build가 제대로 되었는지 확인하자.
(다음으로는 무엇을 해볼지 구상중..., 후보 : 키보드로 robot제어하기, camera연결해 위치 찾기, 등등...)
(추가) 3. VS code install
wsl내부가 아니더라도 소스코드, repository 관리 분석을 쉽게 해줄 수 있는 IDE Visual Studio Code를 설치하기를 권장한다. 따라서 설치 방법과 WSL 연결 방법을 설명한다.
방법은 간단하다.
1. VScode install
window에는 microsoft store에서 쉽게 다운로드 가능하다. 아래 그림과 같이 'vscode'라고만 검색해도 등장한다. 해당 app을 설치해주자. (파란색을 설치하자. 초록색 insiders는 뭔지 모르겠다...)
2. Connect WSL
이 또한 간단하다 vscode를 실행 후 아래 사진처럼 좌측 하단의 ><버튼을 누르면 상단에 Connect to WSL이 등장하는데 이를 누르면 연결 완성!
주의!
아래 그림과 같이 wsl default가 ubuntu-22.04가 아닌 다른 배포버전이라면 (*표시 있는 버전이 default) 위처럼 눌렀을 경우 해당 버전으로 connect를 시도한다. 이때 두가지 방법이 있다.
하나, default 버전을 바꾼다.(권장)
window powershell에서 아래 명령어를 수행하면 default버전이 바뀌고 그럼 vscode에서도 기본값인 wsl로 연결을 시도한다.
wsl --set-default Ubuntu-22.04
둘, vscode에서 'Connect to WSL'이 아닌 바로 아래의 'Connect to WSL using Distro...'을 누르면 연결할 WSL버전을 선택할 수 있다. 이후 본인이 설치한 원하는 버전으로 누르면 해당 WSL로 연결을 시도한다.
이후 부터는 vscode로 wsl내부의 폴더를 작업 디렉토리로 선택해 수행할 수 있다.
( 추신, wsl내부 환경에 대해 python 등의 extension은 따로 설치해야 한다. )