C++11中引入了mutex和方便优雅的lock_guard,但是有时候我们想要一个性能更高的实现方式,本文主要讲解如何使用C++11中的原子操作类atomic来巧妙地实现无锁同步。
作者归档:yanjingang
小猪学arduino—ESP32-CAM远程视频监控&底盘控制
C++ lock_guard和unique_lock的区别
C++多线程编程需要对共享的数据进行写保护,以防止多线程在对共享数据成员进行并发写时造成资源争抢而导致出现崩溃或其他不符合预期的结果。通常的做法是在修改共享数据成员前先对互斥锁mutex进行lock加锁,在修改后再进行unlock操作,这个场景中经常会出现由于疏忽或异常导致lock之后未能unlock,最终导致死锁。
小猪学arduino—Wifi图传+遥控坦克
C++ std::static_pointer_cast详解
一、概述
static_pointer_cast从表面上看就是静态指针类型转换。细细看来,并不是那么简单,有一个隐形的限制条件。首先这个是c++11里的,更老的编译器不支持,其次指针是shared_ptr类型的,对于普通指针是无效的。还有一般只用在子类父类的继承关系中,当子类中要获取父类中的一些属性时,或工厂模式等需要通过父类参数接收不同子类实例的场景(当然了子类通过多态拥有自己的父类继承来的属性和行为,但是还想知道父类相应的属性和行为,这时,将父类的shared_ptr通过static_pointer_cast转化为子类的shared_ptr,这样就可以使得子类可以访问到父类的方法)。
机器人操作系统ROS—摄像头标定
成长之路—激发团队智慧的管理工具
机器人操作系统ROS—使用Cartographer进行激光雷达SLAM建图
小猪学arduino—使用QGPMotorShiled驱动板制作排爆机器人
成长之路—《OUR KIDS》读后感
解决Ubuntu”Authentication required. System policy prevents WiFi scans”问题
在一块新的pi4板子上装了ubuntu20.04,结果连wifi一直弹出”Authentication required. System policy prevents WiFi scans”的认证提示,没完没了的弹,点了之后也无法输入密码。
成长之路—《穷查理宝典》读后感
成长之路—《绩效和晋升—关键时刻的价值评价》学习心得
成长之路—《破除地盘意识—全局最优资源分配》学习心得
成长之路—《精要主义》读后感
机器人操作系统ROS—使用麦克风阵列实现声源定位及语音控制
机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航
小猪学arduino—PS2手柄控制
机器人操作系统ROS—自研底盘的精准控制

我们完成SLAM建图后,如何在导航时让自己的底盘正常工作,是很多新手面临的问题。上位机大家通常采用pi或nvidia jetson nano甚至更强算力的板子,系统一般采用ubuntu,这使得上位机的库几乎是通用的;而底盘不同,单片机有stm32、arduino、51等,电机的种类就更多了,电机的精准度和质量参差不齐,容易在底盘动起来后难以实现精准控制。如何利用电机编码器进行精准的底盘移动并上报odom,不少人会在这里花费大量时间,本文将针对此类问题进行具体讲解。