自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 AMR导航软件框架设计思维导图

作为移动机器人团队的技术负责人,需要思考AMR(自主移动机器人)导航软件框架概念,指导软件设计思路,为此做了一点思考。

2023-07-20 20:57:04 509

原创 slam_toolbox-ros-melodic部署测试记录

在同样未经调参优化的情况下,对比cartographer,slam_toolbox在细节方面更优(slam_toolbox在墙壁厚度方面显示更准确)

2023-07-20 20:37:39 1410 2

原创 【chatgpt代码系列】RANSAC拟合多段直线

这个示例程序将生成一些3D点云数据并使用RANSAC算法拟合多段直线,其中点云数据分成了三段直线。该程序使用了C++11的一些新特性,如。、lambda表达式和。

2023-05-25 19:55:38 747

原创 【chatgpt代码系列】激光+二维码融合定位AGV用的tf计算

其中,我们首先通过lookupTransform函数获取qr_code相对于qr_label和robot的变换,然后通过矩阵乘法计算出qr_code到robot的变换,最后再将map到qr_code的变换与qr_code到robot的变换进行矩阵乘法,就可以得到map到robot的变换了。接着,我们使用inverse函数求出qr_code到robot矩阵的逆变换,并使用乘法运算得到qr_code到map的变换,最后再次使用乘法运算计算出map到robot的变换。

2023-05-09 21:35:35 1148

原创 【chatgpt代码系列】bat脚本实现远程服务器运行环境配置

项目使用的远程服务器,买回来是已经装好系统、配置好账号密码的状态,但是我们项目的运行环境是不具备的;以往运行环境是靠ssh连接后,把运行环境部署的文件夹手动拷贝过去,再执行文件夹中的部署脚本完成的,实际操作还是慢了些,不能批量执行。这个工具的具体安装方法因环境而异,需要用户自行查阅资料进行设置。故需要整一个自动连接、转移文件、运行远程shell脚本的bat批处理脚本实现我的需求。是的,Windows 下也有内置的 SSH 客户端可以使用,就是。请注意,您需要提前安装并配置好。,否则以上脚本可能会执行失败。

2023-04-06 12:12:04 1818

原创 【chatgpt】点云转图片后圆特征检测

圆检测可用于反光柱特征检测,提高各方向反光柱识别定位精度。

2023-03-25 09:22:22 825

原创 【chatgpt代码系列】点云转图片后快速直线检测实现特征识别

具体来说,在代码中,我们将每个点的x坐标加上了图片宽度的一半,将每个点的y坐标加上了图片高度的一半,这样可以将点云坐标系的原点映射到图像的中心。这是因为在图像中心附近的像素点被经常用于图像处理算法中,这种映射方式也有助于进行更好的点云与图像之间的对应。在这个示例代码中,我们首先使用PCL库读取点云数据,然后将每一个点映射到图像上,形成灰度图像。然后,我们使用OpenCV的快速直线检测方法来检测图像中的直线,并在图像上绘制检测到的直线。在上述示例中,点云的坐标系原点被转换到了图像的中心位置。

2023-03-25 09:16:20 672

原创 【chatgpt代码系列】ros基础知识题库

在ROS中,发布者(publisher)和订阅者(subscriber)用来做什么?下面哪个命令可以查看ROS节点的详细信息(包括发布和订阅的话题、服务等)?好的,下面是ROS基础知识考核试题,共10道选择题。下面哪个命令可以查看当前ROS中所有可用的服务(service)?下面哪个命令可以查看当前ROS中所有可用的话题(topic)?下面哪个工具用于可视化ROS中的话题、服务和参数等信息?ROS中的“节点”(node)指的是什么?下面哪个工具用于记录、回放ROS消息?下面哪种消息格式用于传输图像数据?

2023-03-24 13:56:35 5035 1

原创 【chatgpt代码系列】roslaunch的python接口实现ros节点生命周期管理

如果节点处于运行状态,则将其从running_nodes列表中删除,并使用rospy.signal_shutdown方法停止节点。在主循环中,我们首先启动master节点并等待其状态变为运行,然后启动指定的节点。在start_node方法中,我们首先生成一个UUID,然后使用该UUID和指定的launch文件来创建一个ROSLaunchParent对象,并开始启动该对象。以上代码定义了一个名为MasterManager的类,其中包含了用于启动、停止和重启master节点以及检查master节点状态的方法。

2023-03-22 21:48:20 1076 3

原创 【chatgpt代码系列】解析和封包TCP自由协议

存储TCP自由协议数据包的各个字段,并实现了一个解析函数。,该函数可以将一个字节数组转换为一个数据包结构体。函数中,给出了一个测试用例,展示了如何使用。函数解析一个字节数组并打印出各个字段的值。

2023-03-22 18:02:33 705

