当前位置: 首页 > news >正文

2.7 获取激光雷达数据与避障

1.获取激光雷达数据

首先介绍介绍一下激光雷达的角度,方向“前”是机器人正方向

进入wpr_simulation进行更新

cd ~/catkin_ws/src/wpr_simulation/

进行更新

git pull

然后回退到catkin_ws

cd ~/catkin_ws/

进行编译

catkin_make

终端执行以下命令

roslaunch wpr_simulation wpb_simple.launch

分屏执行以下程序

rosrun wpr_simulation demo_lidar_data

获得机器人前方障碍物距离

接下来我们来实现该功能 ,先进入~/catkin/src/

创建雷达包

catkin_create_pkg lidar_pkg roscpp rospy sensor_msgs

在节点文件键入以下代码

#include<ros/ros.h>
#include<sensor_msgs/LaserScan.h>void LidarCallback(const sensor_msgs::LaserScan msg)
{float fMidDist = msg.ranges[180];ROS_INFO("前方测距ranges[180]=%f米",fMidDist);
}int main(int argc, char *argv[])
{//设置中文编码setlocale(LC_ALL,"");//初始化节点ros::init(argc,argv,"lidar_node");ros::NodeHandle n;ros::Subscriber lidar_sub = n.subscribe("/scan",10,&LidarCallback);ros::spin();return 0;
}

在仿真环境运行的基础上执行以下命令

 rosrun lidar_pkg lidar_node

运行结果为:

2.实现避障功能

 由于发布的速度在回调函数中使用,所以发布的变量是全局变量

ros::Publisher vel_pub;

所有代码如下:

#include<ros/ros.h>
#include<sensor_msgs/LaserScan.h>
#include<geometry_msgs/Twist.h>ros::Publisher vel_pub;void LidarCallback(const sensor_msgs::LaserScan msg)
{float fMidDist = msg.ranges[180];ROS_INFO("前方测距ranges[180]=%f米",fMidDist);geometry_msgs::Twist vel_cmd;if (fMidDist<1.5){vel_cmd.angular.z=0.3;}else{vel_cmd.linear.x=0.05;}vel_pub.publish(vel_cmd);
}int main(int argc, char *argv[])
{//设置中文编码setlocale(LC_ALL,"");//初始化节点ros::init(argc,argv,"lidar_node");ros::NodeHandle n;ros::Subscriber lidar_sub = n.subscribe("/scan",10,&LidarCallback);vel_pub=n.advertise<geometry_msgs::Twist>("/cmd_vel",10);ros::spin();return 0;
}

避障成功

http://www.xdnf.cn/news/1056097.html

相关文章:

  • 重复文件检测提取(C#编写的winform项目源码)
  • 柬埔寨 - 高棉语 点阵方式详解
  • 华晨宇火星演唱会郑州开唱 中西乐交融编曲再升级
  • linux 下 Doris 单点部署
  • 2.4.2 ASPICE的集成与系统测试
  • 1688 API 接口接入说明与文档
  • 键盘效率提升实战,快速训练指法与速度
  • PLC基础知识整理(三菱) - 扩展
  • Pico rp2040开发之Vscode插件+ c/c++独立环境搭建
  • 端侧大模型:边缘智能的破局之战——资源约束下的技术突围
  • cocos2 使用 Layout 组件后,子节点 Label 高度变化后,抖动问题
  • 第一章 绪论
  • Java事务隔离问题详解:脏读、不可重复读与幻读(含解决方案)
  • SpringCloud框架全面学习指南
  • strcpy 和 memcpy
  • Java的抽象类
  • Database Client:一款流行的VS Code数据库客户端插件
  • 修改Rocky Linux文件夹颜色
  • LangGraph-example 学习
  • Flask蓝图
  • 统信UOS 操作系统源码制作openssh 10.0p2 rpm包——筑梦之路
  • 去噪扩散概率模型(DDPM)全解:从数学基础到实现细节
  • 基于机器学习的逐巷充填开采岩层运动地表沉降预测
  • 将扩展的DuckDB自定义函数整合到一个程序
  • 三极管综述
  • Thinkless:基于RL让LLM自适应选择长/短推理模式,显著提升推理效率和准确性!!
  • 爆肝整理,python接口自动化测试整理,基础进阶一套打通...
  • 数据治理域——数据应用设计
  • Unity中的transform.Translate
  • centos7 安装 docker