自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (3)
  • 收藏
  • 关注

原创 ubuntu18.04实现intel集显和nvidia独显的切换(亲测有效)

最近跑3DSLAM发现,即便CPU占用率很低,内存中用了5G/12G,电脑依然很卡,不过命令的执行速度很快。因此考虑可能是因为默认用的是intel的显卡,性能不足以支持3D的流畅建模。装驱动倒是很简单,但后面的启用驱动倒是恶心的不行。甚至于在我按照某个教程修改/boot/grub/grub.cfg后(添加了acpi=linux nomodset),两个显卡驱动都未被使用,而是用了llvm,整个界面是一行一行刷新的。在这里归纳下准确的过程,且简单。1.安装nvidia驱动ubuntu-drivers

2020-08-13 15:01:33 11662 4

原创 综述《SLAM的过去、现在和将来》翻译

论文标题:《Past, Present, and Future of Simultaneous Localization》摘要SLAM是指同时构筑环境模型和估计在其中运动的机器人状态。在近30年来,SLAM社区已经做出了许多惊人的进步,使得大规模的实际应用进入到工业界。本文调查了SLAM目前的状态,并考虑了未来的方向。本文首先提出实际上的SLAM标准公式。随后,本文审查了最近的工作,覆盖了一系列的主题,包括长期建图的鲁棒性和可扩展性,度量和语义表达,理论表现依据,主动SLAM及探索和其他新的前沿方向

2022-01-15 23:20:43 35

原创 ICRA2021 LiTAMIN2的复现

2021出了一篇论文,是hdl_graph_slam和VGICP的作者koide(二作)发表的一篇论文,论文题目是《LiTAMIN2: Ultra Light LiDAR-based SLAM by Geometric Approximation applied with Symmetric KL-Divergence》。该论文在2020年LiTAMIN的基础上改进了前端,从KL散度的角度,改进了激光里程计的优化目标函数。论文最大的亮点是精度比肩Suma,速度能达到500-1000Hz。即便对精度要求比

2022-01-09 21:03:52 1315 8

原创 Ubuntu的NVIDIA显卡驱动忽然无法启动了

有一天什么也没做,只是切换到Windows系统切回来后,Ubuntu的NVIDIA显卡驱动就失灵了。电脑是拯救者Y2021 7000P,系统为Ubuntu18.04。猜测原因:sudo apt upgrade导致内核更新,使得显卡驱动失效了。解决措施:卸载重装,重启即可。sudo apt remove nvidia*sudo ubuntu-drivers autoinstall注意,上述操作不会影响原本的CUDA,因此不需要重装CUDA。...

2021-12-10 12:42:27 3633

原创 几种排序算法的C++实现

本博客为实验作品,测试下在CSDN上此类博客的传播度。// 下面为各个版本的排序算法的实现#include <vector>#include <iostream>#include <algorithm>using namespace std;int getMid(vector<int> &nums, int left, int right);// 快速排序 平均nlog(n),最坏O(n^2),空间:O(nlog(n)),不稳定

2021-07-13 21:52:50 223

原创 Modbus RTU和Modbus TCP

https://player.bilibili.com/player.html?bvid=BV1LK4y1D776Modbus概要Modbus为PLC而生,是一个总线协议。Modbus有以下几种协议(不全):Modbus RTU/Modbus Ascii/Modbus Tcp / ModbusRTUOverTcp特性:开源免费 在多种电气接口(RS232、RS485)以及通信介质(串口、以太网、蓝牙、4G)中使用报文帧简单紧凑对于PLC而言,其存储区的数据类型可以分为 布尔量和

2021-07-05 14:36:47 976

原创 VS CODE调试ROS/C++程序

文章目录1. 程序编译2. 配置launch.json3. 运行调试该文档将会持续进行更新,涉及ROS调试中遇到的一些问题。C++程序的调试也相仿,只是去掉了启动roscore的部分1. 程序编译这部分并不打算采用vscode的tasks.json来配置编译命令,而是选择手动的运行:catkin_make --only_pkg-with-deps package_name该命令可以单独的编译某个特定的package及其依赖项。需要主要的是CMakeLists.txt应当修改成Debug模式:

