自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

古月居

怕什么真理无穷,进一寸有一寸的欢喜

  • 博客(194)
  • 资源 (11)
  • 收藏
  • 关注

原创 博客迁移通知

为方便博客内容的管理,今后本人的博客内容会在个人网站——古月居(http://www.guyuehome.com)进行更新,CSDN博客不作主要维护,感谢大家的支持。由于网站方面的能力有限,个人网站可能会存在一些问题,欢迎大家批评指正。 同时欢迎各位关注“古月居”微信公众号,第一时间了解ROS机器人的相关动态。...

2019-12-18 15:02:10 20644 8

原创 ROS探索总结(十九)——如何配置机器人的导航功能

ROS的二维导航功能包,简单来说,就是根据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令。但是,如何在特定的机器人上实现导航功能包的功能,却是一件较为复杂的工程。作为导航功能包使用的必要先决条件,机器人必须运行ROS,发布tf变换树,并发布使用ROS消息类型的传感器数据。同时,为了让机器人更好的完成导航任务,开发者还要根据

2016-01-18 22:07:23 33166 19

原创 ROS探索总结(十八)——重读tf

在之前的博客中,有讲解tf的相关内容,本篇博客重新整理了tf的介绍和学习内容,对tf的认识会更加系统。1 tf简介1.1 什么是tf        tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助用户在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。        tf的相关设计思想,可以参见:tf设计 1

2015-12-02 23:11:10 38340 8

原创 ROS探索总结(十七)——构建完整的机器人应用系统

上一篇博客介绍了HRMRP机器人平台的设计,基于该平台,可以完成丰富的机器人应用,以较为典型的机器人导航为例,如何使用HRMRP来完成相应的功能?本篇博客将详细介绍如何将HRMRP应用到实际的应用当中。

2015-09-20 12:30:40 16411 15

原创 ROS探索总结(十六)——HRMRP机器人的设计

HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台)机器人是我在校期间和实验室的其他小伙伴一起从零开始设计并开发的一款机器人平台,其中大部分扩展电路、驱动和ROS相关的底层功能都是我们自己做的。该机器人平台具有软硬件可编程、灵活性强、模块化、易扩展、实时性强等特点。HRMRP具备丰富的传感器和执行器,在该平台的基础上,我们设计并实现了机器人SLAM、自主导航、人脸识别、机械臂控制等功能。

2015-09-13 15:22:10 12405 4

原创 ROS探索总结(十五)——amcl(导航与定位)

在理解了move_base的基础上,我们开始机器人的定位与导航。gmaping包是用来生成地图的,需要使用实际的机器人获取激光或者深度数据,所以我们先在已有的地图上进行导航与定位的仿真。        amcl是移动机器人二维环境下的概率定位系统。它实现了自适应(或kld采样)的蒙特卡罗定位方法,其中针对已有的地图使用粒子滤波器跟踪一个机器人的姿态。一、测试        首先运行

2013-09-27 21:10:33 70013 33

原创 ROS探索总结(十四)——move_base(路径规划)

在上一篇的博客中,我们一起学习了ROS定位于导航的总体框架,这一篇我们主要研究其中最重要的move_base包。

2013-07-25 16:26:22 87329 35

原创 ROS探索总结(十三)——导航与定位框架

导航与定位是机器人研究中的重要部分。        一般机器人在陌生的环境下需要使用激光传感器(或者深度传感器转换成激光数据),先进行地图建模,然后在根据建立的地图进行导航、定位。在ROS中也有很多完善的包可以直接使用。        在ROS中,进行导航需要使用到的三个包是:      (1) move_base:根据参照的消息进行路径规划,使移动机器人到达指定的位置;

2013-07-15 18:03:43 51352 14

原创 ROS探索总结(十二)——坐标系统

