kyawawa / choreonoid_plugins Goto Github PK
View Code? Open in Web Editor NEWHumanoid controllers using choreonoid
Humanoid controllers using choreonoid
nloptはソルバのインスタンスを作って,そこに評価関数や制約を設定して,最後にソルバを実行する関数を呼ぶ,みたいな使い方だと思うのですが,
nloptに設定する評価関数の内部でシミュレーションをリセットして,シミュレーション終了時に評価値を返すみたいな設計にすれば簡単ではないでしょうか.
現在の実装のような,シミュレーションがリセットされるタイミングで何らかの関数を呼ぶ,という仕組みだと,ソルバをどのプロセスで回せばよいかわからないです.
Pluginはシミュレーション時間で動かせないと思っていたが,preDynamicsFunctionなどが物理シミュレーション時間で回るらしい.
Controllerを全く使わずにPluginのみで実時間制御できるなら,煩雑なデータのやり取りが減る上に書くべきプログラムも1つで済むので非常に嬉しいので近いうちに試す.
SimulatorItem.cppのstepSimulationMain()内を読んで呼ばれる順番に気をつけつつ書く.
Controllerと厳密に同じ挙動にしようとすると,useControllerThreadsの場合,
midDynamicsFunctionsでOutputを計算し,
postDynamicsFunctionsに書き込むのが正解?
ControllerThreadの挙動を理解できてないから分からないが,そこまでしなくても良さそうではある
実は現在の記述では,shmの領域をcreateした後,removeしていません.
createしたshmの領域をremoveする際には
shared_memory_object::remove
という関数を呼べばいいようなのですが,これをどこに記述すれば良いでしょうか?
現在,controller/PDController_InvertedPendulum.cppのコントローラはinitialize()とcontrol()関数をメンバ関数に持っていますが,そのうちcontrol()関数内でshmの領域を確保している状況です.
本来control()でなくinitialize()関数でshmのcreateをして,このコントローラのデストラクタ内でremoveする記述をしておけば良いのかと思いますが,うまくいきませんでした.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.