2021-04-28 16:55:31 831

原创 QT编写毫米波雷达驱动心得

最近,在写德国大陆毫米波雷达的驱动。由于车上要装八个毫米波雷达,为了节省接口和提高传输速率,使用了CAN转以太网模块,将八路毫米波雷达的数据全都转换成TCP包的形式。本博客主要是记录下遇到的一些问题和解决方法。协议的选择在TCP和UDP之间,考虑到无人驾驶需要可靠性,因此使用TCP。主机在这里面可以作为Client有也可以作为Server。在后端同事的建议下,主机作为Server。这主要是考虑到,这样增加传感器,无需改写代码。框架选择TCP应该还是有挺多框架的吧。我这边选择了QT。QT

2021-02-22 16:51:26 692 1

原创 C++编程为什么需要考虑字节对齐?

很好的解答在这里:https://blog.csdn.net/zhanglianpin/article/details/19150421对于嵌入式开发者而言,该问题之所以重要是因为我们经常会在不同系统、不同处理器(32位或64位)之间进行移植,这时候如果双方的默认对齐方式不一致,则可能会导致报错,尤其是使用了sizeof(struct)。需要注意的是,通常32位处理器默认的字节对齐为4字节,64位处理器则是8字节。...

2021-02-08 17:04:53 332

原创 Linux下无法看到windows中创建的中文字符

该问题本质上是由于Windows默认为zh_CN编码格式,而Linux一般是UTF-8。查询当前系统所使用的字符集:echo $LANG 我的电脑输出是en_US.UTF-8接下来的思路就是要不修改自己电脑的字符集使其支持zh_CN,或者修改文件格式,我倾向于后者。推荐安装enca,支持自识别文件编码和批处理:sudo apt install enca基本使用格式enca -L 原编码 -x 新编码 文件名/目录名   示例1:检查文件的编码enca -L zh_CN test

2021-01-25 11:16:52 133

原创 C++ wait_for

在看xsens的ROS驱动源码时,遇到了如下代码,其中涉及到了多线程里的wait_for函数:// Returns empty packet on timeoutRosXsDataPacket XdaCallback::next(const std::chrono::milliseconds &timeout){ RosXsDataPacket packet; std::unique_lock<std::mutex> lock(m_mutex); if (m_condit

2021-01-14 18:09:08 7587 2

原创 论ROS下IMU的串口通信节点

解决该问题主要有两种方法:1. 中断法在ARM中有IDLE中断这个概念,当串口发完消息,可以向主控芯片发送中断信号,进而进入中断处理程序,这样自然而然也就不会有丢帧问题发生。基于该思路,自然可以直接使用LINUX系统的接口来写程序,但我还是觉得能用库就用库吧。这里选择的是boost::asio::serial这个库,主要代码如下:#include "ros/ros.h"#include "sensor_msgs/Imu.h"#include "imu.hpp"#include <Eigen

2020-12-19 20:57:55 847 3

原创 windows下git clone报错:protocol ‘https‘ is not supported

参考链接:https://stackoverflow.com/questions/53988638/git-fatal-protocol-https-is-not-supported#翻译一下,windows中一半使用的MINGW来控制Git Bash,而有时候会不注意地使用ctrl+V粘贴仓库地址,这个操作在MINGW中无效,且会引入一个隐藏的字符,导致地址出错。处理方法就是重新再来一次,这一次直接用鼠标右击,选择paste。Done。...

2020-09-07 17:28:57 394

原创 外星人装Ubuntu18.04

