怎么在gazebo中施加作用力

这篇文章给大家介绍怎么在gazebo中施加作用力,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联公司服务项目包括太白网站建设、太白网站制作、太白网页制作以及太白网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,太白网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到太白省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

怎么在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中施加作用力就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

本文名称:怎么在gazebo中施加作用力
标题网址:https://www.cdcxhl.com/article38/igshsp.html

成都网站建设公司_创新互联,为您提供做网站网页设计公司网站排名企业建站网站内链响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名