这篇文章给大家介绍怎么在gazebo中施加作用力,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
修改成虚拟机IP地址
ipaddress = '192.168.137.129';
初始化
rosinit(ipaddress)
获取gazebo元素
gazebo = ExampleHelperGazeboCommunicator();
新建并放置三个可以打开的门
doormodel = ExampleHelperGazeboModel('hinged_door','gazeboDB');
door1 = spawnModel(gazebo,doormodel,[-1.5 2.0 0]);
door2 = spawnModel(gazebo,doormodel,[-1.5 0.5 0],[0 0 pi]);
door3 = spawnModel(gazebo,doormodel,[-1.5 -2.5 0]);
获取第一个门的运动副
[links, joints] = getComponents(door1);
在第一个门的运动副上施加作用效果
stopTime = 5; % Seconds
effort = 3.0; % Newton-meters
jointTorque(door1, joints{2}, stopTime, effort);
在第二个门的运动副上施加力矩
forceVector = [0 0 0]; % Newtons
torqueVector = [0 0 3]; % Newton-meters
applyForce(door2, links{2}, stopTime, forceVector, torqueVector);
在第二个门的运动副上施加力
forceVector = [0 -2 0]; % Newtons
applyForce(door2, links{2}, stopTime, forceVector);
直接设置第三个门的运动副状态
angdelta = 0.1; % Radians
dt = 0; % Seconds
angle = 0; % Radians
tic
while (toc < stopTime)
if angle > 1.5 || angle < 0 % In radians
angdelta = -angdelta;
end
angle = angle+angdelta;
setConfig(door3,joints{2},angle);
pause(dt);
end
新建并放置一个新的移动robot
botmodel = ExampleHelperGazeboModel('turtlebot','gazeboDB');
bot = spawnModel(gazebo,botmodel,[1,0,0]);
设置robot的姿态
setState(bot,'orientation',[0 0 pi/2]);
获取robot的运动副
[botlinks, botjoints] = getComponents(bot);
在robot的运动副上施加作用效果
turnStopTime = 1; % Seconds
turnEffort = 0.2; % Newton-meters
jointTorque(bot, botjoints{2}, turnStopTime, turnEffort)
新建并放置一个新的移动robot2
bot2 = spawnModel(gazebo,botmodel,[2,0,0]);
[botlinks2, botjoints2] = getComponents(bot2);
在robot2的运动副上施加作用力
applyForce(bot2,botlinks2{1},2,[0 1 0]);
在robot2的运动副上施加作用力
applyForce(bot2,botlinks2{1},2,[1 0 0]);
在robot2的运动副上施加作用力矩
applyForce(bot2,botlinks2{1},2,[0 0 0],[0 0 1]);
新建具有弹性的小球
bounce = 1; % Unitless coefficient
maxCorrectionVelocity = 10; % Meters per second
ballmodel = ExampleHelperGazeboModel('ball');
addLink(ballmodel,'sphere',0.2,'color',[0.3 0.7 0.7 0.5],'bounce',[bounce maxCorrectionVelocity]);
放置具有弹性的一高一低小球两个
spawnModel(gazebo,ballmodel,[0 1 2]);
spawnModel(gazebo,ballmodel,[0 1 3]);
pause(5);
清除gazebo中的物体
exampleHelperGazeboCleanupApplyForces;
情况变量
clear
关闭连接
rosshutdown
关于怎么在gazebo中施加作用力就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。