ロボットのハードウェアにもオープンソースの流れがある

一人の並のエンジニアが寄与できることは限られている。
多様な構成要素からなる製品を組み上げようとして一人のエンジニアができることは限られている。
そのためには、よい先行例を模倣して理解して、それ以上のものにするためにあがく。
自分の開発がオープンソース化するものでなくても、オープンソースの動向は探っておいていい。

オープンソースだからといって、必ずしも優れているわけではない。
ここではROS、ROS2以外のオープンソースの動向を調査したので記載する。

ロボットにおいて実現したい内容は、開発者によって異なる。
それぞれのライブラリが実現しようとする内容やアプローチは異なる。
あなたにとって気になるライブラリは、あなたが探すしかない。


## 注意すること
- Github などのリポジトリで、最近メンテナンスがされているかどうか。
- 現時点での実装の進んでいる水準。
    - どの範囲までカバーしているのか。
    - どの範囲は、対応の予定がないのか。
    - その実装が価値をもつのは、どういう状況なのか。
    - どのような位置づけのライブラリなのか。
- その実装が前提としているフレームワークはどの程度寿命をもっているのか、どの程度標準化されているのかどうか。
    - CPU、 OSなどのハードウェアの前提
    - 必要とするフレームワーク
- ロボットの制御であれば、どのような制御の理論で実装してあるのかを気にする必要がある。
    ロボットやその制御についての論文の情報が、そのwebサイト、github などからたどれるかを調べよう。
    - 例：2足歩行ロボットに、荷物を背負わせた途端に、バランスを崩して倒れてしまうようなものになっていないか。
    - 例：制御を行うためのフィードバックループの周波数はいくらになっているか。
- それぞれのロボットは、それぞれの目的と適用範囲がある。
	- あなたの考えている利用目的は、たぶんこれらとは違うだろう。
	- そのため、それぞれの設計には一言あるだろう。
	- しかし、それぞれの設計には何かしらの学び取るべきことがあるはずだ。
- github にあるからといってopen sourceとは限らない。ライセンスの種類もまちまちだ。

あるプロジェクトの中で、オープンソースとしてあるソフトウェアモジュールを公開しているものと、ハードウェアを含めて公開している場合とがある。
以下のメモの中では、両者が混在している。製品として開発している場合だと、公開しきれない場合があるのはしかたない。


## Poppy Humanoid
Poppy Humanoid: ハードウェアとソフトウェアがオープンソースの有名なロボット

https://www.poppy-project.org/en/robots/poppy-humanoid/
https://www.poppy-project.org/en/


github https://github.com/poppy-project/poppy-humanoid

