<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[登龙的专栏]]></title><description><![CDATA[文章首发公众号「登龙」]]></description><link>https://blog.csdn.net/cdeveloperV</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; cdeveloperV]]></copyright><item><title><![CDATA[ROS 八叉树地图构建 - 给 octomap_server 增加半径滤波器！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107893594</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107893594</guid><author>cdeveloperV</author><pubDate>Sun, 09 Aug 2020 14:18:51 +0800</pubDate><description><![CDATA[为了在每帧点云中滤除噪声点，选择了半径滤波器，也用高斯滤波器测试过，但是没有半径效果好，这里记录下在 octomap_server 中增加半径滤波器的步骤，并在 launch 中配置滤波器参数。
一、半径滤波器基本原理
放一张汇报用的 PPT 截图：

原理很简单就是判断一个点云周围（半径 R）有没有足够多（K）的邻居点，如果没有就删除这个点，否则就保留。
二、基本用法
我一般学习技术喜欢到官网看最原始的教程：Removing outliers using a Conditional or RadiusOu]]></description><category></category></item><item><title><![CDATA[ROS 八叉树地图构建 - 使用 octomap_server 建图过程总结！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107889724</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107889724</guid><author>cdeveloperV</author><pubDate>Sun, 09 Aug 2020 09:14:53 +0800</pubDate><description><![CDATA[构建语义地图时，最开始用的是 octomap_server，后面换成了 semantic_slam: octomap_generator，不过还是整理下之前的学习笔记。
一、增量构建八叉树地图步骤
为了能够让 octomap_server 建图包实现增量式的地图构建，需要以下 2 个步骤：
1.1 配置 launch 启动参数
这 3 个参数是建图必备：

地图分辨率 resolution：用来初始化地图对象
全局坐标系 frame_id：构建的全局地图的坐标系
输入点云话题 /cloud_in：作为建图的]]></description><category></category></item><item><title><![CDATA[ROS 八叉树地图构建 - 安装 octomap 和 octomap_server 建图包！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107889660</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107889660</guid><author>cdeveloperV</author><pubDate>Sun, 09 Aug 2020 09:07:51 +0800</pubDate><description><![CDATA[项目要用到八叉树库 Octomap 来构建地图，这里记录下安装、可视化，并启用带颜色的 Octomap 的过程。
一、Apt 安装 Octomap 库
如果你不需要修改源码，可以直接安装编译好的 octomap 库，记得把 ROS 版本「kinetic」替换成你用的：
sudo apt-get install ros-kinetic-octomap*
上面这一行命令等价于安装以下的 octomap 组件：
sudo apt-get install ros-kinetic-octomap ros-kineti]]></description><category></category></item><item><title><![CDATA[2020 - 08 - 07 - 4 周的简单总结]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107889592</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107889592</guid><author>cdeveloperV</author><pubDate>Sun, 09 Aug 2020 08:59:39 +0800</pubDate><description><![CDATA[上次是 2020 - 07 - 12 总结的工作，这次隔了一个月再次总结，其实只工作半个月，后面 2 周放假了，前 2 周的总结如下。
一、工作方面
1.1 持续做好工作计划
之前自己在每天工作开始之前，会在有道笔记本中简单列出一天中要完成的任务，这个慢慢养成了习惯，这两周仍然会每天写下简单的计划，但是自己并没有感觉到因为被动坚持而带来的不舒服，反而仅仅是一种习惯了。
1.2 Bug 总会解决的
这 2 周在工作中遇到不少问题，例如程序的 Bug，某个第三方库安装不上去等等，虽然当时尝试很多种方法都失败了，]]></description><category></category></item><item><title><![CDATA[Ubuntu 16.04 配置开机自动挂载 NTFS 机械硬盘！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107647294</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107647294</guid><author>cdeveloperV</author><pubDate>Tue, 28 Jul 2020 22:41:18 +0800</pubDate><description><![CDATA[台式机有 2 个硬盘，一个固态，一个机械，每次启动 Ubuntu 后要手动从文件管理器里面挂载，并且挂载的权限都是 777，所以按照网上的方法简单配置了下自动挂载，并设置普通的权限，这是挂载一个分区的结果，目录权限设置为 755，文件权限设置为 644：

下面简单介绍下过程，挺简单的，一行命令即可搞定！
配置 /etc/fstab 文件
打开 /etc/fstab 文件，在这个文件中配置硬盘自动挂载命令：
sudo gedit /etc/fstab

在末尾添加一行自己硬盘的挂载命令：

UUID=723]]></description><category></category></item><item><title><![CDATA[从 0 开始机器学习 - 机器学习系统的设计]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623348</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623348</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:40:38 +0800</pubDate><description><![CDATA[一、构建算法的推荐步骤
当我们遇到一个问题，比如预测房价，我们想要用机器学习算法来更好的解决这个问题，推荐的步骤如下：
1.1 实现一个简单的算法
建议先花点时间实现一个简单能用的算法，比如线性回归预测房价，不需要一开始就花很多时间设计复杂的算法（在软件开发中叫避免过早优化），你可以先实现能用的算法，然后利用上篇文章从 0 开始机器学习 - 机器学习算法诊断中的学习曲线等诊断法来分析算法的优化方向，这样一个简单的算法就成为了优化问题的好工具！
1.2 分析学习曲线
有个简单的算法后，我们就可以画出学习曲线了]]></description><category></category></item><item><title><![CDATA[Ubuntu Install kitti2bag]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623313</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623313</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:36:45 +0800</pubDate><description><![CDATA[项目需要测试建图效果，但是目前我们自己的语义分割训练的效果不是太好，外参矩阵标定的精度也不高，所以打算使用 KITTI 数据集作为测试，为此需要将 KITTI 数据集转为 bag 包方便回放，这里要安装一个 kitti2bag 的工具，记录下安装过程，并不是一步到位。
1. 更新 pip 安装 kitti2bag
安装前提示我更新 pip，我用的 Python2.7 使用的是 pip：
pip install --upgrade pip
安装 kitti2bag：
pip install kitti2bag]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - 解决不同工作空间存在相同功能包的问题]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623294</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623294</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:36:08 +0800</pubDate><description><![CDATA[昨天把一个工作空间的 lidar_camera_fusion 包拷贝到另外一个工作空间编译，但是名字没有改变，导致 source后系统存在 2 个 lidar_camera_fusion 包，使用的时候总是错误地启动另外一个。
解决方式：把其中一个包的配置信息改变即可，要改变的文件有

CMakeLists.txt
package.xml

在 CMakeLists.txt 中更改项目名和输出的可执行文件名：
project(更换项目名称)

add_executable(更换可执行文件名称
  src/l]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - 编写一个 launch 启动多个节点]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623278</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623278</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:35:28 +0800</pubDate><description><![CDATA[1. 增加 source 到 bashrc 中
为了不用在小车的 Ubuntu 上每次都 source 自己的工作空间，我把自己的 workspace 加到 ~/.bashrc 文件末尾：

然后重启 shell，之后就会自动 source 我得工作空间，可以使用 roscd 直接进入指定包中：
roscd pkg_name
2. 编写启动 launch
每次调试小车，都要分别启动很多节点，比如融合、建图、Loam、Rviz 等，所以我把这些节点全部配置在一个 launch 中启动，直接一行命令启动，这样调]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - 添加一个 TF 帧]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623216</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623216</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:34:25 +0800</pubDate><description><![CDATA[在实际的机器人中往往有很多个传感器，比如我们组目前用的小车上就有相机，雷达，IMU 等，为了能够在 TF 系统中找到传感器之间的转换，就需要把每个传感器的坐标系加到系统的 TF 树中，方法很简单，下面一起来学习下。
一、TF 树的注意事项
在实际使用和调试 TF 的时候一定要时刻记住：TF 树中的一个节点可以有多个子节点，但是只能有一个父节点，并且 TF 树中不能出现回环！
一个典型的 TF 树如下：

这个 TF 树中有 3 个坐标系：

world：世界坐标系
turtle1：乌龟 1 的坐标系，父节点]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - 广播与接收 TF 坐标]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623188</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623188</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:31:01 +0800</pubDate><description><![CDATA[上次我们学习了 TF 的基本概念和如何发布静态的 TF 坐标：

ROS 机器人技术 - TF 坐标系统基本概念
ROS 机器人技术 - 静态 TF 坐标帧

这次来总结下如何发布一个自定义的 TF 坐标转换，并监听这个变换。
一、编写 TF 广播者
进入上次创建的 learning_tf2 包中：
roscd learning_tf2
在 src 下新建一个 turtle_tf2_broadcaster.cpp 文件，代码如下：
#include &lt;ros/ros.h&gt;

// 存储要发布的坐]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - ROS 与 PCL 的点云类型转换]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107623120</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107623120</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:27:12 +0800</pubDate><description><![CDATA[<p>在图像和点云的融合节点中，做了一个点云格式的转换：</p>
<ul>
<li>ROS 点云 sensor_msgs::PointCloud2 -&gt; PCL 第一代点云 pcl::Point]]></description><category></category></item><item><title><![CDATA[Ubuntu 修复不能访问正确挂载机械硬盘的问题]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107622992</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107622992</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:20:59 +0800</pubDate><description><![CDATA[<p>老师给新买了台电脑，但是只有 100G 固态，所以需要给主机加装了一个机械硬盘，但是装好后到 Ubuntu 内不能正确挂载：</p>
<p><img src="https://dlonng.os]]></description><category></category></item><item><title><![CDATA[Ubuntu install sublime-text3]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107622900</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107622900</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:16:36 +0800</pubDate><description><![CDATA[<p>我工作中频繁使用 sublime，目前的版本有点低，看起来很丑，所以简单地升级下，记录下步骤：</p>
<h3 id="1-卸载旧版本">1. 卸载旧版本</h3>
<pre><code cla]]></description><category></category></item><item><title><![CDATA[Ubuntu 16.04 安装 NVIDIA 显卡驱动！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107622880</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107622880</guid><author>cdeveloperV</author><pubDate>Mon, 27 Jul 2020 22:15:51 +0800</pubDate><description><![CDATA[<p>新买的电脑装的的英伟达独立显卡，虽然 Ubuntu 上有开源 Nvida 驱动可以用，但是界面总是卡卡的，所以安装了下官方的驱动，瞬间丝滑无比，以下是我的方法，简单粗暴。</p>
<h3 id=]]></description><category></category></item><item><title><![CDATA[从 0 开始机器学习 - 机器学习算法诊断]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107386049</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107386049</guid><author>cdeveloperV</author><pubDate>Thu, 16 Jul 2020 16:24:54 +0800</pubDate><description><![CDATA[今天跟大家分享下如何诊断一个算法是否存在偏差或者方差的问题，以及如何选择优化算法的方向。
一、如何确定下一步的计划？
当我们设计了一个机器学习算法，比如线性回归或逻辑回归，并且算法已经能够正常工作，只是效果还不是太好，那用什么方法来提高算法的性能或者准确度呢？或者说在想办法提升性能之前，有没有一种方法来告诉我们下一步对我们设计的机器学习算法该采取什么步骤，比如：

获得更多的训练样本
尝试减少特征的数量
尝试获得更多的特征
尝试增加多项式特征
尝试减少正则化程度
尝试增加正则化程度
...

上面 6 种思]]></description><category></category></item><item><title><![CDATA[数据结构与算法 - 时空复杂度分析]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107385539</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107385539</guid><author>cdeveloperV</author><pubDate>Thu, 16 Jul 2020 16:13:08 +0800</pubDate><description><![CDATA[这周主要总结了时间复杂度的学习，跟小伙伴们分享下，欢迎指正。
一、为何需要分析算法复杂度
挺多同学本科都学习过数据结构和算法这门课，但是有没有想过这门课到底是解决什么问题？科学家设计这些数据结构和算法是要干嘛？
其实，最终的目的只有一个：让我们写的代码在计算机上运行的速度更快，使用的内存更省！，可是如何才能知道我们写的代码使用多少运行时间和内存呢？这就需要分析算法时间复杂度和空间复杂度，只有学会分析这 2 者，才能知道我们设计的算法到底有没有性能的提升，不然你费了很大功夫想了一个算法，却发现运行速度慢如乌龟]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - 静态 TF 坐标帧]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107217917</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107217917</guid><author>cdeveloperV</author><pubDate>Wed, 08 Jul 2020 23:52:34 +0800</pubDate><description><![CDATA[上次总结了 ROS 机器人技术 - TF 坐标系统基本概念，这次学习下如何发布静态坐标转换，静态 TF 官方教程在这里。
一、我在项目中应用 TF 的方法
先说下这个静态坐标转换在我项目中的应用，我在建图的时候需要一个 rslidar -&gt; world 的 TF 变换，但是系统 TF 树中只有师兄 lego_loam 的 base_link -&gt; world的转换，所以为了获取 rslidar -&gt; world，我用 Kinetic 提供的工具手动发布了一个静态的 TF：
# 欧拉角
ro]]></description><category></category></item><item><title><![CDATA[ROS 机器人技术 - rosbag 详细使用教程!]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/107010524</link><guid>https://blog.csdn.net/cdeveloperV/article/details/107010524</guid><author>cdeveloperV</author><pubDate>Sun, 28 Jun 2020 23:49:19 +0800</pubDate><description><![CDATA[在 ROS 系统中，可以使用 bag 文件来保存和恢复系统的运行状态，比如录制雷达和相机话题的 bag 包，然后回放用来进行联合外参标定。
这里记录下我学习官方的 rosbag 教程的笔记：ROS rosbag
我常用的几个操作
虽然命令很多，但是我目前在工作中常用的命令就如下几个：
1. 录包
录制所有话题：
rosbag record -a
录制指定话题，设置 bag 包名：
rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx
有时候]]></description><category></category></item><item><title><![CDATA[我常用的 VSCode CC++ 插件！]]></title><link>https://blog.csdn.net/cdeveloperV/article/details/106964074</link><guid>https://blog.csdn.net/cdeveloperV/article/details/106964074</guid><author>cdeveloperV</author><pubDate>Thu, 25 Jun 2020 23:23:05 +0800</pubDate><description><![CDATA[我平常用 vscode 码字，经常使用一些 C/C++ 插件，这里整理下分享给大家，不过插件开启太多会造成 vscode 卡顿，所以如果内存不太够，建议关掉一些不必要的插件。
一、主题和图标
以下这些主题都还不错：

Atom One Dark Theme
Material Theme
Monokai Pro
One Dark Pro
One Dark Theme（我用这个）
One Monokai Theme
Sublime Material Theme

这个图标看着比较舒服：

vscode-icon]]></description><category></category></item></channel></rss>