首页 > 其他分享 >如何利用ros搭建虚拟场景通过仿真机器人完成一次简单的SLAM建图、导航规划(超简单)?——学习来源:机器人工匠阿杰

如何利用ros搭建虚拟场景通过仿真机器人完成一次简单的SLAM建图、导航规划(超简单)?——学习来源:机器人工匠阿杰

时间:2024-11-24 18:30:56浏览次数:5  
标签:git launch 机器人 wpr 阿杰 建图 SLAM simulation wpb

一:什么是SLAM,SLAM和导航规划又有什么关系?

SLAM(Simultaneous Localization and Mapping,即同时定位与建图)是一种在未知或动态环境中自行驶的重要技术。主要通过设备上的传感器(如激光雷达、深度摄像头、惯性测量单元 IMU 等)实时感知周围环境,同时估计自身的位姿(位置和朝向)以及构建周围环境的地图。SLAM的关键在于解决定位与建图的“鸡与蛋”问题:定位需要依赖已有的地图,而地图的生成又需要准确的位置信息。为此,SLAM通常结合概率理论、优化算法和数据融合技术,如扩展卡尔曼滤波(EKF)、粒子滤波、图优化等方法,来同时解决这两个互相依赖的问题。SLAM技术与导航规划之间存在紧密的联系,SLAM为导航规划提供了两项基础能力:环境认知自身定位。在导航过程中,设备需要明确知道自己在环境中的当前位置和姿态(由SLAM的定位模块提供),同时需要了解周围环境的地图信息,包括障碍物位置和自由空间分布(由SLAM的建图模块提供)。有了这些信息,导航系统中的路径规划模块才能基于目标位置,计算出从当前位置到目标点的最优路径。例如,A*算法或Dijkstra算法可以基于SLAM生成的地图规划路径,而动态窗口法(DWA)等局部规划方法则可根据SLAM定位结果动态调整路径以避开实时感知到的障碍。

       此外,SLAM不仅为静态环境下的路径规划提供支持,也为动态环境中的实时调整提供保障。在复杂环境中,SLAM的高效性和鲁棒性直接影响导航的性能,尤其是当设备面临感知误差、环境变化(如移动障碍物)或传感器故障时,SLAM的准确性和更新速度将决定导航系统的成功与否。因此,SLAM是导航规划的“感知基础”,而导航规划则是SLAM在行动层面上的应用。两者相辅相成,共同构成智能移动设备自主运行的核心能力。

二:首先完成地图的创建,有图有规划,我们先下载一个机器人:GitHub - 6-robot/wpr_simulation

git clone  https://github.com/6-robot/wpr_simulation.git

 三:查看gitup网址里面的readme.md有详细的安装方式,以及简单的使用说明:GitHub - 6-robot/wpr_simulation

四: Ros应该都已经具备了,机器人也有了,我们先通过SLAM建图,接下来编写gmapping的launch启动文件

catkin_create_pkg  slam_pkg rospy  roscpp std_msgs

cd  slam_pkg

mkdir launch

touch  gmapping,launch

文件内容为:

<launch>
<include file="$(find wpr_simulation)/launch/wpb_stage_robocup.launch"/>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping"/>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find slam_pkg)/rviz/gmapping.rviz"/>
<node pkg="wpr_simulation" type="keyboard_vel_ctrl" name="keyboard_vel_ctrl"/>
</launch>

之后运行以下命令: 

source devel/setup.bash

roslaunch  slam_pkg   gmapping.launch

就会出现相应的仿真场景、之后鼠标在这个端口,运行键盘WASDQE分别是前进、左走、后退、右走、左转、右转、控制机器人走动实现地图的构建,以及rviz画面:

五:如果不需要launch文件,也可以运行以下命令手动建图:

roslaunch wpr_simulation  wpb_gmapping.launch

rosrun wpr_simulation  keyboard_vel_ctrl

rosrun map_server map_saver -f map