原创 【chatgpt代码系列】激光与地图匹配置信度算法-信息熵

是的,这段代码只是展示了如何计算配准分数,缺少与 ROS 系统交互的部分。此外,还可以使用其他的配准分数进行评价,如互信息、相关系数等。这里我们采用了 ROS 的 Callback 机制,对激光雷达数据和栅格地图进行订阅。而言,激光雷达数据和地图的差异程度,可表示为激光雷达数据在该栅格中所覆盖的面积与该栅格面积之比。参数指定了 Boost 依赖库需要的组件,而 PCL 依赖库使用了其内置的。激光定位算法中,激光雷达数据和栅格地图的匹配可以使用配准分数进行评价。同时,我们添加了头文件路径和源文件列表,并在。

2023-03-22 14:12:58 964

原创 【chatgpt代码系列】激光定位激光与地图匹配置信度算法

最终,我们可以根据所有粒子的权重之和,计算出一个在0到1之间的概率,表示激光定位的信任度。粒子滤波根据机器人的运动模型、传感器测量数据以及先验知识,生成一系列表示机器人可能位置的粒子,然后根据粒子权重进行重采样,从而大幅度减少计算量。在栅格地图中进行激光定位时,可以通过比较激光雷达测量数据与已知的地图信息之间的匹配度来评价激光定位的信度。以上代码是一个简化版的基于粒子滤波的激光定位算法流程,只给出了概要的思路,具体实现方式需要在代码中进行详细的解释说明。计算激光雷达扫描的数据与已知地图数据之间的匹配程度。

2023-03-22 13:50:33 3357 1

原创 【chatgpt代码系列】三阶贝塞尔曲线等距点算法

三阶贝塞尔曲线上可以计算出对应的点坐标。本程序利用递归方式计算贝塞尔曲线上等间距的点坐标,主要涉及递归算法和贝塞尔曲线的基本原理。请注意,贝塞尔曲线是一种可描述平滑曲线的数学模型,三阶贝塞尔曲线由四个控制点确定。这是一个 C++ 的程序,用于计算三阶贝塞尔曲线上等间距的点。并将起始点和终止点的参数值分别设为。为3阶贝塞尔曲线的4个控制点坐标。,通过二分法计算出满足以下条件的。计算出曲线上对应的点坐标,即。初始化采样点列表,包括起始点。,计算出采样点的间隔。

2023-03-21 21:59:29 776

原创 【chatgpt代码系列】磁导航纠偏算法推导

例如,可以根据AGV偏离路径的方向和距离,计算出需要进行的修正角度和移动距离,然后通过控制算法实现对AGV的纠偏。具体来说,磁导航AGV的行驶是通过磁场传感器感知地面磁场信号,然后根据信号的强度和方向来确定AGV的位置和方向,进而控制AGV的行驶。但是,在实际应用中,由于地面磁场信号的变化和干扰等因素,磁导航AGV可能会出现偏离路径的情况,导致行驶不稳定甚至出现误差。磁导航AGV纠偏公式是通过对AGV行驶中偏离路径的原因进行分析,结合磁导航AGV的工作原理和控制算法,推导出来的。假设AGV的目标方向为。

2023-03-21 21:09:15 1834

原创 【chatgpt代码系列】雷达转点云算法沟通记录

AI作为一个强大的生产力工具,怎么使用它才能快速结合我们自己的工作呢?下面是我的探索,目前来看,是可以代替百度谷歌等搜索引擎的一部分作用,加入到我的工作流当中。

2023-03-20 16:58:32 104

原创 【chatgpt代码系列】dbscan聚类算法沟通记录

2023-03-20 12:28:48 95

原创 【chatgpt代码系列】DBSCAN聚类算法-注释版

这里的 getNeighbors 函数是用来获取点的邻居点的,根据 eps(邻域半径)和两点之间的距离是否小于 eps 决定两点是否为邻居点。expandCluster 函数是扩展簇的函数,根据邻居点的数量是否大于等于 minPts(簇的最小点数)决定是否将该点加入当前簇,并将它的邻居点加入当前簇。DBSCAN 函数是 DBSCAN 的主函数,对于每个未访问过的点,如果它的邻居点数量小于 minPts,则将其标记为噪声点,否则将该点加入新的簇并扩展簇。

2023-03-19 15:50:15 400

原创 【chatgpt代码系列】三角函数式速度曲线规划

该代码实现了一个在给定最大线速度和最大加速度下,根据三角函数式来计算速度曲线的函数,并在程序中进行了调用。在主函数中,我们不断调用该函数来计算速度的变化情况,并输出时间和速度信息。可以通过修改最大线速度、最大加速度、加速度/减速度阶段的持续时间等参数,来验证不同情况下该算法的效果。

