SLAM基础工具及算法
文章平均质量分 56
讲解SLAM工程实践中需要用到的常用工具及相关算法
火星机器人life
热爱多传感器融合slam、机器人、人工智能相关技术。立志于让机器人更智能,为人类移民火星做铺垫。让科技使生活更幸福,让科技改变世界。
展开
-
深入理解非线性二乘法求解图优化
1.求解图优化问题总体流程实际情况下求解图优化的流程如下:(1)选择你想要的图里的节点与边的类型,确定它们的参数化形式;(2)往图里加入实际的节点和边;(3)选择初值,开始迭代;(4)每一步迭代中,计算对应于当前估计值的雅可比矩阵和海塞矩阵;(5)求解稀疏线性方程????????Δ????=−????????,得到梯度方向;(6)继续用GN或LM进行迭代。如果迭代结束,返回优化值。2.图优化的目标函数2.1图优化求解slam思路SLAM的核心是根据已有的观测数据,计算机器人的运动轨迹和地原创 2022-01-11 18:36:17 · 572 阅读 · 0 评论 -
刚体运动位姿变换推导
下面公式中上标表示为基于某系,下标表示当前系。设k为第k时刻,R为旋转3*3,P为平移3*1,T表示旋转和平移。设k时刻刚体在世界坐标系下的位姿(包括旋转和平移)表示为TkwT^w_{k}Tkw,刚体运动后k+1时刻位姿态表示为$T^w_{k+1} $如图位姿变换推导Tk+1w=Tkw∗Tk+1kT^w_{k+1} = T^w_{k}*T^{k}_{k+1} \\Tk+1w=Tkw...原创 2020-04-26 16:42:21 · 1465 阅读 · 0 评论 -
(一)turtlebot3学习,运行的开源代码解析
1.文件解析和系统运行思路turtlebot3要动起来,需要运行一些程序.下面对运行的程序进行解析 (1)启动激光和控制命令发送程序及传感器接收程序roslaunch turtlebot3_bringup turtlebot3_robot.launch这个文件包括下面两个程序roslaunch turtlebot3_bringup turtlebot3_lidar.launch...原创 2018-06-05 07:58:16 · 4919 阅读 · 1 评论 -
(二)turtlebot3仿真并控制机器人在仿真环境下建图
使用Gazebo仿真1启动gazebo(1)设置模型参数,指定使用那种机器人型号:burger 或者waffleexport TURTLEBOT3_MODEL=burger(2)启动世界地图,默认的空白地图环境中加载Turtlebot3机器人roslaunch turtlebot3_gazebo turtlebot3_world.launch2通过远程操作创建地图...原创 2018-06-09 09:53:50 · 4647 阅读 · 3 评论 -
(三)turtlebot3实现仿真环境下的导航
本文实现turtlebot3在仿真环境下的的导航功能. 由于官方教程中要点击2D Pose Estimate按钮给出初始数据,但是我根据教程通过单击并拖动地图上的方向来设置地图上的大致位置总是不能成功,因此,只能自己想别的办法.我实现在仿真环境下的导航的步骤如下. (1)首先在仿真环境下建造一个地图,并保存 (2)加载这个地图并启动导航包 (3)启动slam包,加载保存地图的仿真环境 (...原创 2018-06-18 08:49:42 · 6543 阅读 · 8 评论 -
(四)turtlebot3控制机器人在实际环境下建图
本文实现两个功能,实际控制机器人及在实际环境下建图原创 2018-06-18 09:20:48 · 4197 阅读 · 1 评论 -
(五)turtlebot3用代码控制机器人直线及圆弧运动(/cmd_vel geometry_msgs/Twist的使用)
本文实现通过代码发送控制命令给机器人,让机器人安装特定的轨迹行走.希望实现的功能为直走和走一个圆形.原创 2018-06-20 07:22:15 · 15663 阅读 · 4 评论 -
(六)turtlebot3中slam代码位置和理论参考书籍论文
1.建图1.1代码建图启动按照如下命令 roslaunch turtlebot3_slam turtlebot3_slam.launch1.2参考书籍2.导航2.1代码2.2参考书籍3.控制3.1代码3.2参考书籍...原创 2018-07-16 14:38:23 · 1483 阅读 · 0 评论 -
(七)turtlebot3导航包解析
首先加载地图导航需要启动amcl节点和move_base节点,rviz节点。 (1)move_base节点从map_server节点接收并加载地图。 (2)move_base节点从amcl接收机器在地图中初始化的位置,而amcl接收从rviz中传送过来的初始化位置。 (3)move_base节点从gazebo中接收里程计信息/odom和激光信息/scan (4)move_base节点根据接...原创 2018-08-09 10:36:45 · 4030 阅读 · 3 评论 -
(一)ROS中新建机器人模型(urdf格式)并用rviz显示
在机器人操作系统(ROS)中,经常需要模拟机器人运动,那么首先需要新建一个机器人。 创建简单的机器人模型的步骤如下: (1)创建硬件描述包 (2)建立urdf文件 (3)建立launch命令文件 (4)效果演示详细步骤如下: (1)在工作区创建硬件描述包,使用如下命令roscreate-pkg smartcar_description urdf (2)新建模型的描述文件smartc原创 2017-03-22 10:25:59 · 29787 阅读 · 16 评论 -
(二)ROS中控制机器人运动(示例运行)
ROS中让机器人运动的步骤如下: (1)新建机器人模型 (2)运行.launch文件加载模型 (3)加载rviz的配置文件 (4)发布消息使用机器人运动 首先使用《ROS_by_example》书籍中的代码来看下效果 示例代码运行步骤: 1)linux中下载和示例代码 命令如下(我的ROS版本为hydro):$mkdir ~/catkin_ws/src$cd ~/catkin_ws原创 2017-03-22 11:55:34 · 15516 阅读 · 7 评论 -
(三)ROS中控制机器人运动的实现(在gazebo中显示)
ROS中控制机器人运动主要流程如下 新建模型—>加载驱动插件—>启动模型和节点->显示 有了机器人模型还不行,在Gazebo中仿真需要控制模型。模型中有轮子,需要控制轮子转动,控制轮子转动就需要加载驱动。步骤: (1)编辑机器人模型 (2)编辑gazebo属性,加载连接器控制驱动插件 (3)编辑gazebo属性,加载ros控制插件 (4)编辑.launch文件 (5)安装键盘控制器包原创 2017-03-23 16:44:33 · 25620 阅读 · 4 评论 -
(四)ROS坐标变换可视化(示例运行)
ROS中如何查看机器人的坐标变换呢?使用《Learning ROS for robotic Programming second edition》中的示例 注意使用的是hydro版本的ros。1.示例运行1启动turtle_tf包下的启动文件。roslaunch turtle_tf turtle_tf_demo.launch可以发现,启动文件turtle_tf_demo.launch如下<laun原创 2017-03-25 14:42:59 · 3609 阅读 · 0 评论 -
(五)ROS 发布tf消息并在rviz中显示
1.总体步骤介绍及实验结果本文通过实现ROS中的示例来理解ROS中的坐标变换tf 参考的英文教程如下 http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf 以上的ROS教程有两只乌龟,比较麻烦。 本文将修改教程的程序,将两只乌龟变为一只乌龟,使理解TF的使用更加容易。 本程序实现的功能是使用键盘控制乌龟在TurtleSim中移动,然原创 2017-03-29 10:37:56 · 13019 阅读 · 3 评论 -
(六)ROS发布里程计(Odometry)消息并在rviz中显示
由于tf只能表示机器人相对与全局地图 world的位置关系,而里程计消息不但能表示位置还能够表示向量信息。里程计消息nav_msgs/Odometry 结构如下 Header header string child_frame_id geometry_msgs/PoseWithCovariance pose geometry_msgs/TwistWithCovariance twistRO原创 2017-03-30 18:05:06 · 24623 阅读 · 1 评论 -
(七)ROS使用OpenCV读取图像并发布图像消息在rviz中显示
思路: (1)使用opencv读取本地图像 (2)调用cv_bridge::CvImage().toImageMsg()将本地图像发送给rviz显示原创 2017-04-13 14:11:30 · 15285 阅读 · 4 评论 -
(八)ROS创建点云数据并在rviz中显示
ROS创建点云数据并在rviz中显示sensor_msgs::PointCloud2原创 2017-04-15 17:19:42 · 20031 阅读 · 5 评论 -
(九)ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)
如何在rviz中如何实时显示轨迹呢?本文分析nav_msgs/Path结构,实现在rviz中画出圆形轨迹。原创 2017-04-20 11:21:14 · 41937 阅读 · 23 评论 -
(十)ROS在rviz中显示空间中的直线(visualization_msgs/Marker 消息)
ROS在rviz中显示空间中的直线使用visualization_msgs/Marker 消息原创 2017-04-21 17:07:29 · 9433 阅读 · 1 评论 -
(十一)在ROS上发布点云 PointClouds
在ros中,对于3D点,可以直接给sensor_msgs/PointCloud 赋值并发布消息,比较方便。1.创建工程mkdir -p pointcloud/srccd srccatkin_create_pkg pointcloud roscpp rospy sensor_msgs std_msgs cd ..catkin_make2.编辑主函数pointcloud.cpp#include原创 2017-10-01 09:45:06 · 10258 阅读 · 4 评论