Kinaconの技術ブログ

Ubuntuはじめました。

ROS melodicをProxy環境でインストールする。

f:id:m-oota-711:20181227090344p:plain

Proxy環境下でROSを導入したときの備忘録。

実行環境

Ubuntu 18.04.1 LTS (Bionic Beaver)

前準備

Proxyの設定を環境変数、aptともに行っておく。

環境変数は http,https,ftp,no_proxyで大文字、小文字を登録しておくと良い。
18.04では aptのproxy設定は /etc/apt/apt.conf.d/proxy.conf に記載する。

インストール

aptのソースリスト取得

Proxy環境ではKeyサーバーにつながらないのでgpgのpubkeyをwgetで取得している。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt update

sudo apt install -y ros-melodic-ros-base #GUIツール無
sudo apt install -y ros-melodic-desktop #GUIツール有

途中で「依存関係の構築が失敗しました。」になった場合。
その場合はsudo apt --fix-broken installを実行する。

rosdep実行

sudo -E rosdep init #option -E で環境変数を渡す
rosdep update

必須パッケージのインストール

sudo apt install -y python-rosinstall python-rosinstall-generator python-wstool build-essential

以下のエラーが出た場合、強制的に上書きインストールする。

  • エラー
trying to overwrite '/usr/lib/python2.7/dist-packages/rospkg/manifest.py', which is also in package python-rospkg 1.1.4-1
Errors were encountered while processing:
`/var/cache/apt/archives/python-rospkg-modules_1.1.7-1_all.deb`
E: Sub-process /usr/bin/dpkg returned an error code (1)
  • 対処法
sudo dpkg -i --force-overwrite /var/cache/apt/archives/python-rospkg-modules_1.1.7-1_all.deb

ROSコマンドの有効化

source /opt/ros/melodic/setup.bash
grep -q -F 'source /opt/ros/melodic/setup.bash' ~/.bashrc || echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

Workspaceのセットアップ

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

ROS 環境変数のセットアップ

使用方法に合わせて実行してください。

grep -q -F ' ROS_MASTER_URI' ~/.bashrc || \
echo 'export ROS_MASTER_URI=http://localhost:11311' | \
tee -a ~/.bashrc

grep -q -F ' ROS_IP' ~/.bashrc || \
echo "export ROS_IP=$(hostname -I)" | \
tee -a ~/.bashrc

参考サイト

melodic/Installation/Ubuntu - ROS Wiki

ROS Keyserver Down? - ROS Answers: Open Source Q&A Forum

apt - dpkg error: "trying to overwrite file, which is also in..." - Ask Ubuntu

以上。