在 ROS (Robot Operating System) 中執行 package 裡的 Python 程式碼,主要有以下幾個步驟:
1. 確認 Python 程式碼的準備
- Shebang 行:
- Python 程式碼的第一行必須包含
#!/usr/bin/env python
,這行稱為 Shebang,它告訴系統使用 Python 解釋器來執行這個檔案。
- Python 程式碼的第一行必須包含
- ROS 函式庫:
- 如果你的 Python 程式碼需要使用 ROS 的功能,例如發布/訂閱主題或呼叫服務,你需要匯入
rospy
函式庫。
- 如果你的 Python 程式碼需要使用 ROS 的功能,例如發布/訂閱主題或呼叫服務,你需要匯入
- 執行權限:
- Python 程式碼檔案需要有執行權限。你可以使用
chmod +x your_python_script.py
指令來給予執行權限。
- Python 程式碼檔案需要有執行權限。你可以使用
2. 將 Python 程式碼放入 package 中
- scripts 資料夾:
- 通常,ROS package 會在根目錄下建立一個
scripts
資料夾,用於存放 Python 程式碼。 - 將你的 python 檔案放入此資料夾中。
- 通常,ROS package 會在根目錄下建立一個
3. 編譯 package
- catkin_make:
- 在終端機中,切換到你的 ROS 工作區(workspace)的根目錄,然後執行
catkin_make
指令來編譯 package。 - python 的node 基本上不需要在 CMakeLists.txt 做額外修改,但要確認package.xml 內有加入 python 的相依性。
- 在終端機中,切換到你的 ROS 工作區(workspace)的根目錄,然後執行
4. 執行 Python 程式碼
- rosrun 指令:
- 使用
rosrun <package_name> <python_script_name.py>
指令來執行 Python 程式碼。 - 將
<package_name>
替換為你的 package 名稱,<python_script_name.py>
替換為你的 Python 程式碼檔案名稱。 - 例如:
rosrun my_package my_node.py
- 使用
範例
假設你有一個名為 my_package
的 package,並且在 scripts
資料夾下有一個名為 my_node.py
的 Python 程式碼檔案。以下是一個簡單的範例:
- my_node.py:
Python
#!/usr/bin/env python
import rospy
def main():
rospy.init_node('my_node')
rospy.loginfo('Hello, ROS!')
rospy.spin()
if __name__ == '__main__':
main()
- 執行步驟:
- 給予執行權限:
chmod +x my_node.py
- 編譯 package:
catkin_make
- 執行程式碼:
rosrun my_package my_node.py
- 給予執行權限:
注意事項
- 確保你的 ROS 環境已經正確設定。
- 如果你的 Python 程式碼需要使用 ROS 的功能,請確保已經正確初始化 ROS 節點(使用
rospy.init_node()
)。 - 如果你的 python 程式碼有使用到其他python的package,請確認該package有安裝在你的環境中。
沒有留言:
張貼留言