정리노트

Jetson Xavier AGX - Jetpack5.0.1세팅(4) - ROS2 Galatic 설치 및 개발환경 구축 본문

잡다한 정리/Jetson Xavier AGX Settings

Jetson Xavier AGX - Jetpack5.0.1세팅(4) - ROS2 Galatic 설치 및 개발환경 구축

Krex_Kim 2022. 7. 20. 01:44

 

지금까지의 Jetson Xavier세팅이 순조로웠다면,

ROS2  설치하는것 자체는 훨씬 간단하게 끝납니다.

 

https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html

 

Ubuntu (Debian) — ROS 2 Documentation: Galactic documentation

Debian packages for ROS 2 Galactic Geochelone are currently available for Ubuntu Focal. The target platforms are defined in REP 2000 Make sure you have a locale which supports UTF-8. If you are in a minimal environment (such as a docker container), the loc

docs.ros.org

 

정말정말 감사하게도 

Jetson Device 의 arm64에서도 아무 문제없이 따라만 가면 깔리도록 설정이 되어있었습니다.

 

 

물론 이것 말고도 구성해야할 여러가지 환경 세팅이 있는데,

 

이번 포스팅에서는 이런 기본적인 ROS2 설치과정과

vscode 에 통합 개발환경(IDE)를 구축하는 일련의 과정,

그리고 QtCreator설치하는 과정까지 쭉 정리해보도록 하겠습니다.

 

 

 

 

 

◆ ROS2 기본 설치

 

## Locale 설정

$ locale  # check for UTF-8

$ 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

$ locale  # verify settings

 

 

 

## Set UP

$ apt-cache policy | grep universe

: 실행시 Output은

500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
    release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

이어야함.

 

$ sudo apt update && sudo apt install curl gnupg lsb-release
$ 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 $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

 

 

 

## ROS 설치

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install ros-galactic-desktop

 

 

 

 

 

## Test

 

# Terminal  1에서  pub

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

 

# Terminal 2 에서 listen

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

 

 

두 노드간 통신이 원할하다면 정상적으로 설치가 완료된 것입니다

 

 

 

 

 

 

 

※아래 내용부터는 오로카 카페주소에서의 내용을 참조하여 작성하였습니다.

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

 

001 ROS 2 개발 환경 구축

Created Date: 2020.07.13 Modified Date: 2022.02.03 revision 34 * 로봇 운영체제 ROS 강좌 목차: https://cafe...

cafe.naver.com

 

◆ ROS2 개발 툴 설치

 

$ 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

 
 
 

◆ ROS2 빌드 테스트

 

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

* Workspace에 아무것도 없기 때문에

위 그림처럼 뜨면 정상.

workspace에 build, install, log폴더가 생성되는것을 확인할 수 있습니다.

 

 

 

 

 

 

 

◆ Run Commands설정 (Optional)

개발시 사용하면 편리한 alias를 ~/.bashrc 파일에 설정해놓으면 매우 편리합니다

 

$ gedit ~/.bashrc 

 

gedit 편집기로 .bashrc파일아래에 기존내용은 그대로 두고 아래 내용을 추가해줍니다.

# ROS2 Run Commands
source /opt/ros/foxy/setup.bash
source ~/robot_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=~/robot_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 ~/robot_ws'
alias cs='cd ~/robot_ws/src'
alias ccd='colcon_cd'

alias cb='cd ~/robot_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'

 

 

 

◆ 통합 개발환경 IDE 설치

출처: 오로카카페 (ROS2로 시작하는 로봇 프로그래밍)

 

 

 

◎ Visual Studio Code (VSCode)

 

- 설치

Jetson Xavier AGX_ Jetpack5.0.1에서의 vs코드 설치에관한 내용은 아래 포스팅에서 다루었었습니다.

* Jetpack5.0.1에서는 최신버전을 비롯한 몇가지 VSCode 버전이 정상 작동하지 않는 듯 하니 참고 해보시길 바랍니다

 

https://roboharco12.tistory.com/45

 

Jetson Xavier AGX - Jetpack5.0.1세팅(5) - 나머지 라이브러리(VsCode, Scikitlearn등)