2023-03-19 15:47:32 241

原创 【chatgpt代码系列】怎么修改cartographer实现动态更新地图

在Cartographer的默认实现中,MapBuilder和TrajectoryBuilder都是单例模式,也就是说只能存在一个实例,它们在程序启动时就被创建了。如果想要实现动态更新地图,就需要定义新的MapBuilder和TrajectoryBuilder,在程序运行期间可以创建多个不同的地图和轨迹构建器。

2023-03-19 15:47:04 1134 1

原创 【chatgpt代码系列】DBSCAN聚类算法

chatgpt生成的代码

2023-03-19 15:41:58 330

原创 自动批量初始化ros的git仓库并自动创建和上传到远程仓库

利用python写的自动初始化仓库和推送脚本,应用catkin_tools、subprocess、pexpect等工具

2023-02-16 15:03:59 137

原创 【定位】纯激光导航定位丢失/漂移问题的优化方案及思考

优化方案及后续思考

2022-01-22 12:25:36 12613 8

原创 【ROS技巧】如何干掉后台运行的roslaunch进程?自定义脚本工具实现正则匹配

这是killall的加强版,能够杀掉所有匹配正则表达式的进程名(含参数部分),命名为ekill。假如后台进程有多个launch文件同时运行的话,可以很好地区分不同的launch文件的程序,不必使用killall roslaunch导致所有roslaunch进程被干掉。1)创建脚本: sudo vi /usr/local/bin/ekill,输入如下内容:ps aux | grep -e $* | grep -v grep | awk '{print $2}' | xargs -i kill {..

2022-01-20 19:46:51 3328

原创 python2 WebsocketServer库使用

# coding:utf-8# 测试环境:python2.7from websocket_server import WebsocketServerclass TestWebsocketServer(WebsocketServer): """ 继承自WebsocketServer的测试 """ # 重载接口,当有新连接进入时的回调函数 def new_client(self, client, server): print("New client conne

2021-05-19 17:27:36 713

原创 python 基础库实现简单websocket服务端框架

0x01 代码# coding:utf-8import osimport structimport base64import hashlibimport sockettry: import threadexcept ImportError: import _thread as threadclass WebsocketServerBase(object): # 全局api散列表 gm_api_map = { "/": True }

2021-05-19 16:46:16 880

原创 C++ 分割字符串方法

示例代码:#include <vector>#include <string>#include <iostream>using namespace std;/** * @brief string类型字符串分割函数 * @param str(string): 待分割字符串 * @param separator(string): 分割符号 * @return result: 分割结果vetor容器 */vector<string> s

2021-05-10 11:27:31 1139

原创 C++ 设计模式 - 【中介者模式】

#include <string>#include <iostream>#include <map>#include <vector>class Module;/** * @class Mediator * @brief 中介者基类 **/class Mediator{public: virtual void send(std::string msg, Module * p) = 0;};/** * @class

2021-05-06 11:05:39 78

原创 roslaunch - 使用python取代自由度较低的xx.launch

wiki链接: http://wiki.ros.org/roslaunch/API%20Usage后续补充。。。

2021-02-26 17:04:19 132

原创 ROS日志 - 控制台格式化输出的全局变量 ROSCONSOLE_FORMAT

wifi链接:http://wiki.ros.org/rosconsole版本:ubuntu 16.04 Kinetic (这个版本之后支持了python,之前只支持c++)介绍:运行ros程序时,控制台日志输出输出是很重要的调试工具,ros可以通过全局变量的方式任意修改ros节点控制台输出流的格式,例如:export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'把上述指令加入到~/.bashrc文件中(或者其他shell.

2021-02-26 16:54:33 2151

原创 ROS2-Foxy二进制安装(Ubuntu 20.04 Focal )

一、环境ubuntu 20.04 LTS(Foxy)二、安装步骤0x01. 换清华ROS2镜像源1. 新建源listsudo vi /etc/apt/sources.list.d/ros2-latest.list2.编辑内容deb https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ focal main3.更新索引# 1.确保安装curl、gnugp2工具sudo apt install curl gnupg2# 2.获取秘钥并用ap

2020-12-24 15:49:20 1104

原创 ros的setup.bash总是失效/相互干扰问题的解决

问题:在~/.bashrc文件中,通常加入:source ~/catkin_ws/devel/setup,bash这样的语句去加载ros工作空间的环境变量,但是同时加载多个工作空间的环境变量的时候,总是有各种功能包找不到的问题。解决:在~/.bashrc末尾加入:export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/zsl/catkin_ws/src用这样的方式,直接加载对应工作空间的文件夹到ROS_PACKAGE_PATH变量中,每新..

2020-08-19 11:26:13 1635

原创 python发送字节流数据 strcut使用

python#! python3# coding=utf-8# socket :import socketimport structimport timedef getBytesPack(array_data): bytes_data = bytes() for i in range(len(array_data)): bytes_data += struct.pack('B', array_data[i]) return bytes_

2020-08-13 11:13:00 1938

原创 ROS机器人 - movebase包参数设置、状态获取等

move_base判定是否完成:1)使用命令rostopic liist | grep move_base发现话题 /move_base/result ,显然是反馈move_base包执行结果的话题。2)使用命令rostopic echo /move_base/result这时候在rviz指定一个goal,仔细观察输出信息,等待机器人运动到点,可以看到status为3时,text为Goal reached,此时move_base正是完成状态。3)使用命令rostopic info /move_ba