有几点需要注意:视U盘中的启动盘的情况,可能需要外星人在BIOS(按F2)中开启lagency才能使用。但安装完成后,重启时应当再进入BIOS,改回UEFI,否则将会跳过GRUB画面,也就无法进入编辑模式。有一定概率,装完系统后,进入ubuntu,但是logo消失后会黑屏。这其实并非引导的问题,而是nvidia显卡驱动的问题,此时可以搜索网上相关的资料,大致方法是在grub界面按e进入编辑模式,添加achi_iso=linux nomodset。这样会直接以最原始的显卡驱动进入系统,安装相应的nvid

2020-08-25 18:33:19 1312

原创 Ubuntu18.04跑SLAM和navigation遇到的问题及解决方案

文章目录用rqt工具后,总是会报错用rqt工具后,总是会报错xyw@xyw-GL552JX:~$ rosrun rqt_tf_tree rqt_tf_tree[ERROR] [1597288744.882527704]: Skipped loading plugin with error: XML Document ‘/opt/ros/melodic/share/rqt_virtual_joy/plugin.xml’ has no Root Element. This likely means th

2020-08-13 11:25:54 920

原创 Ubuntu系统代理修改

升到18.04后, vs code无法访问扩展商店,git无法正常clone。尝试过许多的方式,但显然都没有找到症结。这两者的共同点是,都与网络有关,而我的电脑的确是走了代理的,因此,优先考虑是代理问题。下面是修改方案:首先,应当保证设置->网络中的proxy为自动的。其他选项可能也可以,我没有尝试。然后,看一下/etc/enviroment里的内容:cat /etc/enviromentPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/us

2020-08-07 10:59:45 2076

原创 apt-get update错误之:Could not handshake:The TLS connection was non-properly terminated.[IP:xxxx]

今天在把电脑从Ubuntu16.04利用do-release-upgrade升级到了Ubuntu18.04,惯例update一下,结果就开始报错。具体信息如下:hurricanezj@xx-Alienware-17-R4:~$ sudo apt-get updateIgn:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic InReleaseIgn:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bio

2020-08-05 12:20:39 7881 4

原创 如何安全的从ubuntu16.04升级到18.04?

按照ubuntu官方发布计划,ubuntu16.04将在2021年4月停止工作,加上新出的一些硬件和算法都是考虑了到18.04的兼容,因此,最近开始考虑升级系统的事情。0.备份无论对系统做什么操作,都应当注意备份。我主要进行了数据的备份,至于系统的备份,可以百度下ubuntu的备份方法。1.升级16.04上所有的软件并移除无用软件sudo apt-get updatesudo apt-get upgradesudo apt-get autoremovesudo apt dist-upgrade

2020-07-22 17:29:25 25189 18

原创 惠普电脑安装Nvidia显卡驱动和cuda小记

电脑主板为惠普,显卡为GEFORCE GTX 1660,按照常规流程安装后,会循环登录,即输入密码后一闪又回到密码输入界面。该现象其实是由于电脑UEFI模式下,安全启动模式会禁止第三方硬件直接启动,而需要进行注册。这一点在安装完推荐的驱动后(ubuntu-drivers devices和sudo ubuntu-drivers autoinstall)即会进行提醒,并要求输入一个8-12位的密码,用于在下一次开机时进行确认。操作可以参考:链接一和链接二。即一共两种思路,一个是直接在BIOS关闭安全启动选项,

2020-07-13 14:19:08 2070

原创 ros的时间系统

最近很忙,也没空花时间去整理博客,因此仅按着自己能理解的方式记录。ros的时间系统对于一个初学者来说其实很难处理,因为不去管好像也可以用,但会出一些报错,去学的话又觉得费工夫,不确定用不用的上。下面是一些概念的解释。关于ros::time::now()在use_sim_time参数影响下的值。No. The value of ros::time::now() depends on whether the parameter use_sim_time is set.If use_sim_time ==

2020-07-02 17:53:25 2053

原创 C++技巧(更新中)

boost::circular_buffer<double>一个循环的buffer,大小固定,一旦超出大小后,新的数据会在首端或末端自动覆盖,效率高于stl中的deque和vector。https://blog.csdn.net/mo4776/article/details/79543994

