impedance control for robot arm through C++

Define parameters

Initialize M, B, K:

Eigen::VectorXd Mm(6,1)
    Mm<<1./M_x,1./M_y,1./M_z,1./M_rx,1./M_ry,1./M_rz;
auto Mr = Mm.asDiagonal();
Eigen::VectorXd Bm(6,1)
    Mm<<B_x,B_y,B_z,B_rx,B_ry,B_rz;
auto B = Bm.asDiagonal();
Eigen::VectorXd Km(6,1)
    Mm<<K_x,K_y,K_z,K_rx,K_ry,K_rz;
auto K = Km.asDiagonal();

Impedance control iteration

Firstly, initialize xacc, xvel and xpose with zero;

Eigen::VectorXd xacc(6,1);
Eigen::VectorXd xvel(6,1);
Eigen::VectorXd xpose(6,1);

The parameter (exterForce) represents the external force exerted at the model, and the TIME_STEP means the time duration for controlling robot arm. Thus, the iteration code can be written as:

xacc = Mr*(exterForce - B*xvel - K*xpose); 
xvel = xacc*TIME_STEP + xvel;
xpose = xpose + xvel*TIME_STEP;

Lastly, the actual position of the robot is:

auto pos = xpose + plannedPos;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值