動作環境
Mac OS sonoma 14.4.1
概要
今回はmacOSでROSのnoeticを使おうという試みをしたので,その備忘録として書いておこうと思う.macOSでUbuntuをつかうところから始まり,ROSを入れてturtlebot3のシミュレーションをrvizで行えるようになるまでを書いている.
Dockerの導入
まずはdockerをダウンロードする.
このサイトの手順に従ってインストールを進めていく.
[Intel Mac用] https://desktop.docker.com/mac/main/amd64/Docker.dmg
[Sillicon Mac用] https://desktop.docker.com/mac/main/arm64/Docker.dmg
dockerをインストールできたら,アイコンをクリックして開いておく.(開いておかないとこの後コンテナをつくったり開いたりができない)
ROS+GUI環境の入ったコンテナを持ってくる
この方がROSをGUI環境で使えるdocker imageを提供しているのでこちらを使わせていただく.
ちなみにROS2版もある.
コマンドラインをたちあげて,
$ docker run -p 6080:80 --name 名前 --shm-size=512m tiryoh/ros-desktop-vnc:noetic
と入力する."名前"の部分は好きな名前にしていい.この部分がコンテナ名になる.
次に,Webブラウザで
http://127.0.0.1:6080
にアクセスする.するとUbuntuがブラウザ上に立ち上がる.
これは今Docker上にコンテナを立ててそのコンテナにVNCでアクセスしている.
これでROS noetic環境の入ったUbuntuが立ち上がったはずだ.
閉じるときはMacのターミナルに,
$ exit
$ docker stop 名前
と入力する.("名前"の部分はさっき決めたコンテナ名)
一度コンテナを作ったら,次にまた同じコンテナを開くときはMacのターミナルに
$ docker start 名前
$ docker exec -it 名前 /bin/bash
と打てば立ち上がる.("名前"の部分はさっき決めたコンテナ名)
その状態でまた127.0.0.1:6080にアクセスすれば開く.
もしUbuntuがブラウザの全面に表示されない場合は,左端の小さい三角をクリックするとメニューが開くので,歯車のアイコンをクリックしてScaling ModeのところのLocal Scalingを選択して立ち上げ直すとブラウザ前面に表示されるはずだ.
roscoreを動かしてみる
Ubuntu上でターミナルを開く.一番左下のつばめ?のようなマークをクリックするとメニューが開くので,System Tools > LXTerminalでターミナルが開く.
Ubuntuのターミナルに,
$ roscore
と打ち,新しく別にターミナルを開く.タブで開いてもウィンドウで開いてもいい.
タブで開く場合は control+shift+T
ウィンドウで開く場合は control+shift+N
新しく開いたターミナルに,
$ rosrun turtlesim turtlesim_node
と打つと,青背景に小さな亀が1匹出てくると思う.
また新しくターミナルを開いて,
$ rosrun turtlesim turtle_teleop_key
と入力してみる.ターミナルの入力画面上でキーボードの矢印キーを押してみると亀が動くようになる.ここまではできるはずだ.
一通り楽しみ終わったらroscore以外のターミナルをcontrol+Cで終了しておく
Turtlebot3のシミュレーションを動かす
ここからが問題である.roscoreとは別にターミナルを立ち上げて,
$ roslaunch turtlebot3_fake turtlebot3_fake.launch
と入力しても
RLException: [turtlebot3_fake.launch] is neither a launch file in package [turtlebot3_fake] nor is [turtlebot3_fake] a launch file name
The traceback for the exception was written to the log file
とエラーが出て動かないのである.そこで,turtlebot3の公式ドキュメントを見た.
このサイトの手順通りにturtlebot3パッケージをインストールしていくとうまく行った.
まず,ROSをインストールする.
$ sudo apt update
$ sudo apt upgrade
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh
$ chmod 755 ./install_ros_noetic.sh
$ bash ./install_ros_noetic.sh
次に,依存するROSパッケージをインストールする.
$ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \
ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \
ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \
ros-noetic-rosserial-python ros-noetic-rosserial-client \
ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \
ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \
ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \
ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers
次に,turtlebot3のパッケージをインストールする.
$ sudo apt install ros-noetic-dynamixel-sdk
$ sudo apt install ros-noetic-turtlebot3-msgs
$ sudo apt install ros-noetic-turtlebot3
最後に,.bashrcの最後に
export TURTLEBOT3_MODEL=burger
と記入しておけばOK.
これでもう一度roscoreが動いている状態で
$ roslaunch turtlebot3_fake turtlebot3_fake.launch
と入力してみると,rvizが開いてturtlebot3のシミュレーションが動くはずだ.
新しくターミナルを開いて,
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
と入力し,ターミナルの入力画面上で,WASDで操作してみると,turtlebot3が動いてくれる.
感想
下手に色々調べていろんなサイト見漁るよりまず先に公式ドキュメントを見ろということを学んだ.NKTだった.
参考文献
追記
UTMというアプリケーションを使ったらUSBパススルーもできた.USBカメラやコントローラーを使いたいならUTMの方がいいかも.