Open7

ROS2, Micro ROS,Raspbeery Pi, SPRESENSE, PX4

A.しおまねきA.しおまねき

XML Robot Description Format (URDF)

統一ロボット記述フォーマット(URDF)は、ロボットを記述するためのXML仕様である。我々はこの仕様をできるだけ一般的なものにしようと試みているが、この仕様ですべてのロボットを記述することはできないのは明らかである。現時点での主な制限は、ツリー構造しか表現できないことであり、すべての並列ロボットを除外している。また、この仕様では、ロボットは関節で接続された剛体リンクで構成されていると仮定しており、柔軟な要素はサポートされていません。(DeepL翻訳)
http://wiki.ros.org/urdf/XML/model

A.しおまねきA.しおまねき

PX4 User Guide/ROS 2 User Guide

https://docs.px4.io/main/en/ros/ros2_comm.html#ros-2-user-guide

ROS 2-PX4アーキテクチャは、ROS 2とPX4の間の深い統合を提供し、ROS 2のサブスクライバまたはパブリッシャノードがPX4 uORBトピックと直接インターフェースできるようにします。(DeepL翻訳)

uORB Messaging

https://docs.px4.io/main/en/middleware/uorb.html

uORB は非同期の publish() / subscribe() メッセージング API で、スレッド間/プロセス間通信に使用されます。(DeepL翻訳)

Design and Implementation of Model Predictive Control on Pixhawk Flight Controller

https://core.ac.uk/download/pdf/188220406.pdf

13: Micro object request broker, µORB

https://www.researchgate.net/figure/Micro-object-request-broker-ORB_fig12_329774661

A.しおまねきA.しおまねき

First micro-ROS Application on Linux
https://micro.ros.org/docs/tutorials/core/first_application_linux/

micro-ROS Build System

micro-ROS provides two ways of building a micro-ROS application for embedded platforms:

  • micro_ros_setup: integrates and hides the RTOS-specific build tools in few scripts provided as a ROS 2 package.
  • Platform-specific integrations: We have integrated micro-ROS with several platforms build tools. Click here to learn more.

ここではRTOSの場合におけるビルドを説明していて、zephyrの場合の例でreate_firmware_ws.shを行っている

Creating a new firmware workspace
Once the build system is installed, let’s create a firmware workspace that targets all the required code and tools:

# Create step
ros2 run micro_ros_setup create_firmware_ws.sh zephyr host

ここでzepherの所で指定できるRTOSなどの一覧は以下のディレクトリ内のサブディレクトリ。
https://github.com/micro-ROS/micro_ros_setup/tree/771b16e68e8672e07d912eb4bed6e9917084031b/config

ドキュメントではRTOSと表現されているので文字通りRTOSしか指定出来ないと考えてしまうが、上記のディレクトリを見れば分かるようにraspbianも存在している。

root@262fbbec43ba:/microros_ws# ros2 run micro_ros_setup create_firmware_ws.sh 
Syntax: ros2 run micro_ros_setup create_firmware_ws.sh <package> [<platform>]
Available platforms:
. android
+-- generic
. freertos
+-- crazyflie21
+-- esp32
+-- nucleo_f446re
+-- nucleo_f446ze
+-- nucleo_f746zg
+-- nucleo_f767zi
+-- olimex-stm32-e407
. generate_lib
+-- generic
. host
+-- generic
. mbed
+-- disco_l475vg_iot01a
. raspbian
+-- stretch_v8
+-- buster_v7
+-- buster_v8
. renesas_ra
+-- ra6m5
. zephyr
+-- discovery_l475_iot1
+-- olimex-stm32-e407
+-- nucleo_f401re
+-- nucleo_h743zi
+-- nucleo_f746zg
[ros2run]: Process exited with failure 1