[ROS2]001: ROS2 개발 환경 구축

maroo·2022년 7월 18일
0

ROS2

목록 보기
1/39

https://cafe.naver.com/openrt/25288

3. 로봇 운영 체제 설치

1)지역 설정

$ sudo apt update && sudo apt install locales
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8

2)소스 설정

$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ sudo apt install curl 
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

본 강좌의 코드에는 sudo apt install curl 이 없었는데,
나는 저걸 먼저 해줘야 정상적으로 진행되서 새로 추가했다

3)ROS2패키지 설치

$ sudo apt update
$ sudo apt install ros-foxy-desktop ros-foxy-rmw-fastrtps* ros-foxy-rmw-cyclonedds*

ros2를 install하는 과정에서 시간이 꽤나 걸린다.

4)ROS2 패키지 설치 확인

$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_cpp talker

talker에서 info가 나오는 상태에서,
새 터미널을 열어서 아래 코드를 친다.

$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_py listener

결과가 같은 주기로 나올 것이다.

4.ROS 개발 툴 설치

$ sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  libbullet-dev \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  wget
$ python3 -m pip install -U \
  argcomplete \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest
$ sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev \
  libcunit1-dev

5. ROS 2 빌드 테스트

$ source /opt/ros/foxy/setup.bash
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/
$ colcon build --symlink-install

카페 글에서는 디렉토리 이름을 robot_ws로 했지만
나는 ros2_ws라고 했다.

실제 디렉토리가 생성된 것을 확인할 수 있다.

6.Run commands 설정

$ nano ~/.bashrc 

bashrc파일 맨 아래에 아래 내용 추가(nano, vim, xed 등 원하는 편집기를 사용하면 된다고 하는데 나는 그냥 맨 아래로 방향키로 내려서 붙여넣고 Ctrl+X로 나갔다)
참고로, 나의 경우 여기 있는 robot_ws도 ros2_ws로 바꿔야 할 것이다.

source /opt/ros/foxy/setup.bash
source ~/ros2_ws/install/local_setup.bash

source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash
source /usr/share/vcstool-completion/vcs.bash
source /usr/share/colcon_cd/function/colcon_cd.sh
export _colcon_cd_root=~/ros2_ws

export ROS_DOMAIN_ID=7
export ROS_NAMESPACE=robot1

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
# export RMW_IMPLEMENTATION=rmw_connext_cpp
# export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# export RMW_IMPLEMENTATION=rmw_gurumdds_cpp

# export RCUTILS_CONSOLE_OUTPUT_FORMAT='[{severity} {time}] [{name}]: {message} ({function_name}() at {file_name}:{line_number})'
export RCUTILS_CONSOLE_OUTPUT_FORMAT='[{severity}]: {message}'
export RCUTILS_COLORIZED_OUTPUT=1
export RCUTILS_LOGGING_USE_STDOUT=0
export RCUTILS_LOGGING_BUFFERED_STREAM=1

alias cw='cd ~/ros2_ws'
alias cs='cd ~/ros2_ws/src'
alias ccd='colcon_cd'

alias cb='cd ~/ros2_ws && colcon build --symlink-install'
alias cbs='colcon build --symlink-install'
alias cbp='colcon build --symlink-install --packages-select'
alias cbu='colcon build --symlink-install --packages-up-to'
alias ct='colcon test'
alias ctp='colcon test --packages-select'
alias ctr='colcon test-result'

alias rt='ros2 topic list'
alias re='ros2 topic echo'
alias rn='ros2 node list'

alias killgazebo='killall -9 gazebo & killall -9 gzserver  & killall -9 gzclient'

alias af='ament_flake8'
alias ac='ament_cpplint'

alias testpub='ros2 run demo_nodes_cpp talker'
alias testsub='ros2 run demo_nodes_cpp listener'
alias testpubimg='ros2 run image_tools cam2image'
alias testsubimg='ros2 run image_tools showimage'

다시 nano ~/.bashrc 를 쳐서 내용이 잘 바뀌었는지 확인하는 것도 좋다.

7.통합 개발 환경(IDE)설치

7.1 Visual Studio Code

1)설치
https://code.visualstudio.com/Download에서
'.deb'의 데비안 설치 파일을 받은 다음,
로컬에서 설치

2)실행

code

3)확장 설치
필수
-C/C++

-CMake

-CMake Tools

