ROS入门--基于激光的避障

Task

本次任务的人物是编写一个简单的ROS应用,基于Braitenberg 小车,我们只做stage仿真,如果你有ros的移动机器人,可以在通过修改代码在自己的机器上运行。

Algorithm

我们用的机器人上面有一个激光雷达,激光雷达可以测量障碍物到机器人的距离,根据这些测距信息来设置机器人的左右轮子的旋转速度。通过ROS发送线速度和角速度。

Processing inputs and outputs

类NodeBraitenberg2里面除去构造、析构函数、还有两个方法:一个是laser数据处理函数 一个是机器人控制程序。
激光雷达发布的消息格式为:LaserScan,包含有数据:

std_msgs/Header header
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities 

float32[] ranges 里面存放的是激光的原始数据。激光雷安装在小车的中轴线上,ranges的前半部分和后半部分分别对应着机器人的左侧和右侧,通过下面公式可以计算出对ranges里面索引对应的实际角度:

φ=(il2)θ(angle-ranges)

phai对应的是i个索引对应的角度,l是ranges的长度,theta是角度增量(angle_increment)
发送给机器人的Twist消息:

geometry_msgs/Vector3 linear
geometry_msgs/Vector3 angular
Conversion

将机器人设定为恒定速度运动,角速度计算:

  • 16
    点赞
  • 205
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值