LoginSignup
4
1

M1 macbook nativeでRos2 humbleは動きます!

Last updated at Posted at 2023-12-30

備忘録としてROS2humbleのconda環境での構築をします。
直接ビルドするより動きます。だいぶ楽です。
こちらを使ってGazebo ClassicとNavigation2とslam_toolboxが入れられます。

環境

  • MacBook air m1 (2020) RAM 8GB
  • MacOS 14.2 Sonoma

twitterでTaigaさんが宣伝されているros2_m1_nativeがありますが、そちらではなく、conda仮想環境で構築できるros2環境がありましたので共有します。
興味がある方はぜひこちらのビルドチャレンジもしてみてください!

Condaを使用してのROS2humbleの元ソースはこちらです。

こちらの記事の流れは

  • brew導入
  • Miniconda導入
  • conda環境のセットアップ
  • 必要パッケージの導入
  • 注意点
    となっております。

brew導入

こちらの指示に従ってください。
基本的にこちらに従ったらできます。
Versionによってコマンドが違う場合があるのでホームページをみて確認するようにしてください。

MiniConda導入

こちらのQuickStart部分のコマンドをターミナルに打ち込んで導入してください。
コマンドを載せておきます。

mkdir -p ~/miniconda3
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

Ros2 導入

Robostackさんのものを利用して導入することできます。

こちらのGetting Startedの指示に従って導入してください。
今現在

  • ROS1 Noetic
  • ROS2 Foxy
  • ROS2 Galactic
  • ROS2 Humble
    が導入可能になっています。ここではHumbleについて解説します。他のバージョンは上記のサイトから説明をみてください。コマンドはこの通りです。
conda install mamba -c conda-forge
# Create a ros-humble desktop environment
# manba → conda
mamba create -n ros_env
mamba activate ros_env

# this adds the conda-forge channel to the new created environment configuration 
conda config --env --add channels conda-forge
# and the robostack channel
conda config --env --add channels robostack-staging
# remove the defaults channel just in case, this might return an error if it is not in the list which is ok
conda config --env --remove channels defaults
# Install ros-noetic into the environment (ROS1)
mamba install ros-noetic-desktop

# Install ros-humble into the environment (ROS2)
mamba install ros-humble-desktop

Webページ上ではmanbaとなっていますが、そちらはcondaに変えて動かすようにしてください。manbaの場合デフォルトで導入されるPythonのバージョンが3.8となっていてこちらのパッケージの要件であるPython3.10の要件に満たないためエラーが発生してしまいます。
インストールが完了したらcondaを再起動してください。

condaのBase部分にros環境は入れないようにしてください。Pythonのversionやらライブラリやらの問題でおかしくなってしまうようです。

インストールが終わったらcondaの再起動をします。

conda deactivate
conda activate ros_env

ビルドツールやらなんやらを入れます。

conda install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools

これでRos2環境の導入は終わりです!

テスト

この環境ではsourceコマンドは絶対に使用しないでください。
pythonのバージョンやら依存関係が仮想環境外のものを引っ張ってきてしまいます。

rviz2とrqt_graphの起動確認をします。以下のコマンドで起動できます。

conda activate ros_env
rviz2
rqt_graph

Gazebo11&Navigation2&SlamToolbox

以下のコマンドで導入できます。
Robostackさんのパッケージから持ってきます。
turtlebot3のシュミレーションも持ってきます

brewでgazeboは導入しないでください!
ライブラリの参照エラーで動きません

conda install ros-humble-gazebo
conda install ros-humble-navigation2
conda install ros-humble-nav2-bringup
conda install ros-humble-slam-toolbox
conda install ros-humble-turtlebot3-gazebo
conda install ros-humble-turtlebot3-bringup

基本的にこちらで大丈夫なはずです。
パッケージが欠けていたらこちらからパッケージリストを確認してダウンロードしてください。
ここで起動確認をします。

Pythonの環境変数(PYTHONPATH)を直接指定しないと仮想環境外のPYTHONを指定してしまうので直接コマンドで宣言しましょう

PYTHONPATH /Users/kaya/miniconda/envs/ros_env/bin/python

ここはminicondaがダウンロードされているディレクトリからenvsフォルダーの入っている仮想環境のPYTHONのPATHを指定してください。

動作確認

こちらを別々のターミナルから導入してください。

export TURTLEBOT3_MODEL=waffle pi
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py

現在正しくturtlebot3がシュミレーション上でスポーンされないため手動でスポーンさせています。

二箇所のファイルのpathを書き換えてください(ユーザー名は自分のユーザー名にしてください)

/Users/kaya/miniconda3/envs/ros2_humble/lib/gazebo_ros/spawn_entity.py -entity waffle_pi -file /Users/kaya/miniconda3/envs/ros_env/share/turtlebot3_gazebo/models/turtlebot3_waffle_pi/model.sdf -x -2.0 -y -0.5 -z 0.01 --ros-args
export TURTLEBOT3_MODEL=waffle pi
ros2 launch turtlebot3_bringup turtlebot3_state_publisher.launch.py
ros2 launch nav2_bringup navigation_launch.py
ros2 lanch slam_toolbox online_async_launch.py 

こちらを利用するとこのような感じで動くと思います!
スクリーンショット 2023-12-30 19.17.51.png

tips

conda環境外のpythonを指定してしまう際は

find_package(Python3 3.10 EXACT REQUIRED COMPONENTS Interpreter Development)

をCmakeList.txtに追加するとconda環境のpythonを使用してくれます
※brewで導入しているpythonとcondaで導入しているpythonが異なっている場合は使うことができます。

追記 2023 2/11

macのクリーンインストールをする機会があったのでconda環境を再構築しました。その際にcmakeやrosdepをconda環境で導入するとconda環境で特にエラーなく使用することができました。エラーを出さないにはros2に関係する全てのパッケージをconda内のパッケージを使用するのが一番です。

使用文献

それでは良いROS2ライフを!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1