自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lzy6041的博客

vx:Liuzy_123456 欢迎沟通交流问题

  • 博客(89)
  • 收藏
  • 关注

原创 YOLO V3学习(3)——基于darknet ros的目标检测 基于gpu版本

问题一:darknet_ros 会开始下载yolov2-tiny.weights、yolov3.weights和yolov2.weights,但国内下载太慢,可以直接去CMakelists.txt里注释掉。另外需要说明一点的是从如下链接下载文件放入/darknet_ros/darknet_ros/yolo_network_config/weights文件中。问题二:需要更改相应的gencode,具体可以参考darknet中各种显卡对应。我这里是1660Ti.下载darknet_ros包和darknet包。

2024-02-29 16:55:29 418 1

原创 autoware之twist_filter节点

总的来说,twist_filter是对线速度和角速度进行一个满足车辆运动学的检验,不能超过给定横向加速度阈值,否则做减速处理。lowpass_gain_linear_x 速度的低通滤波系数。lowpass_gain_angular_z 角速度的低通滤波系数。也就是说一阶低通滤波算法采样本次采样值与上次滤波输出值进行加权,得到有效滤波值。lowpass_gain_steering_angle 转角的低通滤波系数。Y(n)为本次滤波输出值;

2023-12-07 22:58:48 424

原创 linux C++实现线程绑定CPU

嵌入式里面我们会使用到,随着产品芯片性能提升,我们也会有很多功能,以及很多进程产生运行,这个时候我们在任务调度调优的时候,把一些进程绑定到固定cpu运行,下面就来分享一下cpu绑定运行的过程:首先运行的环境需要多核,大家可以按照下面命令进行查询对应设备的cpu数量使用cat /proc/cpuinfo查看cpu信息,如下两个信息:processor,指明第几个cpu处理器cpu cores,指明每个处理器的核心数。

2023-11-07 11:07:33 583

原创 imu的静止零偏噪声标定与积分

备注:这款IMU是九轴IMU,融合了磁力计,也就是原始的yaw角指北是0度,范围为0-360°,顺时针增大。回答:你可以把*q_rr去掉,重新编译后,通过TF转换看到,实际上这个坐标是倒着的,还需要绕X轴转180°才是我们ROS里面用到的坐标系。只左乘q_r的话是可以完成TF的坐标变换的,但是我们通常在ros里用到的坐标系是前左上,所以还要通过右乘q_rr来修正坐标系的位姿。示例使用的Imu为轮趣科技 n100 mini其中imu出来的数据的坐标系是基于ROS坐标系的。输入的单帧Imu示例。

2023-10-24 14:22:06 232

原创 采用ros同步机制 message::filter将自定义消息在类中的实现时间同步

【代码】采用ros同步机制 message::filter将自定义消息在类中的实现时间同步。

2022-12-12 18:00:00 559 1

原创 关于WGS80经纬度坐标选定原点转UTM平面坐标的几种测试

gps

2022-10-13 16:09:56 1071

原创 C++ mark ros系统“秒”转换成“年月日时分秒+毫秒”

