c++ - 使用带德雷克的凉亭进行四旋翼飞行器
问题描述
我的目标是使用有限水平线性二次调节器(FHLQR) 来跟踪由数学程序生成的轨迹并在 Gazebo 中对其进行模拟。由于 FHLQR 需要一个系统作为输入,我正在使用QuadrotorPlant,但我不确定这是否理想。当我尝试将状态从 Gazebo 连接到 Drake 时,我的问题出现了。简而言之,将 Gazebo 的状态与 FHLQR 等控制器耦合的正确方法是什么?
我曾考虑编辑 QuadrotorPlant 的上下文以反映 Gazebo 中的状态,但在此更新之后,我无法从控制器获取控制输出。我还考虑过在控制器的输出和 QuadrotorPlant 的输入之间耦合模拟器,但还没有弄清楚如何修改模拟器以镜像 Gazebo。
解决方案
对于您的凉亭界面,假设您都使用 c++,那么我想它看起来像这样:
// setup
auto regulator = MakeFiniteHorizonLinearQuadraticRegulator(...);
auto context = regulator.CreateDefaultContext();
// during execution
context->SetTime(time_from_gazebo);
context->FixInputPort(0, Eigen::VectorXd([state obtained from gazebo]));
Eigen::VectorXd u = regulator->get_output_port(0)->Eval(context);
// then apply u to your gazebo interface
推荐阅读
- javascript - d3.js 中的 API 数据可视化
- firebase - 错误:参数类型“对象?” 不能分配给参数类型“地图”
' - excel - 在 Excel 365 Excelscript 中向图表添加趋势线时遇到问题
- openssl - 如何使用 openssl 使用 ES256 算法生成 JWT
- sql-server - 如何在 ReportBuilder 3.0 的参数中引用多个数据集?
- rust - TcpListener 锁定直到 TcpStream 关闭。如何处理新线程上的连接并避免阻塞?
- c++ - 在c ++中使用运算符重载检查数字是否为素数
- r - 如何直接从 R 中的协方差核中找到 fPCA?
- azure-cosmosdb - 如何将数据导入 cosmos db 模拟器
- docker - 是否有用于 dockerized RSK 节点的 docker-compose?