1, VS Code 이전 Jetpack 4.x 버전에서 잘 돌아갔던 vs code가 Jetpack5.0 버전에서 설치는되는데 실행은 안되는 문제가 있었습니다 포럼을 뒤져보니 https://forums.developer.nvidia.com/t/vs-code-can-t-launch..

roboharco12.tistory.com

 

 

- 실행

$ code

 

- Extensions 설치

정상적으로 VSCode가 설치되었다면, 

C/C++/ROS/File Rofmat/유용한 Extension을 추가해줍니다.

 

Ctrl + Shift + x 를 누르면 설치가능한 Extension List들이 뜹니다

여기서

아래 해당하는 Extension을 깔아줍니다.

 

모든 출처는 오로카 카페에서 긁어온 것이나,

EOF Mark, Better Comments, Highlight Trailing White Spaces 같은 Extensions는 ..저는 오히려 불편해서 뺐습니다

 

 

 

* <참고>

추가로 저는 인공지능을 다룰일이 많아

Jupyter Notebook환경에서 자주 작업하다보니, 해당 Extension까지 추가해줬습니다. (ROS에 직접적인 연관은 X)

Extension List에서

이 녀석을 설치해 준 후,

Ctrl + Shift + P를 누른다음

" Jupyter: Specify local or remote Jupyter sercer for connections를 클릭해줍니다.

 

이후 터미널에서

$ code test.ipynb

로 새로운 ipynb확장자파일을 열어주면 오른쪽아래 install버튼이 생기고

이를 누르면 알아서 필요한 패키지들이 주르륵 깔립니다.

 

 

이후 test.ipynb 파일에서 오른쪽 위에 Python 3.8.10 64-bit:Idle 로 떠있는게 확인됐다면 (혹은 본인 Local 환경에 맞는 Python버전) 정상적으로 설치된 것입니다.

기존 Python 3.8.10에 깔린 패키지(PyTorch, Numpy등) 들이 정상 작동하는것을 확인할 수 있습니다.

 

 

 

 

 

* 저의 경우, 주피터 노트북을 설치하고난 뒤, 다른 패지는 다 괜찮은데

Scikit Learn 패키지가 정상적으로 import되지 않는 오류가 발생했습니다.

 

아래와같이

ImportError: /usr/local/lib/python3.8/dist-packages/sklearn/__check_build/../../scikit_learn.libs/libgomp-d22c30c5.so.1.0.0: cannot allocate memory in static TLS block

 

TLS Block 에러 메세지가 뜨며 import되지않았는데,

https://github.com/keras-team/autokeras/issues/1475

 

Autokeras trying to import libgomp-d22c30c5.so.1.0.0 from scikit-learn on arm64/aarch64 · Issue #1475 · keras-team/autokeras

Bug Description I am trying to use autokeras on a Raspberry Pi 4B with 64-bit Raspberry Pi OS. It can be installed but would generate the following error on import. Seems like it was trying to impo...

github.com

위 깃허브 디버그를 참조해서 문제를 해결했습니다.

.bashrc에 들어가서 

libgomp-d22c30c5.so.1.0.0파일 위치만 추가해주면 됩니다.

 

 

$ gedit ~/.bashrc

export LD_PRELOAD='/usr/local/lib/python3.8/dist-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0'

추가 후 저장

 

VSCode를 껐다가 켜준뒤, import하여버전을 확인해주면

정상적으로 import되는것을 확인할 수 있습니다.

 

 

 

<참고>

제가 Jetpack 5.0.1에 scikit learn 패키지를 설치한 방법입니다

https://roboharco12.tistory.com/45

 

Jetson Xavier AGX - Jetpack5.0.1세팅(5) - 나머지 라이브러리(VsCode, Scikitlearn등)

1, VS Code 이전 Jetpack 4.x 버전에서 잘 돌아갔던 vs code가 Jetpack5.0 버전에서 설치는되는데 실행은 안되는 문제가 있었습니다 포럼을 뒤져보니 https://forums.developer.nvidia.com/t/vs-code-can-t-launch..

