https://cafe.naver.com/openrt/25288
$ 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
$ 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 이 없었는데,
나는 저걸 먼저 해줘야 정상적으로 진행되서 새로 추가했다
$ sudo apt update
$ sudo apt install ros-foxy-desktop ros-foxy-rmw-fastrtps* ros-foxy-rmw-cyclonedds*
ros2를 install하는 과정에서 시간이 꽤나 걸린다.
$ 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
결과가 같은 주기로 나올 것이다.
$ 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
$ source /opt/ros/foxy/setup.bash
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/
$ colcon build --symlink-install
카페 글에서는 디렉토리 이름을 robot_ws로 했지만
나는 ros2_ws라고 했다.
실제 디렉토리가 생성된 것을 확인할 수 있다.
$ 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 를 쳐서 내용이 잘 바뀌었는지 확인하는 것도 좋다.
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번은 빌드와 디버깅이고 파일이 필요하기 때문에 나중에 실제 코드를 돌려볼 때 진행하기로 한다.
$ sudo apt install qtcreator
$ qtcreator
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삭제도 나중에 필요하면 참고하면 될 것이다.