Jetson Nano でコンテナにROS1(Melodic)をインストールしてみます。
ROS2に関しては以下を参照
Jetson Nano でコンテナにROS2 Foxy をインストール
…etc
元ネタはここ
Jetson Nano のOSはJetPack 4.6
Docker Image はNVIDIA提供のnvcr.io/nvidia/l4t-ml:r32.5.0-py3(Ubuntu 18.04.6 LTS)です。
OSはセットアップ済みとします。
イメージをダウンロード
1 |
sudo docker pull nvcr.io/nvidia/l4t-ml:r32.5.0-py3 |
作業フォルダー作成(この段階では使いませんが….)
1 |
mkdir /home/jetson/work-ros1 |
my_ros1という名前でコンテナ作成
sudo docker create -it --name my_ros1 --gpus all --network host -e DISPLAY=$DISPLAY -v /home/jetson/work-ros1:/work -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-ml:r32.5.0-py3
コンテナ起動
1 |
sudo docker start -i my_ros1 |
アップデート&アップグレード、パッケージなどをインストール
1 2 3 4 5 6 7 8 9 |
apt update apt upgrade -y apt install python-pip python3-pip -y python3 -m pip install --upgrade pip apt install wget apt install nano apt install curl |
リポジトリ追加
1 2 3 4 5 |
apt install software-properties-common -y apt-add-repository universe apt-add-repository multiverse apt-add-repository restricted |
aptキーを追加
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Melodicをインストール
1 2 3 4 |
apt update apt install ros-melodic-desktop-full -y echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc |
ROSのソフトウェアパッケージのインストールに必要なrosinstallをインストール
apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential -y
ソースコンパイル時の依存パッケージインストールに使われるrosdepをインストール
1 2 3 4 5 |
apt install python-rosdep rosdep init rosdep update |
ワークスペース作成
1 2 3 4 5 |
mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make |
1 |
sh -c 'echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc' |
ROS起動
1 |
roscore |
rviz、gazebo
ホスト側でXを設定しておきます。
1 |
sudo xhost si:localuser:root |
rviz用にコンテナを別ターミナルでもう一つ開いておきます。
1 |
sudo docker exec -it my_ros1 bash |
rviz起動
1 |
rviz |
さらに、gazebo用にコンテナを別ターミナルでもう一つ開いておきます。
1 |
sudo docker exec -it my_ros1 bash |
gazebo起動
1 |
gazebo |
Errorが出る場合
[Err] [REST.cc:205] Error in REST request
対処
以下のファイルをエディタで開きます。
~/.ignition/fuel/config.yaml
書き換え
url: https://api.ignitionfuel.org -> url: https://api.ignitionrobotics.org
gazeboを再起動
Appendix
コンテナ実行時に、ALSAのエラーが出た場合
サウンド関係を使う必要が無ければ、alsaが使うデフォルトのオーディオデバイスをnullに設定すればよい。
1 2 |
cd /etc nano asound.conf |
以下を記述
1 2 3 4 |
pcm.!default { type plug slave.pcm "null" } |
Leave a Reply