在机器人的控制中,坐标系统是非常重要的,在ROS使用tf软件库进行坐标转换。        相关链接:http://www.ros.org/wiki/tf/Tutorials#Learning_tf一、tf简介        我们通过一个小小的实例来介绍tf的作用。1、安装turtle包$ rosdep install turtle_tf rviz$ rosmake turt

2013-07-05 19:55:12 59792 17

原创 ROS探索总结(十一)——机器视觉

机器视觉在计算机时代已经越来越流行,摄像头价格越来越低廉,部分集成深度传感器的混合型传感器也逐渐在研究领域普及,例如微软推出的Kinect,而且与之配套的软件功能十分强大,为开发带来了极大的便利。ROS集成了Kinect的的驱动包OpenNI,而且使用OpenCV库可以进行多种多样的图像处理。        注:本章内容及代码均参考《ROS by Example》书中的第十章。一、图像

2013-06-24 21:24:19 55689 74

原创 ROS探索总结(十)——语音控制

如今语音识别在PC机和智能手机上炒的火热,ROS走在技术的最前沿当然也不会错过这么帅的技术。ROS中使用了CMU Sphinx和Festival开源项目中的代码,发布了独立的语音识别包,而且可以将识别出来的语音转换成文字,然后让机器人智能处理后说话。一、语音识别包1、安装        安装很简单,直接使用ubuntu命令即可,首先安装依赖库:$ sudo apt-ge

2013-06-15 22:03:03 27314 30

原创 ROS探索总结(九)——操作杆控制

对于移动机器人,键盘的控制往往满足不了我们的需求,以前看好多电影里边都是用一个摇杆来控制机器人的,简直帅爆了,正好我这里有一个操作杆,那就来尝试感受一下。        操作杆(joystick)控制会更加有操作感,ROS中的很多机器人也带有操作杆的相关代码,只需要简单的移植即可。我们使用的是赛钛客(saitek)的一款操作杆,如下图所示:        使用的移植代码是clear

2013-06-06 21:39:46 12495 15

原创 ROS探索总结(八)——键盘控制

如果尝试过前面的例子,有没有感觉每次让机器人移动还要在终端里输入指令,这也太麻烦了,有没有办法通过键盘来控制机器人的移动呢?答案室当然的了。我研究了其他几个机器人键盘控制的代码,还是有所收获的,最后移植到了smartcar上,实验成功。一、创建控制包        首先,我们为键盘控制单独建立一个包:roscreate-pkg smartcar_teleop rospy geometr

2013-06-01 17:04:12 44983 16

原创 ROS探索总结(七)——smartcar源码上传

看到前面写的博客还是帮助了很多ROS的学习者,我感到非常荣幸。其实我也是一名ROS的新手,ROS的相关资料少,上手难度大,我现在也在摸索着学习,还希望大家都将自己的学习成果在网上或者ROS群里分享。        我看到有些人在运行我前面写的smartcar程序,为了方便大家的学习,我这两天整理了一下代码,已经上传到csdn上,下载请见:        http://download.cs

2013-05-31 13:30:28 13787 7

原创 ROS探索总结(六)——使用smartcar进行仿真

之前的博客中,我们使用rviz进行了TurtleBot的仿真,而且使用urdf文件建立了自己的机器人smartcar,本篇博客是将两者进行结合,使用smartcar机器人在rviz中进行仿真。一、模型完善        之前我们使用的都是urdf文件格式的模型,在很多情况下,ROS对urdf文件的支持并不是很好,使用宏定义的.xacro文件兼容性更好,扩展性也更好。所以我们把之前的urdf

2013-05-20 19:04:19 25480 62

原创 ROS探索总结(五)——创建简单的机器人模型smartcar

前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人smartcar,为后面建立复杂机器人打下基础。一、创建硬件描述包roscreat-pkg smartcar_description urdf二、智能车尺寸数据        因为建立的是一个非常简单的机器人,所以我们尽量使用简单的元素:使用长方体代替车模,使用圆柱代替车轮,具体尺寸

2013-05-09 10:56:40 33251 50