2020-06-29 15:25:32 96

原创 Linux命令行学习(1):环境变量

文章目录开篇语1. 环境变量与局部变量1.1 环境变量1.2 局部用户定义变量1.3 删除变量2 PATH环境变量2.1 暂时修改PATH2.2 PATH的持久化tips涉及环境变量时,何时加$,何时不加?结尾开篇语这是Linux学习的第一篇。其实在Ubuntu上跑ROS,编译运行C++程序,解决兼容性问题,安装依赖库,在这段时间里,对Linux的许多命令都已经有了大概的了解。之所以,还要特地抽时间来专门学习一下,是因为我觉得仅凭借博客和Google上的碎片式的讲解虽然可以解燃眉之急,但不是长远之计。

2020-06-16 14:39:18 180

原创 如何实现两台PC之间的远程控制?SSH和mstsc以及ROS主从机

文章目录使用ssh远程登录使用ssh登录ROS的主从机设置参考链接:使用ssh:https://www.cnblogs.com/ftl1012/p/ssh.html使用mstsc:https://blog.csdn.net/dzkdxyx/article/details/77414316这一篇博客主要是为了解决电脑之间的远程控制问题,也是为之后的工控机的通信方式做准备。一开始考虑的是Windows远程控Ubuntu,后来该方案由于Wifi带宽弃置了,但毕竟掌握了,还是想留个档。在SSH和mstsc方

2020-06-11 20:59:32 3856

原创 Windows安装简记

首先,电脑能识别的启动盘分为UEFI和ISO格式。UEFI太久没用了,等用了再补充。ISO的话,是使用老毛桃制作的。里面自带了Win10的镜像。插入U盘,进BIOS选择系统,然后用DiskGenuis对硬盘格式化,分区。分区时会提醒要加ESP和MBR分区。ESP是必须的,MBR的话,我也不太清楚有什么作用,两个加起来大概几百MB。分区完成后,点开桌面上的“老毛桃装机工具“,选择镜像,选择分区(引导区选为系统盘,而不是ESP),就可以开始安装了。安装结束后,重启电脑,进BIOS选择新装的Windows即

2020-06-05 10:02:02 233

转载 [转]ROS多线程订阅消息(ros::asyncspinner)

对于一些只订阅一个话题的简单节点来说,我们使用ros::spin()进入接收循环,每当有订阅的话题发布时,进入回调函数接收和处理消息数据。但是更多的时候,一个节点往往要接收和处理不同来源的数据,并且这些数据的产生频率也各不相同,当我们在一个回调函数里耗费太多时间时,会导致其他回调函数被阻塞,导致数据丢失。这种场合需要给一个节点开辟多个线程,保证数据流的畅通。为了观察不同话题的消息被阻塞的情况,可以参考以下实验代码https://github.com/wenglihong/wlh_ros_demo/blo

2020-06-03 10:06:09 2780 1

原创 ROS的使用介绍——moveit!库

moveit!库里包含了碰撞检测,轨迹规划等功能。本着能不造轮子就不造轮子的态度,开始了对这个库的学习,由于是一个庞大的库,因此会持续更新。为检索方便,暂时不考虑分篇。另外,moveit!是有官网的,直接百度即可,别在ros里找介绍。文章目录安装按照官网提示演示Panda尝试C++API安装推荐二进制安装,简单明了:sudo apt-get install ros-kinetic-moveit按照官网提示演示PandaPanda的样子如图所示。moveit!还有其他机器人,但我懒得找了,毕竟

2020-06-02 18:33:29 1521

原创 ROS使用介绍——URDF

URDF全称为Unified Robot Description Format,中文可以翻译为“统一机器人描述格式”。与计算机文件中的.txt文本格式、.jpg图像格式等类似,URDF是一种基于XML规范、用于描述机器人结构的格式。根据该格式的设计者所言,设计这一格式的目的在于提供一种尽可能通用(as general as possible)的机器人描述规范。其实最好的urdf入门教程是ROS Wiki里的教程。这里主要是按照自己实际接触的进行总结。URDF能设置的属性有很多,但在项目刚开始时并不需要那么