roboharco12.tistory.com

 

◎ VSCode의 개발환경 설정

이 개발환경 역시 표박사님의 설정방식을 따른것인데요,

 

라고 합니다.

 

$ sudo gedit <파일경로>

로 파일들을 생성해주면 됩니다.

하나하나 보겠습니다.

 

표박님이 foxy 버전인것과 다르게, galactic버전이 깔려있다는 점만 조심하면서 설치를 진행해주시면 됩니다.

 

 

- User Settings 설정 (settings.json)

표박사님의 책에 따르면,

"'settings.json'은 VSCode의 사용자별 글로벌 환경 설정을 지정하는 파일이다. 이 파일에 기술된 설정들은 모든 작업 공간(workspace)에서 적용된다. 예를 들어, 미니맵 사용, 세로 제한 줄 표시, 탭 사이즈 등 이다."

라고 합니다.

 

$ sudo gedit ~/.config/Code/User/settings.json

에서 아래내용을 추가해줍니다. 물론 본인이 즐겨 사용하는 설정이 있다면 함께 적어주면 된다고 합니다.

저는 주피터 노트북을 사용하다보니 ("jupyter.jupyterServerType": "local")옵션이 추가되었습니다.

 

 

{
    "jupyter.jupyterServerType": "local",
    "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": "galactic",
    "colcon.provideTasks": true
}

 

 

- C/C++ Properties 설정

표박사님 책에 따르면

"C/C++ 관련 설정이다. 현재 지정한 작업 공간 (여기서는 ~/robot_ws)의 운영체제는 무엇인지, include 폴더의 경로는 어떻게 되는지, C/C++ 규칙은 어떤 표준을 기준을 사용할지의 여부, 컴파일의 경로, intelliSense[24] 모드 등을 설정하게 된다."

 

라고 정리되어있습니다.

 

$ mkdir ~/robot_ws/.vscode

$ sudo gedit ~/robot_ws/.vscode/c_cpp_properties.json

에서 아래내용을 추가해줍니다.

 

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": [
        "${default}",
        "${workspaceFolder}/**",
        "/opt/ros/galactic/include/**"
      ],
      "defines": [],
      "compilerPath": "/usr/bin/g++",
      "cStandard": "c99",
      "cppStandard": "c++14",
      "intelliSenseMode": "linux-gcc-x64"
    }
  ],
  "version": 4
}

 

 

- Tasks 설정

 

 

책에나온대로,

 

$ sudo gedit ~/robot_ws/.vscode/tasks.json

에서 아래 내용을 추가해줍니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "colcon: build",
      "type": "shell",
      "command": "colcon build --cmake-args '-DCMAKE_BUILD_TYPE=Debug'",
      "problemMatcher": [],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    },
    {
      "label": "colcon: test",
      "type": "shell",
      "command": "colcon test && colcon test-result"
    },
    {
      "label": "colcon: clean",
      "type": "shell",
      "command": "rm -rf build install log"

    }
  ]
}

 

- Launch 설정

계속 따라해줍니다.

 

$ sudo gedit ~/robot_ws/.vscode/launch.json

에서 아래 내용을 추가합니다.

 

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug-rclpy(debugpy)",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal"
    },
    {
      "name": "Debug-rclcpp(gbd)",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/install/${input:package}/lib/${input:package}/${input:node}",
      "args": [],
      "preLaunchTask": "colcon: build",
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ],
  "inputs": [
    {
      "id": "package",
      "type": "promptString",
      "description": "package name",
      "default": "topic_service_action_rclcpp_example"
    },
    {
      "id": "node",
      "type": "promptString",
      "description": "node name",
      "default": "argument"
    }
  ]
}

 

 

 

이후의 자세한 내용은 위에서 언급한 https://cafe.naver.com/openrt/25288

오로카 카페에서 자세히 참조해보시기 바랍니다.

 

 

 

 

◎ QtCreator

qt creator는 여기서 간단하게만 다루도록 하겠습니다.

 

설치

$ sudo apt install qtcreator

 

Plugin 개발에  UI를 작성할때 유용합니다.

 

 

 

Comments