原创 ROS探索总结(四)——简单的机器人仿真

前边我们已经介绍了ROS的基本情况,以及新手入门ROS的初级教程,现在就要真正的使用ROS进入机器人世界了。接下来我们涉及到的很多例程都是《ROS by Example》这本书的内容,我是和群里的几个人一起从国外的亚马逊上买到的,还是很有参考价值的,不过前提是你已经熟悉之前的新手教程了。一、ROS by Example        这本书是关于国外关于ROS出版的第一本书,主要针

2013-04-30 21:21:41 57669 57

原创 ROS探索总结(三)——ROS新手教程

前面我们介绍了ROS的特点和结构,接下来就要开始准备动手感受一下ROS的强大了。ROS官网的wiki上针对新手的教程很详细,最好把所有的新手教程都搞清楚,这是后面开发最基础的东西。尽管如此,ROS对于新手来说还是很难上手,这里,我就来总结一下我当时学习的历程,也为其他新手作为一个参考。一、ROS的安装        ROS的安装当然是我们开始动手的第一步了,这里我们使用的操作系统是

2013-04-16 21:56:23 131203 33

原创 ROS探索总结(二)——ROS总体框架

一、  总体结构       根据ROS系统代码的维护者和分布来标示,主要有两大部分:     (1)main:核心部分,主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具,以及整个ROS的核心部分的程序编写。     (2)universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等

2013-04-12 22:23:30 43873 8

原创 ROS探索总结(一)——ROS简介

一、历史       随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。       ROS系统是起源于2007年斯坦福大学人工智能实验室的项目与机

2013-04-12 21:30:25 67550 27

原创 C++ CPU程序占用率高问题排查

我们在之前介绍了使用Valgrind、perf、AddressSanitzer等工具来完成内存泄漏的检测,当然内存泄漏以外还有cpu的占用率变高这类问题。在ubuntu下使用apt安装时,可能会出现无法使用的问题,解决方法是:直接在/usr/bin下新建一个名为pstack的脚本文件,并给sudo权限。看线程在干什么,可以看线程的堆栈,命令是pstack 进程号,会输出所有线程的堆栈信息。可以看出PID是4927的线程占到了100%的cpu,我的业务日志是打印线程号的。1.查看耗CPU的线程号。

2024-05-23 10:18:47 118

原创 DI-engine强化学习入门(六)理解 DI-engine 训练输出文件夹

设默认置 n_sample 模式。collector 的基本信息: n_sample 和 env_num. n_sample 表示采集的数据样本数. 对于 env_num,它表示collector将与多少个环境交互。在ckpt文件夹中,您会发现模型训练过程中保存的检查点文件,包括最佳模型ckpt_best.pth.tar和其他迭代的模型文件。在evaluator文件夹中的evaluator_logger.txt文件,则记录了评估器与环境交互时的一些关键信息,这对于理解模型的表现和做出调整至关重要。

2024-05-22 10:28:13 607

原创 CPU使用率及Linux系统CPU性能分析工具

Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息,而 /proc/stat 提供的就是系统的 CPU 和任务统计信息。其他列则表示不同场景下 CPU 的累加节拍数,它的单位是 USER_HZ,也就是 10 ms(1/100 秒),所以这其实就是不同场景下的 CPU 时间。其中,第一列表示的是 CPU 编号,如 cpu0、cpu1 ,而第一行没有编号的 cpu ,表示的是所有 CPU 的累加。CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。

2024-05-21 09:56:14 662

原创 混合A*算法详解(二)路径平滑

然而,对于具有非完整约束的汽车来说,沿着Voronoi图导航是不可能的(由于运动学约束某些路径是车辆是无法驾驶通过的)。然而,我们观察到,对于具有凸障碍物的工作空间,Voronoi势能图可以用全局吸引势能来增强,产生一个没有局部极小值的势能图,因此适合于全局导航。我的理解是对于图a,可以看到凸障碍物内部的势能也比较高,该障碍物小还好说,当障碍物非常大时,应用Voroni势能可以避免在障碍物内部产生局部最小值的势能,导致规划多占用算力。根据之前的文章分析,决定A*路径长度的有两点:路径长度和距离障碍物远近。

