2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsのコマンドプロンプトをROS用に改造する

Posted at

はじめに

普段はubuntuでROSを使っていますが、諸事情によりwindowsでROSを動かす必要がありました。しかし、windowsでよく使われるシェルであるコマンドプロンプトは、あまりにも使い勝手が悪かったので、ROSを操作しやすいように改造しました。

結果、**コマンドプロンプトを開くだけで、ROSのコマンドも使えるし、登録したエイリアスも使えるし、linuxコマンドも使えるようになりました。**楽!!

※諸事情とは→Oculus LinkとROSを一緒に使いたいが、Oculus Linkはlinuxに対応していない...

環境

  • Windows 10
  • コマンドプロンプト (Windows Terminal)
    • コマンドプロンプトはWindows Terminalから起動することを想定しています
  • ROS2 Foxy

1. 起動時にセットアップ用の処理を自動で実行する

コマンドプロンプト起動時に自動で実行してほしい処理がいくつかあります。例えば、

  • ROS2のセットアップ (call C:\opt\ros\foxy\x64\local_setup.bat)
  • コンパイル環境の設定 (call "C:\Program Files (x86)\Microsoft Visual Studio\...)
  • 作成したワークスペースのセットアップ (call install/setup.bat)

などがあります。これらのコマンドを以下のような1つのバッチファイルにまとめて、それをコマンドプロンプトの起動時に自動で実行するように設定します。

ros.bat
@echo off

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
call "C:\opt\ros\foxy\x64\local_setup.bat"

windows terminalにて、ctrl+,で設定を開き、新しいプロファイルを追加しますを選択して、ROS用のプロファイルを新規に作成します。その後の詳しい手順は、以下のサイトの6.1 Using the new Windows Terminalの部分を参照してください。

起動時に先ほどのバッチファイルを実行するようにしたいので、プロファイルのcommandlineは以下のように設定します。

{
    "commandline" : "C:\\Windows\\System32\\cmd.exe /k \"path\\to\\bat\"",
}

2. エイリアスを登録する

いちいちROSの長いコマンドを入力するのは大変なので、エイリアスを登録したいところです。linuxではbashrcに書くだけで済みますが、コマンドプロンプトにはそういう概念はなさそうだったので、doskeyコマンドを使いました。doskeyコマンドを使うと、コマンドプロンプトから使用するマクロを設定できます。例えば、以下のコマンドでは、ros2 run...から始まるコマンドを、ros-tcp-endpointという名前で登録しています。

$ doskey ros-tcp-endpoint=ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=192.168.11.12

しかし、コマンドプロンプトで上記のコマンドを実行するだけだと、そのウインドウを閉じると消えてしまいます。設定を永続化させるために、今回は、C:\Users\(ユーザ名)\Macros.txtというファイルにすべてのエイリアスを記述し、コマンドプロンプト起動時にそれを読み込むようにしました。

Macros.txt
マクロ名=コマンド

作成したバッチファイルに以下の一行を追加します。このdoskeyコマンドでマクロファイルの中身が読み込まれて登録されます。

doskey /macrofile="C:\Users\(ユーザー名))\Macros.txt"

3. linuxコマンドを使えるようにする

デフォルトのコマンドプロンプトでは、lsmvなどのコマンドが使えませんが、下記のGowをインストールすることで使えるようになりました。

ただし、そのままだと文字化けの問題があるため、以下の記事に従って対処しました。

参考文献

2
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?