2020-06-02 15:20:25 1540

原创 Ubuntu18.04安装注意须知

其余流程基本和Ubuntu16.04一样,所以可以参照我之前的那篇博客来做。但在分区时,需注意必须有一个efi格式的分区,逻辑分区,大小我定成了2G。这个分区是Ubuntu18.04要求的,不设置的话会警告,跳过的话看缘分,大概率会安装失败。我的理解是efi分区代替了Ubuntu16.04里的/boot分区,作为引导所在的分区。大小2G应该给多了,但我也懒得细究了。在选择引导硬盘的时候,我选择了efi所在的大盘(即整块硬盘,而不是分区)。安装成功。此外,在选择/home时候,我指定了另一块固态,也成

2020-06-02 14:49:25 808

原创 Terrance Force安装Ubuntu经验总结——Ubuntu安装识别不了固态硬盘怎么办?

帮公司新买的Terrance Force解决了Ubuntu 的安装问题,故留下此篇文档。其实,也犹豫过怎么起标题,毕竟这个问题其实不局限于Terrance Force,在其他品牌机上也有出现,真正的问题其实出在硬盘的协议上。需求:在本次安装里,我们的目的是在新电脑上装上Ubuntu(已经预装了Windows)。新电脑是1T固态+1T机械的组合,而我们可以允许双系统,但必须是Ubuntu安装在固态上。而双系统的兼容性要求很麻烦,因此,我们打算直接格式化掉Windows,并在固态上装Ubuntu。此为目标。

2020-06-02 12:59:56 6638

原创 松灵机器人SCOUT的ROS代码架构

松灵机器人感觉可能还是比较小众吧。明明官方的github,但是star之类的完全没有关注度,也没有issue。首先惯例是吐槽,github上的readme太简略,照着他那个做会感觉一堆问题,尤其是在你使用usb转can模块后。正确的做法是git下来,看代码里面的readme,那里面会有详细的介绍,包括如何运行webots机器人仿真。接下来是正文。...

2020-05-29 17:42:47 4087 1

原创 SLAM一些想法的记录(待整理)

文章目录Rawseeds数据集的Ground TruthGT-visionGT-laserRawseeds数据集的Ground Truth在KITTI数据集中有一个Rawseeds项目,里面有GPS,里程计,stereo,ominicam和激光测距仪,用于视觉,激光,ommidirectional,声呐和多传感器SLAM评估。官网在rawseeds-d21-part2.pdf里,介绍了视觉...

2020-05-28 21:42:22 432

原创 ROS使用nodelet还是node

知乎-为什么使用nodeletRegular nodes use TCP. This works fine for a lot of things. But if you have multiple processes that need to use messages that contain large amounts of data (like images or point clouds), packaging the message, sending it, then unpacking i

2020-05-26 21:28:15 1515

原创 Cartographers的3D数据集可视化

今天找了近两个小时的室内激光SLAM,目的是为了获得ground true,以方便检验我程序的准确度。毕竟只用室外环境的话,从效果来讲和室内还是不太一样的。室内环境更加复杂,特征更多,配准精度应该更高。哦,从这个角度讲,我可以用kitti数据集的,只要kitti数据集效果过的去,室内就没啥问题了。后续,自己用机器人来录个包,手动控制机器人沿着固定的路线走就可以了。比如走在正中间,之后想办法在点云中做出一个正中间的轨迹,用evo评估也可以的。之所以希望精确,其实还是希望能够更加科学。我以为Cartog

2020-05-11 22:19:44 778

原创 ROS使用介绍——rosbag

rosbag相当于是把一段实时数据打包成了一个bag文件,这个文件可以按照自己喜欢的方式去做处理,也可以发送给其他人。可以说,rosbag在学习ROS的过程中扮演了十分重要的角色。本文主要内容来自官网,但做了些概括和补充。官网文章目录录制包 rosbag record查看bag的信息录制包 rosbag record#录制所有的topicrosbag record -a 查看bag的信...

