自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 linux下的条件变量

条件变量这里感觉有点抽象,后面问了问deepseek后可以用一种较通俗易懂的方式理解了。函数pthread_cond_init用于初始化用于销毁条件变量条件变量要和一个互斥锁mutex搭配使用。线程调用这个函数后,会被阻塞在该函数这里。如果这把锁是锁着的则会打开mutex这把锁。被阻塞的线程只有调用如下两个函数才会解除阻塞:下面是pthread_cond_wait函数内部执行过程的伪代码:当调用wait后,线程立即释放与条件变量搭配使用的锁,并让其阻塞在该条件变量

2025-05-01 21:38:14 295

原创 linux下的读写锁

读写锁的用法和互斥锁差不太多。当系统中线程全部都是写操作时,读写锁就退化成了普通的互斥锁。当系统中线程全部都进行读操作时,他们的读操作都会是并行的。相比于互斥锁,有读线程存在时,读写锁可以提高效率。

2025-05-01 11:23:30 168

原创 linux下的线程同步:互斥锁

假设有两个线程不加约束地对一个共享变量进行访问会有怎样的后果?这里myCallback1线程和myCallback2线程打算各对num加50次。但是,如果线程myCallback1在执行tmp = num后,myCallback2抢走CPU,也执行了这条语句,那么它就只能通过tmp自增一次而不是两次。为了不让线程同时访问到临界资源num,我们需要让它们“互斥”访问。

2025-04-30 16:58:44 238

原创 linux下的线程

线程是轻量级的进程,在linux环境下,它的本质仍然是进程。操作系统会以进程为单位分配分配资源。总的来说,进程是分配资源的最小单位,而线程是操作系统进行调度的最小单位。

2025-04-30 10:19:07 645

原创 ROS自定义消息类型

首先在工作目录的src目录下创建一个test_msgs包,依赖项除了roscpp rospy std_msgs以外,还有message_generation message_runtime,这两个是消息包生成的依赖项。然后在test_msgs下创建一msg文件夹。假设我们要描述的对象是一个worker,我们需要在msg文件夹下创建一个消息类型文件,在该文件中定义我们自定义的消息结构,格式如下:(数据类型+变量名),数据类型也可以用其他包的数据类型。

2025-01-20 21:57:07 1419

原创 ROS中的IMU惯性测量单元

我们需要先计算目标朝向与当前朝向的差值,使用速度消息包设定机器人的绕Z轴的角速度为角度差的%1。其余的covariance字段均为对应的float64的协方差矩阵,如果某项数据不可用,将对应协方差矩阵的第一个元素设为-1。协方差矩阵可用于加权不同来源的数据,赋予精度更高的数据更大的权重,这里我们暂时用不到。这里我们需要一个gazebo仿真环境,可以去b站的机器人工匠阿杰的ROS教程找到,我的ROS入门相关的文章也是在他的视频基础上总结的。orientation:表示IMU的姿态,采用四元数的形式。

2025-01-18 21:31:39 549

原创 ROS中的launch文件—批量启动ROS节点

当我们使用指令启动launch文件时,会自动对指定的软件包的目录遍历搜索。这里有一个疑问,launch文件的name和节点的cpp文件里的ros::init函数的第三个参数我不知道有什么区别,我问chatgpt说的是它们都用于指定节点名称,但。pkg="包名" type="要执行节点的可执行文件的名称(catkin_make构建的结果)" name="运行时给节点起的名字"我认为我们可以启动多个节点,这些节点运行的是同一份节点代码,只要name别重复就行。的文件,在ROS中我们用它来批量启动ROS节点。

2025-01-14 16:53:12 338

原创 ROS中的订阅与发布

上一篇文章我们已经完成了发布者的编写,这里我们来实现订阅者,实现两个节点的通信。

2025-01-14 12:39:44 305

原创 ROS话题通信入门

注:我用的是noetic版本的ROS,Linux是ubuntu 20.04 LTS,wsl子系统。

2025-01-14 00:13:29 1157

原创 如何给VIM安装插件

写好后,wq保存,重新打开vimrc并在当前vimrc下执行:PlugInstall即可安装。此时vimrc是新创建的文件,是空的。其实有非常多的类似的插件可供选择,高版本的vim也有此功能。注:安装可能需要科学上网。

2025-01-10 16:15:37 591

空空如也

空空如也

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

TA关注的人

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