【光电智造】机器人SLAM建图与自主导航:从基础到实践

今日光电 2024-12-18 18:00

 今日光电 

     有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。追光逐电,光赢未来...欢迎来到今日光电!




----追光逐电 光赢未来----

前言


这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。



教程


SLAM算法的引入


(1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。


(2)现在各种机器人研发和商用化非常火 ,所有的自主机器人都绕不开一个问题,即在陌生环境中,需要知道周边是啥样(建图),需要知道我在哪(定位),于是有了SLAM 课题的研究。SLAM在室内机器人,自动驾驶汽车建图,VR/AR穿戴等领域都有广泛的应用。



(3)SLAM算法根据依赖的传感器不同,可以分为激光SLAM和视觉SLAM,前者是激光雷达,后者是能提供深度信息的摄像头,如双目摄像头,红外摄像头等。除此之外,SLAM算法通常还依赖里程计提供距离信息,否则地图很难无缝的拼接起来,很容易跑飞。一个经典的SLAM 流程框架如下,其中回环检测时为了判断机器人有没有来过之前的位置。


整体视觉SLAM的流程图



gmapping算法的基本原理


(1)现在ROS里有一系列SLAM算法包,如:gmapping ,hector(不需要里程计,比较特别),谷歌开源的cartographer(效率高),rtabmap(前面是二维的,这是三维建图)等。


(2)gmapping是基于激光雷达的,需要里程计信息,创建二维格栅地图。其中IMU信息可以没有 。



(3)ros中激光雷达数据消息是 sensor_msgs/LaserScan ,内容如下:



(4)ros中里程计数据消息是 nav_msgs/Odometry 



(5)gmapping 发布的地图meta数据:



(6)gmapping 发布的地图栅格数据



mbot_navigation


(1)ubuntu20.04 + ros noetic下,安装gmapping和保存地图文件的map_server


sudo apt-get install ros-noetic-gmappingsudo apt-get install ros-noetic-map-server// 补充:这是安装hectorsudo apt-get install ros-noetic-hector-slam


(2)创建 mbot_navigation 和相关文件


cd ~/catkin_ws/srccatkin_create_pkg mbot_navigation geometry_msgs move_base_msgs actionlib roscpp rospy
cd mbot_navigation mkdir launch maps rviztouch launch/gmapping.launch


(3)调用gmapping算法,只需要写launch文件就行了,不用编码。


gmapping.launch


  // mbot_gazebo 会通过发/scan topic,传出lidar数据    "scan_topic" default="scan" />    // gammping一大堆参数,这里都是从他的demo里扣出来的,不用改。    // 如果想用的好,可以尝试修改,甚至改一些代码,这就是算法(调参)工程师!    "gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">      // mbot_gazebo 会通过发/odom topic,传出里程计数据        "odom_frame" value="odom"/>        "map_update_interval" value="5.0"/>                "maxRange" value="5.0"/>        "maxUrange" value="4.5"/>        "sigma" value="0.05"/>        "kernelSize" value="1"/>        "lstep" value="0.05"/>        "astep" value="0.05"/>        "iterations" value="5"/>        "lsigma" value="0.075"/>        "ogain" value="3.0"/>        "lskip" value="0"/>        "srr" value="0.01"/>        "srt" value="0.02"/>        "str" value="0.01"/>        "stt" value="0.02"/>        "linearUpdate" value="0.5"/>        "angularUpdate" value="0.436"/>        "temporalUpdate" value="-1.0"/>        "resampleThreshold" value="0.5"/>        "particles" value="80"/>        "xmin" value="-1.0"/>        "ymin" value="-1.0"/>        "xmax" value="1.0"/>        "ymax" value="1.0"/>        "delta" value="0.05"/>        "llsamplerange" value="0.01"/>        "llsamplestep" value="0.01"/>        "lasamplerange" value="0.005"/>        "lasamplestep" value="0.005"/>        "scan" to="$(arg scan_topic)"/>      // 保存的rviz配置文件    "rviz" type="rviz" name="rviz" args="-d $(find mbot_navigation)/rviz/map.rviz"/>


(4)连同mbot_gazebo,一起编译运行


cd ~/catkin_wscatkin_make -DCATKIN_WHITELIST_PACKAGES="mbot_navigation;mbot_gazebo"source devel/setup.bash// 打开仿真环境roslaunch mbot_gazebo mbot_gazebo.launch//再开一个窗口,打开gmappingroslaunch mbot_navigation gmapping.launch// 控制机器人行动,进行建图roslaunch mbot_gazebo mbot_teletop.launch// 建图完成后,新开窗口,执行map_server,保存生成的地图cd ~/catkin_ws/src/mbot_navigation/mapsrosrun map_server map_saver -f gmapping_save



最终保存下来的地图




总结


代码示例:


#include #include #include #include #include geometry_msgs::Pose createPose(double px, double py, double pz, double ox, double oy, double oz, double ow) {    geometry_msgs::Pose pose;    pose.position.x = px;    pose.position.y = py;    pose.position.z = pz;    pose.orientation.x = ox;    pose.orientation.y = oy;    pose.orientation.z = oz;    pose.orientation.w = ow;    return pose;  }int main(int argc, char** argv) {  ros::init(argc, argv, "move_test");  actionlib::SimpleActionClient move_base_client("move_base", true);  ROS_INFO("Waiting for move_base action server...");    move_base_client.waitForServer();  ROS_INFO("connected to move base server");  std::vector target_list;  target_list.push_back(createPose(6.543, 4.779, 0.000, 0.000, 0.000, 0.645, 0.764));  target_list.push_back(createPose(5.543, -4.779, 0.000, 0.000, 0.000, 0.645, 0.764));  target_list.push_back(createPose(-5.543, 4.779, 0.000, 0.000, 0.000, 0.645, 0.764));  target_list.push_back(createPose(-5.543, -4.779, 0.000, 0.000, 0.000, 0.645, 0.764));  for (uint8_t i = 0; i < target_list.size(); i ++) {    ros::Time start_time = ros::Time::now();    ROS_INFO("going to %u goal, position: (%f, %f)", i, target_list[i].position.x, target_list[i].position.y);    move_base_msgs::MoveBaseGoal goal;    goal.target_pose.header.frame_id = "map";    goal.target_pose.header.stamp = ros::Time::now();    goal.target_pose.pose = target_list[i];    move_base_client.sendGoal(goal);    move_base_client.waitForResult();    if (move_base_client.getState() == actionlib::SimpleClientGoalState::SUCCEEDED) {      ros::Duration running_time =  ros::Time::now() - start_time;      ROS_INFO("go to %u goal succeeded, running time %f sec", i, running_time.toSec());    } else {      ROS_INFO("goal failed");    }  }  return 0;}
来源:新机器视觉


申明:感谢原创作者的辛勤付出。本号转载的文章均会在文中注明,若遇到版权问题请联系我们处理。


 

----与智者为伍 为创新赋能----


【说明】欢迎企业和个人洽谈合作,投稿发文。欢迎联系我们
诚招运营合伙人 ,对新媒体感兴趣,对光电产业和行业感兴趣。非常有意者通过以下方式联我们!条件待遇面谈
投稿丨合作丨咨询

联系邮箱:uestcwxd@126.com

QQ:493826566



评论
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 54浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 72浏览
  • 百佳泰特为您整理2025年1月各大Logo的最新规格信息,本月有更新信息的logo有HDMI、Wi-Fi、Bluetooth、DisplayHDR、ClearMR、Intel EVO。HDMI®▶ 2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新规范将支持更高的分辨率和刷新率,并提供更多高质量选项。更快的96Gbps 带宽可满足数据密集型沉浸式和虚拟应用对传输的要求,如 AR/VR/MR、空间现实和光场显示,以及各种商业应用,如大型数字标牌、医疗成像和
    百佳泰测试实验室 2025-01-16 15:41 175浏览
  • 随着智慧科技的快速发展,智能显示器的生态圈应用变得越来越丰富多元,智能显示器不仅仅是传统的显示设备,透过结合人工智能(AI)和语音助理,它还可以成为家庭、办公室和商业环境中的核心互动接口。提供多元且个性化的服务,如智能家居控制、影音串流拨放、实时信息显示等,极大提升了使用体验。此外,智能家居系统的整合能力也不容小觑,透过智能装置之间的无缝连接,形成了强大的多元应用生态圈。企业也利用智能显示器进行会议展示和多方远程合作,大大提高效率和互动性。Smart Display Ecosystem示意图,作
    百佳泰测试实验室 2025-01-16 15:37 185浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 160浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 123浏览
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 261浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 127浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 50浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 159浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