之后点击file --save config as 保存为新文件,方便下次直接调用:

六: 呢么如何加载地图呢,打开我们保存地图的文件夹,如下所示:直接运行以下命令,:

rosrun map_server  map_server  map.yaml

七:之后打开rviz,添加地图话题如下所示:

八、地图有了该怎么导航规划呢,还是借助之前的仿真机器人进行操作,详细的命令如下:

【1】下载源代码
cd ~/catkin_ws/src
git clone https://github.com/6-robot/wpr_simulation.git
若github超时,试试从gitee下载:
git clone https://gitee.com/s-robot/wpr_simulation.git
cd wpr_simulation/scripts/
./install_for_noetic.sh
cd ~/catkin_ws/
catkin_make

cd ~/catkin_ws/src
git clone https://github.com/6-robot/wpb_home.git
若github超时,试试从gitee下载:
git clone https://gitee.com/s-robot/wpb_home.git
cd wpb_home/wpb_home_bringup/scripts/
./install_for_noetic.sh
cd ~/catkin_ws/
catkin_make

【2】建图指令
roslaunch wpr_simulation wpb_gmapping.launch
rosrun wpr_simulation keyboard_vel_ctrl
rosrun map_server map_saver -f map

【3】创建软件包
catkin_create_pkg nav_pkg roscpp rospy move_base_msgs actionlib

【4】参考代码
wpr_simulation/launch/wpb_demo_nav.launch

【5】导航运行
roslaunch wpr_simulation wpb_stage_robocup.launch
roslaunch wpr_simulation wpb_demo_nav.launch

九:运行以下命令之前,我们先编写相应的导航launch文件,仿照gmapping的launch启动文件的编写步骤,其launch文件内容如下:

<launch>
    <!-- Launch move_base node with parameters -->
    <node pkg="move_base" type="move_base" name="move_base">
        <rosparam file="$(find wpb_home_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find wpb_home_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find wpb_home_tutorials)/nav_lidar/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find wpb_home_tutorials)/nav_lidar/local_costmap_params.yaml" command="load" />
        <param name="base_global_planner" value="global_planner/GlobalPlanner" /> 
        <param name="base_local_planner" value="wpbh_local_planner/WpbhLocalPlanner" />
        <param name="controller_frequency" value="10" typr="double"/>
    </node>

    <!-- Run map server with specified map -->
    <node pkg="map_server" type="map_server" name="map_server" args="$(find wpr_simulation)/maps/map.yaml" />
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find nav_pkg)/rviz/map_tool.rviz" /> 
    <node pkg="amcl" type="amcl" name="amcl"  />       
    <!-- Run AMCL -->
    <node pkg="waterplus_map_tools" type="wp_navi_server" name="wp_navi_server" output="screen"/>
    <node pkg="waterplus_map_tools" type="wp_manager" name="wp_manager" output="screen"/>

</launch>

 十:之后运行以下命令进行导航规划

roslaunch wpr_simulation wpb_stage_robocup.launch

roslaunch  nav_pkg nav.launch 

 

 十一:之后我们利用rviz当中的2d Nav Goal 指定目标点和朝向,之后会利用ros当中的相应规划器进行路径规划

 十二:后续进行相应规划的详细讲解,强烈建议大家去听一下机器人工匠阿杰的bilibili,讲的超好。

标签:git,launch,机器人,wpr,阿杰,建图,SLAM,simulation,wpb
From: https://blog.csdn.net/A1828776499/article/details/143952358