2020-04-29 10:45:07 7562

原创 SLAM遇到的问题及技巧

文章目录rosbag太大了,打不开rosbag太大了,打不开以LZ4格式压缩rosbag compress --lz4 slam_2019-12-14-23-24-43_filter.bag我不太清楚这种压缩的形式会不会对数据有影响,有多大的影响,也不知道要怎样的配置才可以能直接打开rosbag,反正至少这样做了能够在一秒左右就直接打开,而原来我两分钟还没有打开。那个rosbag实际大...

2020-04-27 21:07:17 2477 2

原创 ROS问题:ros与python的依赖问题

为了装kitti2bag,花费了很大功夫,还是失败了。更糟糕的是,ros环境也炸了。1.roscore环境报错找不到defusedxml其实是因为系统装了多python的缘故。经过实验,只有将python指向python2的时候,才可以正常唤起roscore。2.kitti2bag不是找不到kitti2bag就是找不到pykitti这个问题至今没有解决,我觉得解决原因还是因为我装了额外的p...

2020-04-27 17:01:13 1562

原创 Robosense数据分析

根据数据手册中的数据,Robosen16线发送一个MSOP包的间隔是1.2ms,其中包含了32*12=384点。假设车辆的运行速度为城市内的最高限速60km/h-》16.67m/s,则在1.2ms内,车带着雷达移动0.02m,即2cm。也就是说,上一个MSOP包到下一个MSOP包的坐标系会移动2cm。(另一方面,计算可知,100us发送32点,则1s就是320,000点。不过这个对于sla...

2020-04-27 16:32:23 1245

原创 SLAM的一些名词解释(自看)

文章目录ICPIterative Closest Point,迭代最近点算法。假设有A与B两帧点云,将B做T0变换变成B1,再在B1中利用K-d tree找到A中所有点的对应点。由所有对应点之间欧氏距离的平方和来作为评价函数,不断迭代,使得评价函数降低,最终将收敛于实际变换T的近似值。特点:耗时,在场景变化小的情况下匹配位姿准确,但当场景快速变化,可能无法收敛。NDTNormal...

2020-04-24 18:12:51 553

原创 hdl_graph_slam源码分析(4)——SLAM建图

文章目录写在前面4. SLAM建图4.1写在前面四个nodelet,这已经是最后一个了,代码约1000行,包含的内容也是最多的。4. SLAM建图4.1

2020-04-23 15:15:42 1314 5

原创 boost::optional的使用

网上流传的博客找来找去都是那一份,有点长,所以做个更简单的介绍。https://blog.csdn.net/skdkjzz/article/details/465201311.optional是一个容器, optional对象的结果只有两种情况:无效,或者等同于容器里的元素(元素维度必为1,但元素本身可以是个vector)。无效这种情况可以用于隐式条件判断。2.optional的赋值直接 =...

2020-04-22 15:17:49 1345

STM32F4系列手册合集.rar

该压缩包包含了STM32F4中文参考手册、STMF429开发指南、STMF407数据手册。 其中F4中文参考手册介绍了F4系列的硬件情况,F429开发指南为某开发板的开发教程,可以帮助理解MXcube以及keil的编程,F407数据手册为英文版,介绍了其端口和开放的接口。

2020-01-08

RoboSenseLidar-16资料包.zip

其中包含了Robosense开发需要的资料,包括用户手册,产品手册,Ubuntu环境下的Ros驱动。

2019-09-12

基于Matlab/SIMULINK的 OPGW感应取电仿真模型

基于Matlab/SIMULINK的 OPGW感应取电仿真模型,使用了PID算法对输出电压进行了整流稳压。2016a下可以直接运行。 分为三个部分:感应取电,不可控整流,boostPID控制的DC/DC变换,最终输出稳定的直流输出电压给蓄电池供电。

2019-04-23

空空如也

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

TA关注的人

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