• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

MATLAB+ROS Robot仿真(ExampleHelperRobotSimulator)类

人工智能 懒小象 1823次浏览 0个评论

 

ExampleHelperRobotSimulator类

文章目录

  • ExampleHelperRobotSimulator类
    • 1. 介绍
    • 2. 使用方法
    • 连接ROS
    • 模拟器属性
    • robot class

1. 介绍

ExampleHelperRobotSimulator是MATLAB机器人仿真中常用的一个类,此类旨在作为Gazebo(R)中TurtleBot(R)模拟的轻量级替代品。该类可以实现简单的机器人仿真及控制,具体用法将在下面的章节中介绍。

2. 使用方法

<code class="prism language-c has-numbering">OBJ <span class="token operator">=</span> ExampleHelperRobotSimulator 
</code>

  为差分驱动机器人创建一个简单的模拟器。 如果启用了ROS接口,则机器人会在’/ mobile_base / commands / velocity’主题上接收速度命令(类型为’geometry_msgs / Twist’的消息),并将odometry信息(类型为’nav_msgs / Odometry’的消息)发送给’ / odom’主题。 此外,它还会更新一个显示机器人当前位置的图形窗口。  

OBJ = ExampleHelperRobotSimulator(MAPNAME)

  在模拟器中加载预定义的地图(MAP)。 MAPNAME是一个字符串,可以是以下之一:‘simpleMap’(默认),‘emptyMap’,‘borderMap’或’complexMap’。 默认地图的分辨率为2 cells/m。  

OBJ = ExampleHelperRobotSimulator(MAPNAME,MAPRESOLUTION)

  使用MAPNAME加载预定义的映射,并将分辨率设置为MAPRESOLUTION(以cells / m为单位)。 默认情况下,分辨率为2cells/m。  

%OBJ = ExampleHelperRobotSimulator(BOG)

  导入自己定义的MAP,即将robotics.BinaryOccupancyGrid对象BOG定义的地图加载到模拟器中。

连接ROS

1)ExampleHelperRobotSimulator的ROS接口需要初始化MATLAB ROS功能后才可以使用。 通过调用输入命令ROSINIT % 用于本地ROS主服务器或调用ROSINIT(MASTER_IP) % 来连接外部主服务器来完成此操作。   2)停止模拟器时,可以关闭相关的图形窗口或删除对象。 启用ROS界面后,您可以通过ROS控制模拟机器人的运动。 模拟器处理发布/订阅消息的主题和服务如下: ExampleHelperRobotSimulator发布主题:

  • /odom – 当前机器人测距信息(位姿和速度)
  • /scan – 来自模拟激光扫描仪的数据
  • /mobile_base/sensors/bumper – 指示机器人是否遇到障碍物
  • /ground_truth_pose – 地面真相机器人位姿

ExampleHelperRobotSimulator已订阅的主题:

  • /mobile_base/commands/velocity – 机器人的速度命令

ExampleHelperRobotSimulator服务:

  • /sim/new_robot_pose – 将机器人移动到新的起始位姿
  • /sim/reset_poses – 将机器人的位姿重置为上一个已知的起始位姿
  • /gazebo/reset_world – 将机器人的位姿重置为上一个已知的起始位姿

 

模拟器属性

可以通过改变下述各种属性来更改模拟器的其他一些行为。 ExampleHelperRobotSimulator属性:

  • Map – 机器人使用的地图
  • Robot – 表示差动驱动机器人的对象。
  • LaserSensor – 表示模拟范围传感器的对象。
  • HasROSInterface – 指示对象是否具有ros接口。
  • HasFigureWindow – 指示对象是否具有GUI界面。
  • HasLaser – 指示模拟机器人是否具有激光传感器。
  • PlotTrajectory – 指示是否绘制机器人的轨迹。

  ExampleHelperRobotSimulator使用方法:

  • enableLaser – 设置激光传感器接口。
  • enableROSInterface – 设置ROS发布者,订阅者和服务服务器。
  • showTrajectory – 绘制机器人的轨迹。
  • setRobotSize – 设置机器人的边界半径等于大小。
  • getRobotPose – 返回世界框架中的地面真实机器人姿势。
  • getRobotOdom – 返回机器人的测距数据。
  • drive – 以线速度v和角速度omega驱动机器人。
  • getRangeData – 以范围和角度返回激光扫描数据。
  • delete – 关闭模拟器。
  • randomizeLocation – 将机器人位置设置为随机位置。
  • resetSimulation – 将机器人位置设置为初始条件。

例如:  

%启动ROS
rosinit   
%创建模拟器
%robotsim = ExampleHelperRobotSimulator;  
%启用ROS接口
%enableROSInterface(robotsim,true);  
%启用激光传感器
enableLaser(robotsim,true);  
%绘制机器人轨迹
showTrajectory(robotsim,true);   
%关闭模拟器
delete(robotsim)   
%关闭ROS
rosshutdown

另请参阅robotics.BinaryOccupancyGrid,ExampleHelperSimRangeSensor,ExampleHelperSimDifferentialDriveRobot。

robot class

 

classdef ExampleHelperRobotSimulator < handle
	properties(Constant, Access = protected)
		Step = 0.05
		PlotInterval = 0.1
		FigureName = 'Robot Simulator'
		FigureTag = 'ExampleHelperRobotSimulator'
	end	
 	properties (SetAccess = private)
	 	Robot
	 	LaserSensor
	 	HasROSInterface = false
	 	HasFigureWindow
	 	HasLaser
	 	PlotTrajectory = false
    end
	properties (Hidden)
        Axes
    end  
    properties (Dependent)
        Map
    end  
    properties (Access = {?ExampleHelperRobotSimulator, ?matlab.unittest.TestCase})
        InternalMap
        KinematicsTimer = timer.empty       
        PlotTimer = timer.empty
        InitialRobotState = [0 0 0]     
        RobotBodyFaceColor = [0.866 0.918 0.753]
        RobotBodyTriangleVertices = [[-0.3, -0.05,-0.3,0.8]; [-0.5,0,0.5,0]] * 0.5;
        RobotSize = 0.4;
        TrajectoryBufferCapacity = 5000;
        TrajectoryBuffer
        TrajectoryIndex = 0;
        TrajectoryUpdateTolerance = 0.01;
        ScanRanges
        ScanAngles
        ScanCollisionLoc
        GlobalNode
        LaserScanPublisher
        BumperStatePublisher
        VelCmdPublisher
        OdometryPublisher
		GroundTruthPosePublisher
        TransformTree
        LaserScanMessage
        BumperStateMessage
        LastVelocityCmd = rosmessage('geometry_msgs/Twist')
        PoseMessage
        TransformMessage
        VelCmdSubscriber
        ResetSimulationService
        RandomizeLocationService
        GazeboResetModelPosesService
        MyFigureTag
        Figure = []
        RobotBodyHandle = []
        ScanLineHandles = matlab.graphics.chart.primitive.Line.empty
        ScanPointHandles = matlab.graphics.chart.primitive.Line.empty
        TrajectoryHandle = [] 
        RandomLocationButton
        ResetSimulationButton
    end


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明MATLAB+ROS Robot仿真(ExampleHelperRobotSimulator)类
喜欢 (0)

您必须 登录 才能发表评论!

加载中……