2024-05-20 17:07:29 236

原创 HSV值获取

通过这三个参数的组合,可以在HSV模型中精确地描述各种颜色,使得调整和理解颜色更加直观和容易。在图像处理中,HSV模型常用于调整图像的颜色平衡、色调和亮度等方面。在计算机视觉中,颜色提取是一种常用的图像处理技术,其中HSV(色相、饱和度、明度)是一种常见的颜色空间,用于描述和提取图像中的颜色信息。HSV颜色空间将颜色表示为三个分量:色相(H)、饱和度(S)和明度(V)。

2024-05-19 09:30:00 372

原创 如何在OriginBot上实现人脸识别

self.image_sub = self.create_subscription(Image, ‘/image_raw’, self.image_callback, 10) 用于订阅原始图像。self.pub = self.create_publisher(Image, ‘/camera/process_image’, 10) 用于发布处理后的图像。这就是是计算机视觉领域的一项关键技术——人脸识别,它使计算机系统能够自动检测、识别和验证图像或视频中的人脸。

2024-05-18 09:30:00 242

原创 ESP32启动流程(超级详细!!!)

如果 RTC_CNTL_STORE6_REG 的值非零,并且 RTC_CNTL_STORE7_REG 的 CRC 校验有效,则跳转到 RTC_CNTL_STORE6_REG 指定的地址执行代码。在复位之后,PRO CPU 首先被激活,开始执行位于 ESP32 芯片掩膜 ROM 中的复位向量代码(复位向量代码是指在微控制器或其他类型的处理器中,在复位事件发生后首先执行的一段代码)系统检查 RTC_CNTL_STORE6_REG 和 RTC_CNTL_STORE7_REG 寄存器的值。,不参与初始化过程。

2024-05-17 10:00:00 368

原创 《新生向》什么是Python环境?

Python环境是指一个特定的设置,其中包含了运行Python代码所需的一系列软件工具和包。Python虚拟环境是一个独立的目录树,其中安装了特定版本的Python解释器以及一系列附加包。Python的标准库提供了广泛的模块和函数,它们被内置在Python解释器中。观前提醒:本文详细介绍了Python环境的结构,介绍了python虚拟环境基础用法,以及python中的环境&依赖管理。,以便任何对Python解释器或Python脚本的调用都会使用虚拟环境中的版本。激活和退出的步骤与venv相同。

2024-05-16 10:00:00 542

原创 ESP32的LEDC——以电机调速、舵机控制为例

在微控制器编程中,PWM(脉冲宽度调制)是一种重要的技术,它可以用于模拟模拟信号,控制LED亮度,驱动电机,以及生成音频信号等。ESP32是内置了一个高级LEDC(LED PWM Controller)硬件,用于产生高精度的PWM信号。本文将详细介绍ESP32的LEDC功能,包括其工作原理,编程方法,以及应用实例。与传统的PWM不同,LEDC提供更高的分辨率,更多的通道,以及更灵活的频率控制。这段代码是为Arduino编写的,用于在ESP32微控制器上配置LEDC(LED PWM控制器)以产生PWM信号。

2024-05-15 10:57:39 680

原创 跨ROS系统通信:使用TCP实现节点间的直连

它监听特定的ROS主题上的消息,并在收到消息后,通过TCP套接字连接将该消息转发到另一个系统(称为”System B”)。此时,一个可行的解决方案是建立一个直连的TCP通信,允许跨ROS系统的节点之间直接传输消息。我们的目标是让系统A中的节点监听话题testa,并将接收到的消息通过TCP发送给系统B中的节点。同样,系统B中的节点将监听话题testb并通过TCP将消息回传给系统A。这种设置的一个典型应用场景是多机器人协作,其中机器人位于不同的网络环境中,或者需要与不支持ROS的遗留系统交互。

