我目前正在尝试实现一个纯粹的重力补偿控制的Kuka iiwa 7使用Drake。我已经将我的代码实现为两个文件:仿真和控制器。我的模拟包含我的可视化器,它接收命令并发送状态‘。我的控制器接收状态并输出命令。为此,我查看了drake用于kuka_simulation、move_iiwa_ee和kuka_plan_runner的示例代码。然而,我有一些关于这三个文件的问题。
In kuka_simulation,因为我想切换到扭矩控制器模式,所以我将变量torque_control设置为true,它将InverseDynamicsController替换为KukaTorqueController。
我试图使用一个用c++编写的基于模板的控制器类来控制一个机器人.本质上,我有一个UDP连接设置与机器人,以接收机器人的状态,并发送新的扭矩命令给机器人。我接收到更高频率的新观测(比如2000 the ),我的控制器大约需要1ms (1000 The)来计算向机器人发送新的扭矩命令。我面临的问题是,我不希望我的主要代码等待发送旧的扭矩命令,而我的控制器仍在计算新的命令发送。据我所知,我可以在realtime内核中使用Ubuntu,多线程代码,以便我的getTorques()方法在一个不同的线程中运行,为进程设置优先级,并使用互斥和锁来避免两个线程之间的数据竞争,但我希望了解为这样一个问题编写硬实
我有一个导入到25cm x 5cm x 2cm中的条形SimMechanics的CAD模型。在一个侧面,我有一个小的“洞”,在它周围,我必须施加一定的扭矩,使棒旋转。
我已经应用了通过旋转关节的扭矩,但是旋转轴被SimMechanics假定为边缘之一,给出一个“不对称”的旋转。
如何将扭矩的位置移到杆上的这个特定点?
下面的Java设计允许在不更改对象到客户端的接口的情况下扩展对象。该对象可以实现附加的扩展接口。客户端可以向对象请求它实现的扩展接口。我在一篇博客文章中读到了这件事,但我的谷歌技能再次未能找到这篇博客文章。我并不是在鼓吹这种设计的优点。我只想找到那篇博文。
例如,设想一个用于运输车辆的域模型。每个vehicle对象都实现这个接口:
public interface Extendable {
/**
* Asks the object if it provides the extension.
*
* @param extensionInterface