相关文章

  • 人形机器人-强化学习算法-PPO算法的实现细节是否会对算法性能有大的影响.
    PPO算法是强化学习算法中目前应用最广的算法,虽然这个算法是2017年发表的,但是至今在整个AI领域下的agent子领域中这个算法都是最主要的强化学习算法(至少目前还没有之一),这个算法尤其在ChatGPT和人形机器人中起到了关键性的作用,可以说PPO算法是当前AI领域最为重要的算法之一(这个可以......
  • 安川Yaskawa机器人DX100示教器维修的优劣势分析
       安川Yaskawa机器人DX100示教器维修的优劣势分析安川Yaskawa机器人示教编程,即操作人员经过安川机器人示教器,手动操控机器人的关节运动,以使机器人运动到预订的方位,一起将该方位进行记载,并传递到机器人操控器中,今后的机器人可根据指令自动重复该使命,操作人员也能够挑选......
  • ABB机器人DSQC639主板维修
    ABB机器人主板DSQC639维修时如何判断哪些因素导致了元气器虚焊?1.元件热稳定性检查:从大量的维修实践来看,电解电容的热稳定性不好是常见的原因之一,其次是其它电容、三极管、二极管、IC、电阻等。 2.焊点外观检查:虚焊的焊点表面可能出现锥形空洞,焊点周围呈圆形凸起,或者焊点周围出......
  • ROS个人学习记录(跟随教程【Autolabor初级教程】ROS机器人入门:https://www.bilibili.co
    参考文档:http://www.autolabor.com.cn/book/ROSTutorials/index.html1.5ROS架构1.5.1ROS文件系统ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构大致可以如下图所示:WorkSpace---自定义的工作空间|---build:编译空间,用于存放CMake和catkin的缓存信息、配置......
  • 【Matlab 六自由度机器人】笛卡尔空间规划和关节空间规划(附MATLAB建模代码)
    笛卡尔空间规划和关节空间规划近期更新前言正文1.笛卡尔空间规划特点:步骤:2.关节空间规划特点:步骤:3.两种方法的区别4.MATLAB代码:机械臂避障路径规划问题和解答4.1关节空间规划方法4.2笛卡尔空间规划方法4.3规划方法的比较5.路径规划优化5.1平滑性优化5.2速度......
  • Aubo Robotics 工业机器人系列编程:i10a_Aubo-i10a故障诊断与维护
    故障诊断与维护故障诊断与维护是确保工业机器人高效、稳定运行的重要环节。本模块将详细介绍Aubo-i10a工业机器人的故障诊断方法和维护流程,帮助用户快速定位问题并采取有效的解决措施。我们将涵盖以下几个方面:故障分类与识别诊断工具的使用常见故障及解决方法维护计......
  • Issac_GYM对Go2机器人的仿真心得
    override覆盖torques扭矩1args()参数信息等cd/home/yyds/桌面/Gym2/legged_robot_competition-master/legged_gym/legged_gym/utils/helpers.py这里对train等参数的调用情况进行了说明比如:pythonplay.py--task=go2--num_envs=64--checkpoint=50--load_run=/ho......
  • ABB机器人备件种类
    ABB机器人备件是确保ABB机器人长期稳定运行的关键元素。以下是对ABB机器人备件的详细介绍:一、备件种类ABB机器人备件种类繁多,涵盖了从机械部件到电气元件的各个方面,主要包括以下几大类:机械部件:关节模块(包括电机、减速机、编码器等)轴承、联轴器、丝杠、同步带等传动部件机......
  • 如何选择合适的ABB机器人备件
    选择合适的ABB机器人备件是确保机器人稳定运行和延长使用寿命的关键。以下是一些建议,帮助您在选择备件时做出明智的决策:一、了解机器人型号与需求确认机器人型号:首先,需要明确您的ABB机器人型号,因为不同型号的机器人所需的备件可能有所不同。分析使用需求:根据机器人的实际工作......
  • ABB机器人备件3HAC035065-003
    ABB机器人备件3HAC035065-003是一款重要的伺服电机备件,对于确保ABB机器人的正常运行至关重要。以下是对该备件的详细解析:一、备件信息型号:3HAC035065-003类型:伺服电机备件适用品牌:ABB应用:主要用于ABB机器人的关节驱动,是机器人运动控制的关键部件。二、备件特点与优势高性能......