![](https://github.com/poppy-project/poppy-humanoid/raw/master/doc/img/poppy-humanoid-github.jpg)

![Screenshot from 2024-01-13 16-57-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/22cae707-dc34-aaf6-4421-e57909b0d03b.png)

ソフトウェアのライセンスはGPLv3。商用のロボットを開発しようとしている場合にはライセンスに注意してくてください。

[github のページ](https://github.com/poppy-project/poppy-humanoid?tab=readme-ov-file#install-a-poppy-board)には、Raspberry Pi が使われていることが書かれている。
>Install a Poppy board
Poppy Humanoid is made to work with a Raspberry Pi 3 or 4. We provide our own system image that can be directly copied to the SD-card or MMC. You can refer to the documentation for more details. Note that if you buy it as a kit from one of the reseller you will also get a pre-installed SD-card.

和訳

>Poppy boardを設置する
Poppy Humanoid は Raspberry Pi 3 または 4 で動作するように作られています。SD カードまたは MMC に直接コピーできる独自のシステム イメージを提供します。 詳細については、ドキュメントを参照してください。 再販業者からキットとして購入した場合は、プリインストールされた SD カードも入手できることに注意してください。

利用しているカメラの種類
> 2.0 Megapixels “Videw” Camera with OV2643 CMOS sensor equipped with FOV 120° or 170°
[引用元](https://poppy.discourse.group/t/finding-materials-from-poppy-humanoid-bom/4199)

## Hector(Humanoid for Enhanced ConTrol and Open-source Research)
開発主体 [Dynamic Robotics and Control Laboratory](https://sites.usc.edu/quann/)

github [Hector Open-source Simulation Software in ROS](https://github.com/DRCL-USC/Hector_Simulation)

Simulation Software (ROS/MATLAB) for HECTOR Humanoid Robot Locomotion Control/Bipedal Locomotion Control/Force-and-moment-based MPC

![](https://github.com/DRCL-USC/Hector_Simulation/raw/Matlab_Simulation/STL%20files/Hector_picture.jpg)
そこで開発されているロボット Hector

pdf [Dynamic Loco-manipulation on HECTOR: Humanoid for Enhanced ConTrol and Open-source Research](https://arxiv.org/pdf/2312.11868.pdf)

上記の論文のAbstractの和訳
> 移動と操作における目覚ましい進歩にも関わらず、人型ロボットは依然として同期した移動操作制御の欠如に悩まされており、その動的潜在力を最大限に発揮することが妨げられています。 この研究では、力とモーメントに基づくモデル予測制御 (MPC) を介して、人型ロボットの動的移動と移動操作を制御および一般化するための多用途かつ効果的なアプローチを紹介します。 具体的には、ヒューマノイドの移動操作のためにヒューマノイドとオブジェクトのダイナミクスの両方を考慮する単純化剛体ダイナミクス (SRBD) モデルを提案しました。 この線形力学モデルを使用すると、MPC 問題を通じて地面反力とモーメントを直接解くことができ、高度に動的なリアルタイム制御を実現できます。 私たちが提案するフレームワークは汎用性が高く、一般化可能です。 HECTOR (Humanoid for Enhanced ConTrol and Open-source Research) プラットフォームを導入し、ハードウェア実験での有効性を実証します。 提案されたフレームワークを使用すると、HECTOR は、体や足の位置に外力が加わった場合でも、両足立脚モード中に優れたバランスを維持できます。 さらに、湿った芝生の表面、斜面、ランダムに配置された木製スラット、高さ 6 cm までの積み上げられた木製スラットなど、さまざまな凹凸地形上で 0.6 m/s の速度で 3 次元動的歩行を実行できます。 さらに、2.5 kg の荷重を担いで平坦でない地形上で人型ロボットの動的な移動操作を実証しました。 HECTOR シミュレーションは、提案された制御フレームワークとともに、オープンソース プロジェクトとして利用可能です。


「体や足の位置に外力が加わった場合でも、両足立脚モード中に優れたバランスを維持できます。 」とあり、最近のロボットで実現されている倒れにくさを実現している。

 "To enhance the robustness of state estimation, an Intel Realsense T265 tracking camera is also
located near the COM. This camera, through its onboard VIO algorithm, outputs the position and orientation of the body
at a slower 200 Hz rate." 

とあり、重心の近くに、Intel Realsense T265 tracking camera　があることが述べられている。

"Additionally, for potential future applicaions, HECTOR is equipped with an Intel Realsense D435i camera mounted on top, designed to capture depth data and other relevant environmental information. "
と頭部には、Intel Realsense D435i camera　が用いられていることが述べられている。

github の中には依存ライブラリについての記述がある。
https://github.com/DRCL-USC/Hector_Simulation?tab=readme-ov-file#dependencies

[unitree_legged_sdk](https://github.com/unitreerobotics/unitree_legged_sdk)の記述がある。


Youtube [Dynamic Robotics and Control Laboratory](https://www.youtube.com/@drcl_usc)
Youtube [Introducing Hector - Humanoid for Enhanced ConTrol and Open-source Research](https://www.youtube.com/watch?v=NcW-NFwjMh0)

### Hector V2
https://laser-robotics.com/hector-v2/

---
## Institute for Human and Machine Cognition
https://github.com/ihmcrobotics/ihmc-open-robotics-software

> ROS API's
We provide a native ROS 2 API for many of the core components in our software stack. You can find the .msg definitions for use in your own projects in this project's ihmc-interfaces folder.

Apache 2.0 license.

https://robots.ihmc.us/
Institute for Human and Machine Cognition [フロリダ人間機械認知研究所](https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AD%E3%83%AA%E3%83%80%E4%BA%BA%E9%96%93%E6%A9%9F%E6%A2%B0%E8%AA%8D%E7%9F%A5%E7%A0%94%E7%A9%B6%E6%89%80)

![Nadia Humanoid](https://www.ihmc.us/wp-content/uploads/2022/10/20220428_Nadia_Front_WeightShift-762x1024.png.webp)
Nadia Humanoid

Youtube https://www.youtube.com/@IHMCRobotics
解説記事 [IHMCがヒト型ロボット「ナディア」を開発中、動画を公開　ボストンDRS「アトラス」とNASA「ヴァルキリー」をベースに　「IEEE」が報じる](https://robotstart.info/2022/10/11/ieee-nadia.html)

## Github [ROS2_Walking_Pattern_Generator](https://github.com/open-rdc/ROS2_Walking_Pattern_Generator)

Walking Pattern Generator (= Walking Controller) using ROS2 for Humanoid Robots
[開発者のblog](https://odome.hatenablog.com/)
[開発者のX(twitter)](https://twitter.com/OdoOdomeme555)
どのくらいの達成状況なのかは、blogに含まれている動画を見てください。

## [Open Dynamic Robot Initiative](https://open-dynamic-robot-initiative.github.io/)

https://github.com/open-dynamic-robot-initiative

![Screenshot from 2024-01-13 23-54-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/49998ca5-38be-7577-0935-1c7c6e4f69a8.png)

Youtube https://www.youtube.com/@odri

[Open Robot Actuator Hardware](https://github.com/open-dynamic-robot-initiative/open_robot_actuator_hardware?tab=readme-ov-file)

上記のgithubのリポジトリをたどると、ハードウェアの構成の詳細が記されている。


## Unitree legged SDK　の開発元 Unitree Robotics について
https://www.unitree.com/

Unitree　Robotics では、
[Unitree H1](https://www.unitree.com/h1)
[Unitree Go2](https://www.unitree.com/go2)
などのロボットを開発し、市販している。

Unitree legged SDK はUnitree Robotices が提供しているSDKである。

https://github.com/unitreerobotics/unitree_legged_sdk

> The unitree_legged_sdk is mainly used for communication between PC and Controller board. It also can be used in other PCs with UDP.
Notice
support robot: Go1


ロボットの分野の通信のプロトコールにはUDPが使われている。

Unitree-legged-sdk はGithubにあるが、オープンソースとは言い切れない。

静的ライブラリ *.a ファイル
共有ライブラリ　*.so ファイルで置かれているのがあり、
それらのソースコードは公開されていない。

https://github.com/unitreerobotics
にはこれらのリポジトリがある。
https://github.com/unitreerobotics/unitree_ros
https://github.com/unitreerobotics/unitree_ros_to_real


## mobile ALOHAでのハードウェアのopen source
- mobile ALOHAのチームは、双腕ロボットにいくつもの家事をさせるデモンストレーションを2024年1月に公開した。
- ロボットとしてのハードウェアは、ロボット好きには物足りないかもしれない。
- 出来合いの自律走行台車（AMR)を使って走行させている。
- ハンドもグリッパーにすぎない。
- しかし、その動作は、意味のある動作をしだしている。
- その詳細は、 [mobile ALOHA](https://mobile-aloha.github.io/)を見てください。
- ![mobile_ALOHA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/abbf1012-64fe-73f3-9438-4b5e2a2f6353.png)
- mobile ALOHAの ハードウェアのopen source
[Mobile ALOHA 🏄: Learning Bimanual Mobile Manipulation with Low-Cost Whole-Body Teleoperation](https://docs.google.com/document/d/1_3yhWjodSNNYlpxkRCPIlvIAaQ76Nqk2wsqhnEVM6Dc/edit)


[フルスタック・オープンソース・人型ロボット](https://x.com/ZappyZappy7/status/1827990869829410833)

-----

https://github.com/openhumanoids


## より汎用性の高いロボットを作るためには
- より多様な動作をこなせるロボットであって、多くの用途を切り開いていくためには、ユーザー数・開発者数を増やしていくことだ。
- 近年のAI技術の進展は、オープンなプラットフォーム上で多くの開発者が競い合っていることによる。
- ロボット上で動作するソフトウェアを競うあうためには、ロボットの開発環境が、十分に提供されることが必要だ。
- そういう時代に近づきつつあると私は思っている。

## ロボットの開発は開発者の出会いが重要だ。
- ロボットを業務として開発できるチャンスは多くない。
- 人型ロボットのように、開発思想によっていくらでも変わってしまうものはなおさらだ。
- 人型ロボットも、自前のアクチェータを使えるのか、既存のアクチェータしか選べないのかで、
　だいぶ状況が変わってくる。
- センサーの選択、認識アルゴリズム・行動計画・制御などのそれぞれによって出来上がるものがまったく別のものになる。
- もう開発体制が出来上がってしまったチームもあるし、これから開発メンバーを獲得中にチームがある。
- メンバー募集中のチームが、あなたの求めるものに合致するならば、挑戦するという選択肢もあるだろう。