2020-07-24 00:50:08 4180 7

原创 双舵轮AGV轨迹跟踪Pure Pursuit算法模型分析、python代码实现

一、Pure Pursuit算法模型图解和公式推导下图分析的双舵轮AGV的运动学模型,是按照前后舵轮均安装在车体中心线上的车型分析的,当然其它结构的车型也可以按照这样的分析方法画出如下图解。符号物理量r(m)车体中心(小圆)转弯半径R(m)车轮(大圆)转弯半径L(m)轴距δ(rad)前轮转角α(rad)车身与预瞄点夹角Ld(m)预瞄距离e(m)与预瞄点的横向偏差Xr(m)预瞄点横坐标Yr(m)预瞄点纵坐标通过正

2020-07-23 23:23:46 10668 19

转载 Makefile渐进式训练

Makefile步步为营本目录主要包含Makefile一步步递进学习的示例代码makefile代码实例:https://www.lanzous.com/i9m9npistep0:Makefile小实验进行Makefile小实验,体验Makefile的功能。目录中的Makefile是不严谨的编写方式。目录中的Makefile_PHONY是严谨的编写方式。make实验切换至step0目...

2020-02-23 21:12:04 263

转载 人工智能必备数学知识

数学基础知识高等数学1.导数定义:导数和微分的概念f′(x0)=lim⁡Δx→0 f(x0+Δx)−f(x0)Δxf'({{x}_{0}})=\underset{\Delta x\to 0}{\mathop{\lim }}\,\frac{f({{x}_{0}}+\Delta x)-f({{x}_{0}})}{\Delta x}f′(x0​)=Δx→0lim​Δxf(x0​+Δx)−f(x0...

2020-02-22 00:40:25 415

原创 【开源项目推介】机器视觉 ROS 深度学习

1、机器视觉1、DOPE深度对象姿态估计https://github.com/NVlabs/Deep_Object_Pose2、ROS YOLO-V3 DOPE 使用D435双目相机姿态识别https://github.com/yehengchen/DOPE-ROS-D4353、YOLO-V3 ROS 平面目标姿态检测和抓取项目地址:https://github.com/yehen...

2020-02-19 14:44:09 2021 2

原创 笔记 -- 深入分析Linux内核源码【陈丽君】

一、走进Linux1.3 走近Linux内核Linux内核五大部分内容:进程调度、内存管理、进程间通信、虚拟文件系统及网络接口。1.3.1 Linux内核的特征1、组织形式为整体式结构,有很多过程组成,每个过程可以独立编译,再通过程序连接到一起。–内部结构简单,子系统间易于访问,内核工作效率较高。2、进程调度,对于用户进程,Linux 采用简单的动态优先级调度方式;对于内核中的例程(如设...

2020-01-29 23:33:54 670

原创 ROS物理仿真环境学习 gazebo + rviz【问题记录】

Turtlebot3与仿真-仿真环境搭建# 一个命令安装所有TurtleBot3依赖项sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-launch ros-ki...

2020-01-29 23:28:28 1761

原创 激光SLAM理论与实践 - 第四期 作业解答(课件和作业网盘)

第一章作业第二章作业第三章作业

2020-01-29 22:42:45 6263 12

UVW_sim_4.m

UVW平台简介: 1、这是一种可以实现以平面上任意一点为中心,进行旋转运动的装置,并可沿着任意的方向平移。 2、此平台和视觉CCD纠偏系统对接在一起,可以很快完成高精度的纠偏工作,重复定位精度一般可达±1μm; UVW平台和以前的xyθ平台相比,有以下几点不同: 1、控制精度高于xyθ平台; 2、UVW平台可以平面上任意一点为中心做旋转运动(包括无限远);而xyθ平台由于仅仅依靠一个电机的转动控制,所以旋转中心必须是固定在平台上某处(θ电机连接处),且必须随平台一同运动。 3、基于第二点的区别,显然UVW平台是需要一个绝对坐标系作为参考系,其旋转中心才有意义;而xyθ平台则必须是一个随平台动的坐标系作为参考系,这样控制计算方法便完全不一样了。

2019-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除