使用凉亭和四旋翼机
Using gazebo with drake for quadrotor
我的目标是使用有限时域线性二次调节器(FHLQR(来遵循数学程序生成的轨迹,并在Gazebo中进行模拟。由于FHLQR需要一个系统作为输入,我正在使用四旋翼发电厂,但我不确定这是否理想。当我试图将加泽博州与德雷克州联系起来时,我的问题就出现了。简而言之,将Gazebo的状态与FHLQR等控制器耦合的正确方式是什么?
我曾想过编辑QuadrotorPlant的上下文以反映Gazebo中的状态,但在这次更新之后,我很难从控制器获得控制输出。我还考虑过将模拟器耦合在控制器的输出和四轮发电厂的输入之间,但还没有弄清楚如何修改模拟器以反映Gazebo。
对于您的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
我认为我们应该能够提供帮助,但可能需要更多细节。
我对你的设置的心理模型是,你使用QuadrotorPlant
来设计轨迹,并在drake中使用MakeFiniteHorizonLinearQuadraticRegulator
方法。。。其结果是具有期望表示四旋翼机状态的双矢量的输入端口的drakeSystem
,并且其输出表示四旋翼的推力命令的双矢量。
另外,您有一个带有四旋翼的Gazebo模拟器,它接受命令并模拟动力学。
您是否试图通过消息传递(而不是单个可执行文件(来连接它们?可能是ROS1消息?(如果是,那么我们在drake中有可以发送/接收ROS消息的小系统,我们可以向您指出(
FWIW,我绝对建议在尝试轨迹版本之前,先在drake中运行LQR控制器来尝试工作流。
相关文章:
- 从C++本机插件更新Vector3数组
- GCC本机矩阵运算库
- VC++本机单元测试,找不到调试符号
- 在这种情况下,java对象是否可以调用本机函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 无法将标准库导入本机 android 项目中的头文件
- 使用本机 C++ 应用程序中的 C# 代码
- 在nodejs中使用本机代码的最佳方法是什么?
- 如何告诉本机节点模块所需的dll存储在哪里?
- OpenGL 在 VMWare Fusion 版本 10.1.3 上安装的虚拟机 (Ubuntu 16.04) 上崩溃
- 在自定义程序中使用本机 Windows 自然顺序排序
- MFC:你能在CDateTimeCtrl中改变自旋的加速度吗?
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- MS 本机单元测试 - 断言::线程失败不起作用
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 如何在使用 Boost MSM 编写的状态机中直接访问任何状态
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- C++/CLI 混合托管/本机 DLL 不起作用
- 子系统中的异常处理:本机