5
2

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.

ROS2をwindows10にインストールしようとしたら詰まった

Posted at

#はじめに
ROS2がwindowsでも動くと聞いて、手持ちのwindowsPC(surface pro3)にインストールしようとしたらハマったところがあったので共有化します。

#インストール手順
公式が非常に分かりやすい。
この記事も参考になります。

#詰まったところ
サンプルプログラムで
ros2 run demo_nodes_cpp talker
を実行したところ、
"failed to create process"
と言われてしまった。

いろいろ調べた結果、ROS2のフォルダの
ros2_dashing/Scripts
の中にあるpythonスクリプトの一行目のShebangが
#!C:\Python37\python.exe
となっていて、実際のpython実行ファイルがある場所ではなかった。
なので、全部で19個あるpyファイルを実際にpython.exeがある場所(*1)のパスに書き換えて実行したところ、うまく動いた。

ところが、今度は次のサンプルプログラムで、
ros2 run demo_nodes_py listener
と実行したところ、また
"failed to create process"
と言われてしまった。

小一時間調査した結果、上記同様にスクリプトの一行目を書き換えるとうまく動いた。書き換えたのはros2_dashing/Libフォルダ内の下記フォルダのpyスクリプト。

  • demo_nodes_py
  • examples_rclpy_executors
  • examples_rclpy_minimal_action_client
  • examples_rclpy_minimal_action_server
  • examples_rclpy_minimal_client
  • examples_rclpy_minimal_publisher
  • examples_rclpy_minimal_service
  • examples_rclpy_minimal_subscriber
  • quality_of_service_demo_py

#作業に使用したコード
下記コードはfor_replaceフォルダに一度pyスクリプトをコピーしてから書き換えることを想定したコードです。
<<>>の中はご自身のpython.exeのパスを記入ください。

file_change.py
# -*- coding: utf-8 -*-

import glob

file_name_list = glob.glob("for_replace/*.py")
first_line_list = []

for file_name in file_name_list:
    with open(file_name) as f:
        line_list = f.readlines()
        line = line_list[0]

    first_line_list.append(line)

print(first_line_list)#'#!c:\\python37\\python.exe\n' が並んだリスト

replace_shebang = "#!<<python.exeのあるパス>>\n"

first_line_list2=[]

for file_name in file_name_list:
    with open(file_name) as f:
        l = f.readlines()
    #insert new_name in first line
    l.insert(0,replace_shebang)
    #delete seconde line
    del l[1]

    ##ファイル書き込み
    with open(file_name, mode='w') as f:
        f.writelines(l)

    #書き込んだファイルの中身確認
    with open(file_name) as f:
        temp = f.readlines()

    line = temp[0]
    first_line_list2.append(line)

print(first_line_list2)

*1 スタートメニュからpythonを探して、右クリックで「ファイルの場所を開く」としてから、もう一度右クリックで「ファイルの場所を開く」とすると、大元のexeファイルの場所がわかる

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?