iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
自我挑戰組

ROS2 及 ROS Porting 自學筆記系列 第 5

Day5 ROS2 Package - Python

  • 分享至 

  • xImage
  •  

突然發現我先寫C++再寫Python會不會太殘忍XD?
不過如果看得懂C++,Python應該就不難了吧。而且筆者對Python反而比較沒有C++熟悉,大部分資料都取自官方文件,如果有錯請不吝指教。

Python

Python package 用下面指令創見:

ros2 pkg create --build-type ament_python <package_name>

Python的Package檔案結構應該會長的類似這樣:

py_package_1/
      package.xml
      resource/py_package_1
      setup.cfg
      setup.py
      py_package_1/

setup.py

package.xml有一樣的資訊,請確保兩者一致。
除了基本個人資料,ros2 pkg create之後就不會去修改其他東西,唯一會動到的是entry_points,用來描述這個package的可執行檔,例如:

entry_points={
    'console_scripts': [
        'talker = py_package_1.publisher_member_function:main',
        'listener = py_package_1.subscriber_member_function:main',
    ],
},

這邊是用來描述這個package的可執行檔。以talker為例,這邊是用來描述talker這個可執行檔,他的執行檔是py_package_1.publisher_member_function,他的main function是mainlistener也是同理。

setup.cfg

這個檔案是用來讓ros2 run可以找到package的可執行檔,一般也是不會去修改的。

Package Comparison

結果發現C++和Python的比重差好多,今天的文章特別短哈哈。這邊就來比較一下ROS和ROS2的差異吧。

ROS vs. ROS2

說明 ROS ROS2
CMake Macro catkin ament
創建Package指令 catkin_create_pkg <package_name> [depend1] [depend2] [depend3] ros2 pkg create --build-type [depend1] [depend2] <package_name>
Build Package指令 catkin build colcon build
Package語言獨立性 C++和Python可以放在同一個package內 C++和Python應獨立成兩個packages
Package 描述檔 CMakeLists.txt & package.xml C++: CMakeLists.txt & package.xml; Python: setup.py & setup.cfg
package.xml buildtool <buildtool_depend>catkin</buildtool_depend> <buildtool_depend>ament_cmake</buildtool_depend>
package.xml depend <build_depend>roscpp</build_depend> <build_depend>std_msgs</build_depend> <depend>rclcpp</depend> <depend>std_msgs</depend>

ROS2 Package C++ vs. Python

說明 C++ Python
Package語言獨立性 C++和Python可以放在同一個package內 C++和Python應獨立成兩個packages
Package 描述檔 CMakeLists.txt & package.xml C++: CMakeLists.txt & package.xml; Python: setup.py & setup.cfg
package.xml buildtool <buildtool_depend>ament_cmake</buildtool_depend> <buildtool_depend>ament_python</buildtool_depend>
package.xml depend <depend>rclcpp</depend> <depend>std_msgs</depend> <exec_depend>rclpy</exec_depend> <exec_depend>std_msgs</exec_depend>

Reference



上一篇
Day4 ROS2 Package - C++
下一篇
Day6 - ROS2 Node Python
系列文
ROS2 及 ROS Porting 自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言