2024-05-14 10:33:29 892

原创 【Tello无人机】实物轨迹跟踪控制

本系统是要控制无人的速度,采用的接口是send_rc_control(left_right_velocity, forward_backward_velocity, up_down_velocity, yaw_velocity)

2024-05-13 10:05:34 364

原创 DI-engine强化学习入门(七)如何自定义神经网络模型

如果任务是在一个模拟器(如 dmc2gym,一个DeepMind Control Suite到OpenAI Gym接口的适配器)上运行,并且任务是 cartpole-swingup,而且你希望使用观测为像素的输入(即观测是一个图像),那么默认的 qac 模型不足以处理这样的高维度和多通道的输入。在 DI-engine 强化学习框架中,每个策略(如 SACPolicy)通常有一个关联的默认模型(通过 default_model 方法指定),这个默认模型是为特定类型的任务设计的。

2024-05-12 10:30:00 684

原创 经典文献阅读之--TwinLiteNet(可行驶区域和车道分割的高效轻量级模型)

我们的方法利用ESPNNet-C作为信息编码块,实现了高效的特征图生成。然后,将得到的特征图通过两个专用于执行两个特定任务的编码器块进行处理:可驾驶区域分割和车道检测。通过采用这种架构,我们旨在以较低的成本实现这些任务的准确和高效的分割结果。我们的TwinLiteNet由一个输入和两个输出组成,以便模型学习两个不同任务的表示。TwinLiteNet可以在计算能力有效的嵌入式设备上实时地运行,尤其是因为它在Jetson Xavier NX上实现了60FPS帧率,这使其成为自动驾驶汽车的理想解决方案。

2024-05-11 10:30:00 478

原创 深入理解ikd-Tree从阅读代码开始(二)

给定一个点阵列V,首先按协方差最大的分割轴对点进行排序(第4-5行),然后中值点保存到新树节点T的点(第6-7行),中位数下方和上方的点分别传递给T的左和右子节点,用于递归构建(第9-10行),第11-12行中的LazyLabelInit和Pullup更新了增量更新所需的所有属性。公开了,而且有很多人对代码进行了总结与阐述.这里我们主要来看一下。ikd-Tree,并对作者的一些疑问进行解释.

2024-05-10 10:00:00 332

原创 深入理解ikd-Tree从阅读代码开始(三)

如果已删除以T为根的子树上的所有节点,则T的属性treedeleted设置为true,因此,删除的属性和树删除的属性称为惰性标签。如果标记为“已删除”但未删除的点稍后插入到树中,则称为“重新插入”,只需将删除的属性设置回false即可有效地实现。增量k-d树上的逐点更新以递归方式实现,类似于k-d树,对于逐点插入,该算法从根节点递归向下搜索,并将新点在分割轴上的坐标与存储在树节点上的点进行比较,直到找到一个叶节点来附加新的树节点,对于点P的删除或重新插入,该算法会找到存储点P的树节点,并修改删除的属性。

2024-05-09 15:40:17 823

原创 DI-engine强化学习入门(十)如何使用RNN——模型构建和包装

随着研究的深入,研究者们发现传统的RNN容易出现梯度消失或梯度爆炸的问题,这限制了模型处理长序列的能力。为了解决这一问题,人们提出了RNN的一些变体,最著名的包括长短期记忆网络(Long Short-Term Memory, LSTM)和门控循环单元(Gated Recurrent Unit, GRU)。与传统的前馈神经网络不同,RNN引入了“内部状态”(或称为“隐藏状态”),使得网络能够存储过去的信息,并利用这些信息影响后续的输出。3.get_lstm: 根据输入参数返回不同的LSTM单元实现。

2024-05-08 14:23:16 466

原创 OriginBot家庭助理计划之宝宝看护助手

