Matlab与ROS----导航

本文介绍了如何使用Matlab与ROS进行机器人导航,重点讲解了向量场直方图(VFH)算法的工作原理,该算法通过计算不同方向的行进代价来避开障碍物。同时,还提到了在turtlebot_gazebo环境中的仿真应用。
摘要由CSDN通过智能技术生成

一、VFH
向量场直方图算法,是一种由人工势场法改进而来的机器人导航算法。
算法会计算各个方向的行进代价,该方向的障碍越多,代价越高,并且会累加该方向不同距离的障碍物。
二、仿真
turtlebot_gazebo

clear all;close all;clear;
laserSub = rossubscriber('/scan');
[velPub, velMsg] = rospublisher('/mobile_base/commands/velocity');
vfh = controllerVFH;
vfh.UseLidarScan = true;
vfh.DistanceLimits = [0.05 1];
vfh.RobotRadius = 0.1;
vfh.MinTurningRadius = 0.2;
vfh.SafetyDistance = 0.1;

targetDir = 0;
rate = rateControl(10);
while rate.TotalElapsedTime < 30

	% 雷达数据
	laserScan = receive(laserSub);
	ranges = double(laserScan.Ranges);
	angles = double(laserScan.readScanAngles);
 
	% 视野内物体
        scan = lidarScan(ranges,angles);
        
	%VFH计算物体角度
	steerDir = vfh(scan, targetDir);  
    
	% 速度
	if ~isnan(steerDir) % If steering direction is valid
		desiredV = 0.2;
		w = exampleHelperComputeAngularVelocity(steerDir, 1);
	else % 机器人思考
		desiredV = 0.0;
		w = 0.5;
	end

	% 速度
	velMsg.Linear.X = desiredV;
	velMsg.Angular.Z = w;
	velPub.send(velMsg);
end

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值