void getDate(long long time) { int seconds = time / 1000000000 + 8 * 3600;// time zone +8 int days = seconds / 86400; int year = 1970 + (int) (days / 1461) * 4; // recycled in 4 years = 1461 days int month = 0; int day = days % 1461;

2022-07-08 17:01:50 1644

原创 autoware之轮式里程计计算

...

2022-06-28 23:11:06 1386

原创 kitti2bag

kitti

2022-06-24 16:46:57 551 1

原创 catkin_make install安装与打包ros功能包

假设有以下工程文件:其中bus_control是主文件,而pure_pursuit、planing均是其依赖文件。在bus_control层级的CMakeLists.txt写法:cmake_minimum_required(VERSION 3.0.2)project(bus_control)# set(CMAKE_BUILD_TYPE Release)SET(CMAKE_BUILD_TYPE Debug)## Compile as C++11, supported in ROS Kineti

2022-01-08 15:05:54 4163 1

原创 C++知识点(19) 纯虚函数与抽象基类

test.h#ifndef TEST#define TEST#include<iostream>using namespace std;class Shape//抽象基类,包含一个或一个以上纯虚函数{private: /* data */public: virtual float area() const {return 0.0;}//虚函数 virtual float volume() const {return 0.0;}//虚函数 virt

2021-09-25 20:43:33 119

原创 数据处理:修改rosbag topic的frame_id

1.安装srv_tools工具git clone https://github.com/srv/srv_tools.git将其作为功能包放到ros工作空间下编译即可。2.使用示例rosrun bag_tools change_frame_id.py -t /blrobot/drivers/lidar_front/velodyne_points -f /laser -i 2021-08-17-11-00-18.bag -o new.bag解释:rosrun bag_tools change_fram

2021-09-17 13:45:18 2179

原创 C++知识点(18) unordered_map

unorder_map是基于哈希表实现,不允许有重复的key值(1) find()iterator find(const key_type &key)如果key存在,则find返回key对应迭代器,通过迭代器的second获取值;如果key不存在,则返回unordered_map::end();因此可以通过map.find(key)==map.end()来判断key是否存在于unordered_map中。(2)count()size_type count(const key_type &

2021-09-15 21:55:39 1901

原创 机器人导航:move_base的actionlib机制

通过actionlib客户端发布目标点 让actionlib 服务器响应。在actionlin客户端#include <ros/ros.h>#include <tf/transform_listener.h>#include <nav_msgs/Odometry.h>#include <string.h>#include <move_base_msgs/MoveBaseAction.h>#include <actionlib/

2021-09-11 12:29:46 1041 2

原创 C++ Json实现外部参数配置

在项目开发过程中经常会通过配置文件去设置一些外部参数,前期也有讲到过用yaml配置参数,这里写了一个用json配置参数的示例。配置参数:{ "info": { "name": "I am Mr.liu", "year": 18, "id": 123456, "chinese": 98, "math": 99, "

2021-08-29 09:41:22 468

原创 数据处理:map2world的初始对准

在gnss和lidar融合定位的过程中有这样的一个问题,需要将雷达点云匹配的位姿转换到可以将相对于map系的gnss位置和laser位置分别记录到gnss.csv和laser.csv中。然后将位置点分别保存到sensor_msgs::PointCloud2类型的点云,最后再用ICP的方式找到两者的旋转和偏移。...

2021-08-18 20:02:35 436 3

原创 C++知识点(17)C++关键字static特点总结

一、面向过程设计1.修饰变量1.1 静态全局变量在声明它的整个文件可见,文件以外不可见。1.2 静态局布变量(1)在执行到该对象声明处被首次初始化,后续函数调用,不再初始化;(2)作用于局部作用域,当定义函数结束,作用域也结束;2.修饰函数2.1 全局静态函数(1)只能在声明它的文件中可用,不能被其它文件所用;(2)其它文件可以定义相同名称的函数二、面向对象设计1.修饰j静态数据成员(1)该类所有对象共有,只分配一次内存;(2)定义时即初始化,只限类外,eg. int Box:h

2021-08-08 11:31:10 201

原创 ROS知识点(9)_利用Eigen求解平方根

eg.点A(x1,y1) 点B(x2,y2),求解两点间距离Eigen::Vector2f rad_dir(x1-x2,y1-y2);Eigen::Vector2f Q=rad_dir.cwiseProduct(rad_dir);//该表达式完成的功能是将rad_dir*rad_dir的对应点相乘。//Q=((x1-x2)^2,(y1-y2)^2)double a=Q.sum();//该步实现的是a=(x1-x2)^2+(y1-y2)^2double b=sqrt(a);//该步实现的是b=

2021-08-07 21:48:59 759

原创 C++知识点(16)智能指针shared_ptr的初始化形式

1.默认初始化的智能指针保存着一个空指针NULLshared_ptr<T> p1;if(!p1) cout<<"p1=NULL"<<endl;2.一般形式的初始化用字符串hello初始化。shared_ptr<T> p2(new T);if(p2 && p2->empty()) cout<<"p1=NULL"<<endl;用字符串hello初始化。shared_ptr<T&gt

2021-08-07 21:02:00 1745

原创 C++知识点(14)线程与并发

共享内存 同一时刻只允许一个线程使用,要对访问临界资源的代码加锁保护。该程序中三个线程中var 的访问需加锁保护,保证了三个线程不会同时对 var 进行处理。#include <chrono>#include <iostream>#include <mutex>#include <random>#include <thread>double var = 100;std::mutex mymutex;void Threadwirt

2021-05-22 18:59:02 86 2

原创 系统安装:Dell INSPIRON 7501电脑在Win10基础上安装Ubuntu1804后无法进入WIN10系统解决方法

问题描述:戴尔电脑出厂后,在BIOS里面硬盘模式设置的是RAID ON模式,如果想让Ubuntu和win系统并存,Ubuntu系统必须在ACHI硬盘模式下才能识别出来,如果改为ACHI硬盘模式,Ubuntu可以识别到硬盘,但是Win10会因为找不到硬盘程序出现蓝屏的情况。方法1:自制启动盘,重装Win10系统,再装Ubuntu。方法2:不重装系统,先在RAID ON模式下,1)进入win10系统,按Win+R 输入msconfig ,引导->打开安全模式,勾选“最小”,最后确定,重启电脑。2)按

2021-04-17 20:10:35 1027

原创 系统安装:Dell INSPIRON 7501电脑在Win10基础上安装Ubuntu1804的注意点

准备工具:用软碟通制作好的Ubuntu1804启动盘1.关闭电脑默认的快速启动项关闭电脑默认的快速启动项:开始->设置->系统->电源和睡眠->其他电源设置->选择电源按钮的功能->更改当前不可用的设置->去掉“启用快速启动”的选项->保存修改2.Bios设置五、修改Bios设置重启电脑,一直按F12,进入Bios设置界面。SATA OperationSystem Configuration->SATA Operation改成AHCI。

2021-04-17 18:20:39 912 1

原创 学习笔记:protobuf数据序列化后通过网络传输后反序列化数据

1.student.proto文件:syntax = "proto3";package EthernetCom;message student_info { double id = 1; double age= 2; enum SEX { MAlE=0; FEMALE=1; } SEX sex=3; string note=4;}2.客户端:#include<string.h>#include

2021-03-20 15:26:16 283 2

原创 坐标转换:将imu坐标系下的角速度、线速度转换到车体坐标系,参考Autoware

需求:获取geometry_msgs::TwistStamped格式的速度信息(角速度+线速度)方法1:从底盘获取线速度,imu获取偏航角速度数据,然后组合数据发布信息。方法2:通过融合定位输出的位姿(x,y,yaw),通过前后帧计算线速度和偏航角速度,然后发布信息方法1实现:头文件:#pragma once#include <ros/ros.h>#include <tf2/transform_datatypes.h>#include <tf2_geomet

2021-03-06 09:48:48 5874 2

原创 学习笔记:滑动平均滤波器

1.滤波器控制块/*滑动平均滤波器——结构体*/typedef struct SlipAveFilter{ u16 len; /*窗口宽度*/ u16 index; /*索引*/ u16 has; /*已有的数据个数*/ char isfull; /*数组数据是否已满*/ float *data; /*滤波器数组*/ float sum; /*求和*/ float res; /*滤波结果*/ } SAFiter_t;2.通过创建函数来创建一个滤

2021-03-05 15:30:46 1302 3

原创 学习笔记:txt作为系统配置文件的读取示例

1.配置文件 parameters.txtfixed=worldbase=baseodometry=odometry# Apply a voxel grid filter on incoming point clouds.grid_filter=1# Resolution of voxel grid filter.grid_res=0.2# Apply a random downsample filter on incoming point clouds.random_filter=

2021-02-25 17:42:52 283

原创 Linux知识点(10)_本地与服务器文件目录映射与挂载

将172.16.0.100服务器下的/opt/robot/,映射为本地端的/home/×××/server_linux/步骤1:分别在服务器和本地端安装nfs、rpcbindsudo apt-get install rpcbindsudo apt-get install nfs-commonsudo apt-get install nfs-kernel-server步骤2:在服务器上修改/etc/exports文件最后添加一行代码,暴露目录给本地端,并分配目录的权限给它;sudo gedit /

2020-11-06 11:20:34 730

原创 Linux知识点(8)_常用操作命令

2020-09-05 11:11:32 80

原创 ubuntu1604+qt5.9+opencv3.4环境配置

1.安装QT5.9.11.1 Qt官网下载QT5.9.1,版本选择qt-opensource-linux-x64-5.9.1.run,打开Ubuntu终端chmod +x ./qt-opensource-linux-x64-5.9.1.run sudo ./qt-opensource-linux-x64-5.9.1.run1.2 出现图形化安装界面,就和正常软件安装步骤类似,一直点击下一步即可,默认即可,中间不要进行任何操作。1.3 配置工作,在终端输入以下代码:sudo gedit /usr

2020-08-31 22:28:25 232

原创 YOLO V3学习(2)——在ROS下基于已训练好的模型实时检测对象

1 安装OpenCV2 修改Makefile文件y

2020-08-19 14:20:39 943 1

原创 YOLO V3学习(1)——基于已训练好的模型离线检测单张图片中的对象

1. 下载模型与权重文件模型下载地址:https://github.com/pjreddie/darknet权重下载地址:https://pjreddie.com/darknet/yolo/2. 编译darknet与官方数据测试说明:将下载的yolov3.weights放到backup文件夹中,然后打开Makefile文件。GPU=0CUDNN=0OPENCV=0OPENMP=0DEBUG=0对于CPU版本,若安装了OpenMP(多线程),那么设置为1,加快训练与测试点速度;对于G

2020-08-17 14:49:21 1357

原创 PCL库学习(14)_利用Qt中不同ui界面下的交互来可视化PCL中点云聚类

目标:以PCL中集成的欧式聚类为例,通过触发主界面的“segmentation”->“EuclideanClustering”然后调用出参数设置界面,最终将结果可视化到显示窗口中。具体步骤如下:1.新建.ui:右击“Form Files”->“添加”->“类”->“Qt5GuiClass”。class name命名为qeuclideancluster,然后就会生成相应的.ui,.h,.cpp文件。2.构建ui界面及对象名称修改我这里设置了这样一个简单的参数设定界面3.设

2020-08-15 09:57:52 671

原创 PCL库学习(13)_PCL中的法线估计对象与hdl-graph-slam中的法线滤波

#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/kdtree/kdtree_flann.h>#include <pcl/features/normal_3d.h>#include <pcl/surface/gp3.h>#include <pcl/visualization/pcl_visualizer.h>intmain (int ar

2020-08-06 10:32:07 591 1

原创 Linux知识点(13)_安装编译gtest中遇到的坑

1.下载gtest,release-1.8.0git clone https://github.com/google/googletest2.编译cd googletestmkdir buildcd buildcmake ..make 出现以下错误:/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO

2020-08-01 21:06:38 1105

原创 ROS知识点(2)_从bag文件中读取相应的topic数据

void readDataFromBag(const std::string &bag_name, const std::string &amcl_topic_name, const std::string &wheel_topic_name){ rosbag::Bag bag; try { bag.open(bag_name, rosbag::bagmode::Read); } catch (std::exception& e) {

2020-07-31 15:39:07 4780

原创 3D SLAM_LeGo-LOAM(2)_回环检测

Lego-LOAM的回环检测策略比较简单,它同时对距离和时间作考量。1.利用了PCL中基于半径的近邻搜索算法,以机器人当前位姿为搜索点,查找半径为7m范围内的若干个位姿;2利用时间作为约束,如果历史位姿对应时间与当前位姿对应时间的时间差太小,说明是个小回环,意义不大,作者在程序里将时间差设置为大于30s。下图表述了两种情况:上图表示机器人在正常建图的过程,下图表示机器人回到原点,开始判断是否满足回环检测的条件。对应代码也就是这一小段 // find the closest history key

2020-07-29 17:37:02 2488 4

原创 图优化算法(2)_利用gtsam库完成因子图优化简单测试与LeGo-LOAM中的因子图优化

gtsam 因子图优化

2020-07-29 11:42:16 6713 3

原创 数据预处理(18)_将单线激光雷达的LaserScan数据从极坐标下转到笛卡尔坐标系并存储

void AutoGetLine::TransScanToPoints(const sensor_msgs::LaserScan& scan_in,std::vector<Eigen::Vector3d>& Points){ size_t pts_num=scan_in.ranges.size(); Eigen::ArrayXXd ranges_d(pts_num,2);//pt_num行,2列 Eigen::ArrayXXd output_xy(pts

2020-07-24 15:07:44 1962 3

原创 PCL库学习(12)_基于voxel_grid的欧式聚类算法

本算法在autoware中有相应的实现,这里对相应的代码作相应的的注释void VoxelGridBasedEuclideanClusterNodelet::pointcloudCallback(const sensor_msgs::PointCloud2ConstPtr & input_msg){ // ros2pcl pcl::PointCloud<pcl::PointXYZ>::Ptr raw_pointcloud_ptr(new pcl::PointCloud<

2020-07-17 17:37:28 772

原创 2D SLAM_Cartographer(2)_业务逻辑

cartographer通过main()函数调用void Run()来启动程序,Run()也承接了cartographer的业务逻辑。void Run() { constexpr double kTfBufferCacheTimeInSeconds = 10.; //tf2_ros::Buffer是tf2 library的主要工具。Its main public API is defined by tf2_ros::BufferInterface. tf2_ros::Buffer tf_b

2020-07-13 15:00:20 236

空空如也

空空如也

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

TA关注的人

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