導入
先日、論文に取り組んでいるときに、ROS がすでにインストールされているシングルボード プラットフォーム用の Ubuntu イメージを作成する必要性に直面しました (ロボット オペレーティング システム - ロボット オペレーティング システム)。 つまり、卒業証書はロボットのグループの管理に専念します。 ロボットには 2 つの車輪と XNUMX つの距離計が装備されています。 すべてはODROID-CXNUMXボード上で動作するROSから制御されます。
ロボットのてんとう虫。 写真の画質が悪くてごめんなさい
各ロボットに ROS を個別にインストールする時間も希望もなかったため、ROS がすでにインストールされているシステム イメージが必要でした。 インターネットを閲覧したところ、これを行う方法についていくつかのアプローチが見つかりました。
一般に、見つかったすべてのソリューションは次のグループに分類できます。
- 既製の構成済みシステムからイメージを作成するプログラム (
ディストリビューション Ubuntu イメージャー ,Linuxライブキット ,Linuxの再スピン 、システムバックなど) - 独自のイメージを作成できるプロジェクト (
ヨクト ,Linuxをゼロから始める ) - 画像を自分で組み立てる (
ライブCDのカスタマイズ иロシア語相当 プラスハブレに関する記事 )
最初のグループのソリューションを使用するのが最もシンプルで魅力的なオプションのように思えましたが、ODROID のライブ システム イメージを作成することはできませんでした。 XNUMX 番目のグループの解決策も、かなり敷居が高いため、私には合いませんでした。 利用可能なチュートリアルに従った手動組み立ても適切ではありませんでした。 私のイメージには圧縮ファイル システムがありませんでした。
その結果、chroot に関するビデオを見つけました (chroot - ルートを変更する、投稿の最後にあるビデオへのリンク)とその機能を考慮して、それを使用することが決定されました。 次に、ロボット開発者向けに Ubuntu をカスタマイズする私の特別なケースについて説明します。
背景:
- イメージ変更プロセス全体 (balenaEtcher を使用した SD カードへの書き込みを除く) は、Ubuntu 18.04 オペレーティング システムで実行されました。
- 私がアセンブリを変更したオペレーティング システムは、Ubuntu 18.04.3 mate デスクトップ バージョンです。
- 組み立てられたシステムが動作するマシンは ODROID-C2 です。
画像の準備
-
ODROID の Ubuntu イメージを次からダウンロードします。
公式サイト -
アーカイブを解凍する
unxz –kv <файл архива с образом>
-
イメージをマウントするディレクトリを作成します
mkdir mnt
-
ファイルシステムが配置されているパーティションを決定する
file <файл образа>
ext2、ext3、または ext4 形式のファイル システムを持つパーティションを探しています。 セクションの先頭のアドレスが必要です (画面上で赤で強調表示されています)。
注意してください。 ファイル システムの場所は、ユーティリティを使用して表示することもできます。 parted. -
イメージのマウント
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
必要なセクションはブロック 264192 で始まり (数字は異なる場合があります)、512 つのブロックのサイズは XNUMX バイトです。これらを乗算してバイト単位のインデントを取得します。
-
マウントされたシステムのあるフォルダーに移動し、その中でハングアウトします。
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — マウントされたシステムのあるディレクトリへのフルパス
ビン/ッシュ - シェル (次のものと置き換えることもできます) ビン/バッシュ)
これで、必要なパッケージとアプリケーションのインストールを開始できます。
ROSのインストール
に従って、最新バージョンのROS(ROS Melodic)をインストールしました
-
パッケージのリストを更新する
sudo apt-get update
ここでエラーが発生しました:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
これは、パッケージ署名キーの有効期限が切れていることが原因です。 キーを更新するには、次のように入力します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9
-
ROS をインストールするためのシステムの準備
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
-
ROSのインストール
残念ながら、ROS のデスクトップ バージョンをインストールできなかったので、基本パッケージのみをインストールしました。sudo apt install ros-melodic-ros-base apt search ros-melodic
1に注意してください。 インストール プロセス中にエラーが発生する場合がありました。
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device
この問題は、apt ユーティリティを使用してキャッシュをクリアすることで修正されました。
sudo apt-get clean; sudo apt-get autoclean
2に注意してください。 インストール後、次のコマンドを使用してソースを作成します。
source /opt/ros/melodic/setup.bash
それはうまくいきません、なぜならbash は実行しなかったので、ターミナルに入力する必要はありません。
-
必要な依存関係のインストール
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init rosdep update
-
アクセス権の設定
私たちはログインしており、実際に組み立て中のシステムのルートに代わってすべてのアクションを実行するため、ROS はスーパーユーザー権限でのみ起動されます。
sudo を使用せずに roscore を実行しようとすると、エラーが発生します。Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'
エラーの発生を防ぐために、ROS ユーザーのホーム ディレクトリへのアクセス権を再帰的に変更しましょう。 これを行うには、次のように入力します。
sudo rosdep fix-permissions
-
rviz および rqt パッケージの追加インストール
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
最後の仕上げ
- chroot を終了します。
exit
- イメージをアンマウントする
cd .. sudo umount mnt/
- システムイメージをアーカイブにパックしましょう
xz –ckv1 <файл образа>
全て! 今、助けを借りて
リンク:
- このビデオは、Linux でチートする方法とそれが必要な理由について非常に役立ちました。
出所: habr.com