
机器人算法
luoganttcc
微信:luogantt2
展开
-
基于运动合成分解的舵轮底盘运动模型(以正三角形三轮底盘为例)
此文档原本是对附录中代码的解释,也可单独作为舵轮底盘分析的参考,除第9节的弃用方案外都已经过实践验证,第9节内容及原代码虽最终未被采用但其思路方法或许仍有些许值得参考借鉴之处,故也保留未删,也欢迎批判指正。各小节排列顺序即程序中顺序,代码已有较详细的注释,不再逐一说明功能。以下所有出现的变量除有说明外,都是结构体Wheel3(三轮底盘)中的变量,所有角度变量若无说明都为弧度制。由于调试时有过多次修改,部分代码可能和说明不一致。程序代码可分为三部分,第一部分为世界坐标系转机器人坐标系,单独作为一个函数;原创 2024-10-10 09:25:12 · 309 阅读 · 0 评论 -
ROS的卸载与安装【血泪总结!亲测有效】
link原创 2023-11-05 17:49:34 · 386 阅读 · 0 评论 -
SC-LIO-SAM
https://github.com/gisbi-kim/SC-LIO-SAM原创 2023-11-02 11:10:14 · 446 阅读 · 0 评论 -
基于SC-LeGO-LOAM的建图和ndt_localizer的定位
再选择rviz里面的 2D Pose Estimate,选定车辆的初始姿态(一切使用预先构建的地图进行配准定位的方法都需要提供初始姿态,在工业界的实践中,这一初始姿态通常是通过 gnss 获得,本文中我们简化这一步,在 Rviz 中手动指定初始姿态, Rviz 中设定的初始姿态通常会被默认发送至 /initialpose topic 上)在SC-LeGO-LOAM中,imu起着去除运动畸变的作用,但在实际运行中发现,添加了imu话题之后,建图会产生漂移。然后另起终端,播放bag包,即可看到定位的实现过程。原创 2023-11-01 13:54:31 · 536 阅读 · 0 评论 -
镭神16线激光雷达跑SC-LeGo-LOAM算法
由于镭神C16的驱动中对点云强度的定义是uint8_t类型,LOAM能接收的是float32类型,并且LOAM在运行时是根据采集的点云不停的计算来估计自身位置的,所以如果点云强度不匹配,会出现坐标轴baselink漂移的现象。(注意:由于没有惯导,在LOAM运行时,如果雷达前方出现不规则快速运动的物体,比如拿书快速扫,雷达坐标系都会出现漂移现象,所以建议利用传感器来获取位置信息,这是最稳妥的方法)。首先,要注意的是SC-LeGo-LOAM和16线雷神激光雷达源码的版本不一样,源码也可能稍有区别。原创 2023-10-30 09:30:37 · 1913 阅读 · 0 评论 -
开源3D激光(视觉)SLAM算法汇总(持续更新)
Cartographer是由谷歌于2016年开源的一个支持ROS的室内SLAM库,并在截至目前为止,仍然处于不断的更新维护之中。1. 代码极为工程,多态、继承、层层封装的十分完善。提供了方便的接口,便于接入IMU、(单/多线)雷达、里程计、甚至为二维码辅助等视觉识别方式也预留了接口(Landmark)。根据其代码的结构设计来看,显然是由一个大型的研发团队集中研发,而非少数科研人员的demo型代码。2. Cartographer支持2D和3D激光雷达的输入,实现机器人定位,并构建栅格地图。原创 2023-10-28 18:34:16 · 2505 阅读 · 0 评论 -
图解kd树+Python实现
此时父节点(5,4)的另一子节点已经搜索完毕,继续向上回溯搜索那些没有被回溯过的节点,于是来到根节点(7,2),计算(7,2)与(2,4.5)的距离为5.5901,而5.5901>1.5,因此当前最近邻点不变,最近距离也不变。一般的,对于高维特征的情况,画出来的是一个超球面),真正的最近邻点一定包含在这个圆的内部。对左子树{(5,4),(2,3),(4,7)}按照特征的第一个维度从小到大排序:{(2,3),(5,4),(4,7)},确定中位数下标为3//2=1,所以数字4为中位数;这里仅实现最近邻搜索。原创 2023-10-28 09:53:22 · 819 阅读 · 0 评论 -
毫米波无人船 避障
https://gitee.com/Matreshka15/USV_obstacle_avoidance原创 2023-10-27 09:44:33 · 92 阅读 · 0 评论 -
树莓派 ROS 学习(二)小乌龟 turtlesim
添加链接描述目录创建catkin工作空间小乌龟turtlesim节点启动节点turtlesim节点turtlesim 话题与消息查看话题的消息类型查看消息类型的具体内容查看话题的值改变背景颜色获取参数列表 获取参数值修改颜色控制乌龟运动通过发布话题控制乌龟运动通过键盘控制乌龟运动通过服务控制乌龟的移动上次安装成功ROS之后,先确认一下ROS的安装环境正确: result:mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccatkin_init_workspace 注意这原创 2023-04-13 17:06:12 · 1749 阅读 · 0 评论 -
ROS机器人实践---小乌龟画圆
/vel_pub会在主题"/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据。1.打开Home目录,在空白处右击,点击新建文件夹(New Folder)建立一个文件夹,命名为catkin_ws。//声明一个geometry_msgs::Twist 类型的对象vel_cmd,并将速度的值赋值到这个对象里面。1.打开终端,在catkin_ws/src路径下新建my_turtle_package包。,使系统知道功能包放置在catkin_ws这个工作空间下。原创 2023-04-08 23:10:59 · 1231 阅读 · 0 评论 -
E: Unable to locate package ros-melodic-world-canvas-msgs
【代码】E: Unable to locate package ros-melodic-world-canvas-msgs。原创 2023-03-20 17:14:39 · 510 阅读 · 1 评论 -
编译A-LOAM,catkin_make后PCL报错
查了查百度没有好的解决方案(也有可能找的不全),最后在。另外一个错误也是如此.原创 2023-03-17 18:20:08 · 77 阅读 · 0 评论 -
路径规划算法 python 实现
https://github.com/zhm-real/PathPlanning原创 2023-03-15 18:37:04 · 110 阅读 · 0 评论 -
ROS学习笔记之——路径规划及avoid obstacles
这个package为导航提供了一种快速,内插值的全局规划器, 继承了nav_core包中nav_core::BaseGlobalPlanner接口,该实现相比navfn使用更加灵活。global_planner是一个路径规划器节点。这个包为导航实现了一种快速,内插值的全局路径规划器, 继承了nav_core包中nav_core::BaseGlobalPlanner接口,该实现相比navfn使用更加灵活。如果要用A*算法,需要设置。转载 2023-03-15 18:36:42 · 3374 阅读 · 1 评论 -
Dijkstra 最短路径算法 Python 实现
同理通过 2->4(G[2][4]),可以将 dis[4]的值从 ∞ 松弛为 4(dis[4] 初始为 ∞,dis[2] + G[2][4] = 1 + 3 = 4,dis[4] > dis[2] + G[2][4],所以 dis[4] 要更新为 4)。再看 parents[6] = 5,说明 6 号顶点的上一个顶点为 5,parents[5] = 3,说明 5 号顶点的上一个顶点为 3,以此类推,最终 1 号顶点到 6 号顶点的路径为 1->2->4->3->5->6。总结一下刚才的算法。转载 2023-03-14 15:46:40 · 2370 阅读 · 1 评论 -
路径规划算法介绍
室内路径规划指的是根据用户的起始位置、终点位置和室内地图为用户规划出一条行走距离最短的可通达路线。移动机器人路径规划的目标是通过环境感知与主动避障功能找到一条可行的最佳路径,此路径从起始点至终点在给定的工作空间中不与任何障碍物相交,同时要优化机器人运动路径,使其尽可能达到更短、更平滑的要求。路径规划(Path Planning):路径规划的目的是找到一条最优的路径,同时该路径满足在给定的环境中从起点到终点始终不与任何障碍物相交。转载 2023-03-14 12:36:56 · 5108 阅读 · 1 评论