我在上个月有了宝宝,为了方便照看宝宝,就买了一个带有宝宝看护功能的摄像头,但是产品做的不怎么样,最重要的脸部遮挡功能用不了,后来就退货了。退货后就萌生了自己用OriginBot做一个类似功能的想法,于是就有了这篇博客~

2024-05-07 15:11:26 325

原创 OriginBot源码学习之摄像头驱动

这段代码其实也很简单,就是一些参数声明,但是如果使用了OriginBot一段时间的小伙伴应该记得,小车启动摄像头后,会通过一个叫做/image_raw的话题发布图像数据,这个话题在这里没有提到。上面的代码里面调用了mipi_cam.launch.py和 websocket.launch.py, 现在分别来介绍。中,提供了两种驱动摄像头的方法:一个启动之后可以通过页面实时展示画面和。的结果,另一种方法启动之后只是通过一个话题来发布图像数据。代码的学习与理解,我会注释写在代码文件中。这篇博客主要记录自己对于。

2024-05-06 11:38:58 298

原创 OriginCar之FoxGlove使用

OriginCar自带一套用于智能车比赛的上位机数字系统,用于监控OriginCar各个传感器信息以及和OriginCar进行话题服务通信,使用者可以下载百度网盘中关于数字环境使用文档及启动文件的相关内容。除了软件本体外,笔者还开发了对应脚本辅助使用者使用,使用者在PC端需要安装keyboard、roslibpy、opencv-python、pyyaml等Python库,请按照下面步骤安装这些依赖。这个命令会自动读取requirements.txt文件中列出的依赖项,并安装到你的Python环境中。

2024-05-05 14:11:55 529

原创 《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT

启动地址:0x1FFF0000从系统存储器启动,系统存储器是芯片内部的一块特定区域,在出厂时由ST(STMicroelectronics)在该区域内预置了一个Bootloader,也称为ISP(In-System Programming)程序。这是最常用的启动方式。当将BOOT0设置为1,BOOT1设置为0,并按下复位键时,微控制器会从系统存储器中的Bootloader开始执行。将BOOT0设置为1,BOOT1设置为0,并按下复位键,使微控制器从系统存储器启动Bootloader。

2024-05-04 22:57:40 1059

ROS学习tf的初级代码

ROS学习tf的初级代码 详细教程见: http://blog.csdn.net/column/details/ros-explore.html

2013-07-05

ROS使用键盘控制机器人移动

ROS使用键盘控制机器人移动 详细教程见 http://blog.csdn.net/column/details/ros-explore.html

2013-06-01

ROS中smartcar机器人的描述文件

ROS中smartcar机器人的描述文件 具体教程见: http://blog.csdn.net/hcx25909/article/details/8951833

2013-05-31

grub4dos制作多系统启动U盘所需文件打包

使用grub4dos制作多系统启动U盘(win7、ubuntu12.04) 所需要的文件打包 具体教程见: http://blog.csdn.net/hcx25909/article/details/8982208

2013-05-28

使用grub4dos制作多系统启动U盘

使用grub4dos制作多系统启动U盘(win7、ubuntu12.04) 所需要的软件和文件打包 具体教程见:http://blog.csdn.net/hcx25909/article/details/8982208

2013-05-28

Qt_画图软件设计教程

Qt_画图软件设计教程 内容很详细,适合新手学习

2013-03-26

零基础学QT编程 吴迪.pdf

零基础学QT编程,QT入门级书籍

2013-03-24

ROS链接openni库测试代码

ROS链接openni库获取kinect数据(PC端) 具体使用说明见:http://blog.csdn.net/hcx25909/article/details/8619126

2013-02-27

华为+程序规范教材

华为公司的代码规范,很详细 华为公司的代码规范,很详细

2012-10-14

LWIP中文手册

很详细的lwip中文说明

2012-10-14

K60英文芯片资料

K60的官方芯片资料,内容比较多,都是英文的,看起来比较麻烦

2012-02-09

空空如也

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

TA关注的人

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