アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

Jetson Orin NanoにROS2(humble)をinstall (2024/10)

Jetson Orin NanoにROS2 (humble)をinstallする方法メモ。

Jetson Orin Nanoのsetup後にROS2をinstallした。
trafalbad.hatenadiary.jp



ROS2には

Humble Hawksbill(LTS)Iron Irwini(latest release)があるが、
安定してるHumble Hawksbill(LTS)をinstallした。

JetPack 6.1
ubuntu 22.04
・ROS2 Humble

1. Setup Locale

Locale(言語や単位, 記号, 日付, 通貨などの表示規則の集合のこと)のsetup。

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. ROS2 Repository

ROS2 パッケージ用のRepositoryをinstall

# necessary tools
sudo apt update
sudo apt install -y curl gnupg2 lsb-release software-properties-common

# ROS2 Repository's GPG key
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

# add ROS2 Repository to your Jetson 
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'


3. install ROS2 / setup environment

sudo apt update

# install ROS 2 Humble
sudo apt install ros-humble-desktop

# setup env
source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc


Ironのケース

sudo apt install ros-iron-desktop
source /opt/ros/iron/setup.bash
echo "source /opt/ros/iron/setup.bash" >> ~/.bashrc
source ~/.bashrc


4. install tools

ROS 1では rosbuild や catkin が使われてるけど、
ROS2ではbuild toolsにcolconが使われてる。


ROS1ではcatkinを用いたビルドを行っていました.catkinは直接cmakeのみを扱います.一方,ROS2では,colconと呼ばれるメタビルドシステムを用います.colconは依存関係を考慮してパッケージのビルド順を決め,ビルドを実行します.ビルドの方法は各パッケージに任せるので,cmakeによらず複数のビルドタイプを選択可能です(ROS2チュートリアル 体験記 (2/3) | Tokyo Opensource Robotics Kyokai Association)

# install 
sudo apt install python3-colcon-common-extensions

# install resdep
sudo apt install python3-rosdep2
sudo rosdep init
rosdep update

これでROS2のinstallは完了したはず

5 テスト

ROS2を動かしてみる

ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener

色々変更はあるけど現時点でわかってるのは

・ROS2のlaunchファイルは,xml形式からpython形式になったということ
・ROS1におけるrospyはrclpyに,roscppはrclcppに変更
・roscoreは必要ない通信形式

6 その他のsetup

Jetson Orin NanoのPerformanceの最大化

sudo nvpmodel -m 0
sudo jetson_clocks

turtlesim

sudo apt update
sudo apt install ros-humble-turtlesim
# Check that the package is installed:
ros2 pkg executables turtlesim
>>
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
# start 
# terminal 1
ros2 run turtlesim turtlesim_node
# terminal 2
ros2 run turtlesim turtle_teleop_key
# terminal 3
rqt_graph


ROS2で試しにbuild

# git clone source code
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/ros2/ros2.git -b humble src/ros2

# install dependencies by rosdep
rosdep install --from-paths src --ignore-src -r -y

# build workspace
colcon build --symlink-install

basicなフォルダ構成はこんな感じ

Jeston@orin:~/Downloads/ros2_ws$ tree
.
├── build
│   └── COLCON_IGNORE
├── install
│   ├── COLCON_IGNORE
│   ├── local_setup.bash
│   ├── local_setup.ps1
│   ├── local_setup.sh
│   ├── _local_setup_util_ps1.py
│   ├── _local_setup_util_sh.py
│   ├── local_setup.zsh
│   ├── setup.bash
│   ├── setup.ps1
│   ├── setup.sh
│   └── setup.zsh
├── log
│   ├── build_2024-10-21_20-32-47
│   │   ├── events.log
│   │   └── logger_all.log
│   ├── COLCON_IGNORE
│   ├── latest -> latest_build
│   └── latest_build -> build_2024-10-21_20-32-47
└── src
    └── ros2
        ├── README.md
        └── ros2.repos

ROS2を無事にinstallできた。