-Python

-ROS

-URDF

-Colcon Tasks

-XML Tools

-YAML

-MarkDown All in one

유용
-Highlight Trailing white spaces

-EOF Mark

-Better comments

'기타 추천 extensions'는 설치하지 않음.
너무 많음..
시작 단계인데 앞으로 필요할 때 설치하면 될듯.

4)워크스페이스 설정
-ros2_ws를 ws로 설정

5)VScode의 개발 환경 설정
~/.config/Code/User/settings.json(~는 /home/hcw)
~/ros2_ws/.vscode/c_cpp_properties.json
~/ros2_ws/.vscode/tasks.json
~/ros2_ws/.vscode/launch.json

이 4개의 파일이 없어서, 생성해줘야 한다.

cat > FILE_NAME
FILE_CONTENT
으로 생성할 수 있다고 한다.
그래서 5번과 6,7,8,9를 한꺼번에 진행하게 되었다.

6)User settings 설정

cat > ~/.config/Code/User/settings.json
{
  "cmake.configureOnOpen": false,
  "editor.minimap.enabled": false,
  "editor.mouseWheelZoom": true,
  "editor.renderControlCharacters": true,
  "editor.rulers": [100],
  "editor.tabSize": 2,
  "files.associations": {
    "*.repos": "yaml",
    "*.world": "xml",
    "*.xacro": "xml"
  },
  "files.insertFinalNewline": true,
  "files.trimTrailingWhitespace": true,
  "terminal.integrated.scrollback": 1000000,
  "workbench.iconTheme": "vscode-icons",
  "workbench.editor.pinnedTabSizing": "compact",
  "ros.distro": "foxy",
  "colcon.provideTasks": true
}

7)C/C++ properties 설정

cat > ~/ros2_ws/.vscode/c_cpp_properties.json
{
  "configurations": [
    {
      "name": "Linux",
      "includePath": [
        "${default}",
        "${workspaceFolder}/**",
        "/opt/ros/foxy/include/**"
      ],
      "defines": [],
      "compilerPath": "/usr/bin/g++",
      "cStandard": "c99",
      "cppStandard": "c++14",
      "intelliSenseMode": "linux-gcc-x64"
    }
  ],
  "version": 4
}

해당 명령을 실행했을 때 계속 such file or directory가 없다고 오류가 떴다.
원인이 뭔지 찾아보다가 .vscode가 저 경로 안에 있는 건 맞는지(숨겨진 디렉토리니 육안으로 알 수가...)궁금해져서 ls -a로 조사했더니,

ros2_ws안에 .vscode가 없고
home안에 .vscode가 있다는 걸 알게 되었다.
home안의 .vscode를 ros2_ws안으로 옮길지,
경로를 home안에 있는 .vscode로 바꿔서 내 로컬에 있는 상태에 맞춰 진행할지,
ros2_ws안에 따로 .vscode를 생성해서 진행할지 고민하다가 맨 마지막 방법을 취하기로 했다.
아 근데 하기 전에 또 찾아보다가
vscode프로그램 안에서는 .vscode가 표시되는 걸 봤다.
그래서 settings.json만 터미널로 생성하고
나머지 3개 파일은 vscode프로그램 안에서 생성하기로 했다..
역시 경거망동하면 안 된다.

8)Tasks 설정

9)Launch 설정

10,11번은 빌드와 디버깅이고 파일이 필요하기 때문에 나중에 실제 코드를 돌려볼 때 진행하기로 한다.

7.2 QtCreater

$ sudo apt install qtcreator
$ qtcreator

7.3 QtCreater ROS

1)설치
https://ros-qtc-plugin.readthedocs.io/en/latest/index.html
이 링크대로 따라가면 된다.
20.04버전이 없어서 18.04버전으로 다운받았더니 설치가 되지 않았다.
https://changun516.tistory.com/30
이 링크의 설명을 참고하며 진행했다
cannor retreive remote tree 에러가 나서 trusty offline installer도 다운받았다. 14.04버전으로 했더니 됐다.

2)실행

$ qtcreator-ros

New Project에서 확인했더니 ROS workspace가 포함돼 있음을 확인할 수 있다.

7.4 기타는 나중에 필요시 진행하려고 한다.
8.ROS2삭제도 나중에 필요하면 참고하면 될 것이다.

profile
할수이따 ~

0개의 댓글