自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒋程扬的部落格

高山仰止,景行行止

  • 博客(191)
  • 资源 (3)
  • 收藏
  • 关注

原创 【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)

本项目基于Qt5开发,基于CMake进行构建,可以实现一套代码同时在ROS1/ROS2系统中使用(本项目已接入CI,保证多ROS版本/系统版本可用性)软件在编译时会自动识别环境变量中的ROS1/ROS2环境并进行构建,实现ROS通信与界面隔离软件所有功能均为自行绘制实现,因此可以轻松运行在一些性能比较低的边缘设备大家如果有什么有意思的界面/功能性需求,可以提在,如有Bug请提在,必将尽快修复!请在也欢迎大家发起Merge Request一起参与项目建设~TOC。

2024-01-31 20:28:26 2337 2

原创 C++设置动态库的版本号(软链接)

假设有一个动态库:libfooSdk.so.1.1.0,其对应的三个名称如下。linux的动态库的命名格式是libfooSdk.so.x.y.z。在程序链接时只需要在cmakelist链接linkname即可。SOVERSION 对应soname的版本号。VERSION 对应relname的版本号。

2023-04-04 14:42:22 1361 1

原创 常用算法函数

absoluteDifference函数:absoluteDifference()这个函数是将t时刻与t-1时刻里程计测量数据之差转换到t-1时刻的车辆坐标系下,计算位姿差/*@desc 两个位姿的差值,算出来P1在以P2为原点的坐标系里面的坐标。*/template <class T, class A>orientedpoint<T,A> absoluteDifference(const orientedpoint<T,A>& p1,const or

2022-08-19 09:18:07 478

原创 在Jetson Nano上实现单目相机 apritag_ros识别

教程主要是参考 apriltag_ros官方git并根据自己实际使用的情况,作为笔记进行记录一,apritag_ros安装最开始采用克隆源码编译的方式进行安装,后来在Jetson nano上有opencv4与opencv3的依赖问题,后来索性直接采用二进制安装:sudo apt-get install ros-melodic-apriltag-ros二,单目相机标定安装标定包:sudo apt-get install ros-melodic-camera-calibration在终端输入

2022-04-30 11:34:53 1127 1

原创 linux sh根据进程名获取进程占用的文件描述符数量

获取进程id占用的所有文件描述符命令:ls -l /proc/$process_id/fd其中$process_id需要替换为自己要查询的实际进程id,但是ls出来的是一行一行的,不能统计描述符号数量,因此使用wc进行统计:ls -l /proc/$process_id/fd | wc -l但是进程pid会变,每次都通过ps去查的话很麻烦,这里可以直接通过输入进程名进行查询:process_name=后面需要改为自己实际的进程名:#/bin/bashprocess_name=lx_bac

2022-02-16 11:11:27 1023

原创 C++ Boost库使用笔记

boost库时c++常用的工具库,地位仅次于c++标准库,在工作中发现Boost库其实是有许多封装好的实用功能库,这里写篇笔记进行记录下,方便后面自己查阅使用一,program_options实现终端命令行参数解析在使用linux终端时会发现有许多命令行都有-h功能比如:man -h有这样一个需求,需要写一个小工具,并且小工具的接收参数可变,方便其他程序进行调用,这里我们可以通过main 函数的argc与argv接收可执行程序后面的参数,接着进行字符拆分(拆分’-’)从而判断各个参数。但是如果

2021-11-22 14:29:01 1900

原创 docker笔记-常用的一些命令

1,从远程拉取镜像docker和git类似,都有一个仓库的概念这里我们从官方拉取18.04镜像: sudo docker pull ubuntu:18.04查看本地已有的镜像:sudo docker images可以发现官方的ubuntu18.04的镜像只有63m,因为是一个基础的ubuntu系统,很多软件包都没有安装2,通过本地镜像创建一个容器创建一个基于ubuntu18.04镜像的容器 并运行/bin/bash使用–name指明当前容器的名称为ubuntu-01sudo do

2021-08-04 16:23:59 212 1

原创 Ubuntu protobuf编译安装并在Qt中使用

一,编译protobuf首先去github下载最新protobuf的C++的relaease版本:release链接这里我下载的是v3.17.3解压到任意文件夹,进入文件夹:编译安装官方提供的有教程执行如下命令进行编译安装: ./configure make make check sudo make install sudo ldconfig 执行完make install,protobuf的头文件和lib文件则被成功的复制在 /usr/local路径下此时在终端输入如下命令,

2021-07-27 19:03:32 1639 2

原创 qss设置边框阴影

以QLabel为列:设置Qss如下QLabel{border-top: 5px solid qlineargradient(y0:0, y1:1,stop: 0 #ececef, stop: 1 white);border-left: 5px solid qlineargradient(x0:0, x1:1,stop: 0 #ececef, stop: 1 white); border-bottom: 5px solid qlineargradient(y0:0, y1:1,stop: 0 whi

2021-02-25 15:07:23 5923 1

原创 笔记——QByteArray与有符号整型(int)之间的相互转换

关于10进制转换为16进制有符号转换方法:十六进制转换为有符号的10进制数(-128-127)第一位做为符号,0为正数,1为负数。对正数,后7位的值即为数值。对负数,128减后7位表示的数即为负号后的值。如1110 1100(EC)为负数,后7位的值为6c,即616+12=108,128-108=20,此数为-201111 1111(FF)为负数,后7位的值为7f,即716+15=127,128-127=1,数为-11100 1110(CE)为负数,后7位的值为4e,即416+14=78,1

2021-02-21 11:15:26 9832

原创 ROS Windows 人机交互软件开发探索与总结二(在win10平板使用ROS人机交互软件)

ROS Windows人机交互软件开发及使用以上线古月学院,欢迎感兴趣的小伙伴订阅如何实现windows ROS人机交互软件win10 ROS安装之后将opt目录及vs2019目录拷贝到平板上即可,详细可参考视频教程

2020-12-12 15:44:53 2838 1

原创 python实现串口数据转tcp数据

在电脑上虚拟出来一个串口设备,可以将程序向串口设备写入的数据转发给tcp,tcp返回的数据转发给虚拟出来的当前串口号ubuntu测试通过,windows未知一,使用方法:1,配置代码中的server_ip ="192.168.2.248"server_port=8889配置服务端tcp的端口与ip,2,运行脚本:python ***.py3,运行脚本终端会打印:虚拟串口设备名: , /dev/记住该串口号,程序像该串口设备写入的数据转发给tcp,tcp返回的数据转发给虚拟出来的当前串口

2020-12-11 10:05:07 1995

原创 ROS Qt5 librviz人机交互界面开发十三(显示话题列表)

本系列教程文章专栏:ROS机器人GUI程序开发本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:ROS Qt开发环境搭建以及基础知识介绍ROS人机交互软件的界面开发ROS Rviz组件开发方法开发交流QQ群: 797497206完整项目代码:github文章目录一,实现效果二,核心API三,程序中调用一,实现效果可以显示多机/单机话题列表,就是在终端使用rostopic list查看话题列表的功能实现,主要参考文献:ROS WIKI二,核心API主要就是这么两句:ros:

2020-08-08 12:00:25 3443 3

转载 ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)

前言在ROS librviz 人机交互软件开发系列教程中我们实现了Ubuntu端的界面开发。但是很多小伙伴问到能不能在Windows上进行开发,当时回复是不能,主要就是库的依赖问题难解决。但是我想了想ROS是有windows版本的,并且也能运行rviz之类的,既然rviz都可以在windows上运行,就说明是有库可以支持的。于是本人又进行了一番探索与总结.本篇教程主要是介绍ROS Windows开发环境的搭建,ROS Windows基本的使用。以及在Windows中编译ROS Qt功能包。实现效果1

2020-07-27 16:09:42 3217

原创 解决ROS编译安装Opencv项目出现undefined Reference to....问题

一,问题描述已经编译安装了Opencv,但是编译Opencv功能包时出现undefined Reference to…的错误二,解决方法这一般是由于多个Opencv环境冲突的问题,比如我这里编译安装Opencv3.3.1版本则需要通过以下命令安装:unzip opencv-3.3.1.zip cd opencv-3.3.1mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/loc

2020-07-10 13:52:32 7439 3

原创 ROS Qt5 librviz人机交互界面开发十二(订阅图像话题并在界面中显示)

这篇文章主要实现Qt中订阅Ros图像话题,并在界面中Label上显示一,实现效果二,添加依赖首先在功能包的CMakeLists.txt中添加依赖(ensor_msgscv_bridgeimage_transport)find_package(catkin REQUIRED COMPONENTS rviz roscpp sensor_msgs cv_bridge std_msgs image_transport )三,订阅话题 ros::NodeHandl

2020-05-12 10:56:35 4731 7

原创 ROS Qt5 librviz人机交互界面开发十一(显示机器人URDF模型)

一,实现效果二,核心代码和前面创建图层一样,通过manager_创建一个图层: rviz::Display* RobotModel_=NULL;//显示robotModel void QRviz::Display_RobotModel(bool enable) { if(RobotModel_==NULL) { RobotModel_=manager_->createDisplay("rviz/RobotModel","Qrviz Ro

2020-05-12 10:43:07 4059 6

原创 ROS多工作空间覆盖导致部分工作空间环境变量不生效问题

这个问题其实挺早就遇到过了,只是没有进行记录,这次在虚拟机中重新搭建环境再次遇到,于是记录下参考资料:添加链接描述1,问题描述明明在~/.bashrc文件下source了工作空间目录了,但是却在环境变量中找不到相关得包,甚至有时候catkin_make命令都找不到2,unset ros包环境通常情况下ROS包环境以及被污染,处理前需要在终端执行:unset ROS_PACKAGE_P...

2020-05-05 18:18:29 3197 5

原创 opencv视频拆分为图片帧,帧合成视频(mp4,avi)软件,附完整项目

项目需要,对视频进行处理,需要将视频拆分为图片帧,拆帧分为三种模式:自定义拆帧(指定开始时刻和结束时刻,并拆分为图片帧)等长拆帧 (间隔一定时长,将每段时长视频帧进行拆分)截取单帧 (截取某个时刻的画面帧)视频合成 (将某一文件夹下的图片合成为视频支持avi,mp4)一,加载视频二,自定义拆帧三,等时长拆帧四,截取单帧五,帧合成视频六,完整项目g...

2020-05-04 16:51:27 3885 1

原创 ROS Melodic使用乐视奥比中光深度摄像头

一,安装依赖sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros二,安装ros包kinetic版本可以直接使用apt安装:sudo apt-get install ros-$ROS_DISTRO...

2020-04-15 15:29:28 3126 4

原创 ROS Qt5 librviz人机交互界面开发十(实现定点返航功能)

这个功能实现起来也不难,主要就是先监听amcl_pose话题,获取小车在地图上的实时位置,如果点击设置返航点了则记下此位置,点击返航时则把该位置作为返航目标话题发送出去一,配置package.xml由于获得机器人位置的话题类型是geometry_msgs所以需要添加功能包对此话题的支持在package.xml文件添加如下两行: <build_depend>geometry_ms......

2020-04-13 20:42:28 2402

原创 ROS Qt5 librviz人机交互界面开发九(调用外部Qt库,实现播放音频)

我们知道在原生Qt环境中为qt添加外部库的话直接在pro文件里面添加就行了但是我们的GUI项目是利用cmakelist.txt进行编译的,因此我们添加外部库时只能在dcmakelist.txt中进行添加这里我主要想实现播放音频的功能,实现返航和设置返航点的语音提示则就需要添加 QMultimedia库一,安装该库使用系统命令行安装Multimedia库sudo apt-get ins...

2020-04-13 16:28:37 1243 1

原创 ROS Qt5 librviz人机交互界面开发八(实现导航功能的完整显示)-全网首发

在上一篇教程我们已经实现导航的初始点和目标点的设置:ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)-全网首发这一篇主要实现完整显示,在文章末尾有完整项目地址哦~一,显示效果设置初始点:设置目标点:二,核心代码如果看过前几篇博客,其实也就是添加几个图层:核心代码: //显示导航相关 void QRviz::Display_Navigate(bool......

2020-04-11 20:24:33 4044 1

原创 ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)-全网首发

在前面几篇教程中我们已经实现了订阅map话题,这篇我们主要就是实现rviz中的设置目标点和初始点的功能一,实现效果:在地图上选点后librviz就会自动进行变换,发布目标点信息实现如下:可以发现控制台提示已经发布了位置点话题:在下一篇博客继续实现完整导航功能二,核心代码其实核心代码也就两三句,但是目前网上关于librviz的资料少之又少,连官方都没有api说明,只有最简单的一个de......

2020-04-11 09:51:10 4435 20

原创 ROS Qt5 librviz人机交互界面开发六(显示激光雷达点云数据)

最终显示效果:如果按照本人前几篇博客的话进程的话,就很容易实现这个功能了,主要就是用manager添加一个display:核心代码://显示激光雷达void QRviz::Display_LaserScan(bool enable,QString topic){ if(laser_==NULL) { laser_=manager_->createDi...

2020-04-08 19:54:10 4219 2

原创 ROS Qt5 librviz人机交互界面开发五(订阅map话题)

这一篇教程在教程四的基础上进行修改,修改了部分bug,实现了map图层的添加,显示,放大,缩小等:qrviz.h#ifndef QRVIZ_H#define QRVIZ_H#include <QVBoxLayout>#include <rviz/visualization_manager.h>#include <rviz/render_panel.h&g...

2020-04-08 12:26:05 4079 13

原创 ubuntu录制动图及视频

下载byzanz录制工具在ubuntu软件中心搜索byzanz或者通过apt-get下载sudo apt-get install byzanz下载完成后打开命令行输入byzanz-record --help-d 动画录制的时间,默认录制10秒-e 动画开始延迟-x 录制区域的起始X坐标-y 录制区域的起始Y坐标-w 录制区域的宽度-y 录制区域的高度那么怎么知道我要录...

2020-04-06 15:39:07 254

原创 Ros机器人Rviz Qt5插件开发(1)——机器人速度控制插件开发

一,创建功能包在工作空间src目录下:catkin_create_pkg cmd_control roscpp rviz std_msgs二,配置功能包2.1添加类到功能包src目录:2.2添加plugin描述文件plugin_description.xml到功能包根目录: <library path="lib/cmd_control"> <clas...

2020-04-06 12:31:45 4802 5

原创 ROS Qt5 librviz人机交互界面开发四(添加rviz显示界面)

创建librviz界面类:qrviz_widget.h#ifndef QRVIZ_WIDGET_H#define QRVIZ_WIDGET_H#include <QWidget>#include <rviz/visualization_manager.h>#include <rviz/render_panel.h>#include <rvi...

2020-04-05 15:26:07 16881 23

原创 ROS Qt5 librviz人机交互界面开发三(实现控制机器人速度与方向)

我这里主要就是参考teleop_twist_keyboard项目的源代码,移植到自己程序一,首先在ui界面添加按钮(注意按钮上显示的文字):同时在ui界面设置每个按钮的shortcut,就能实现键盘控制:二,关联这些按钮的点击事件到同一槽函数 //绑定速度控制按钮 connect(ui.pushButton_i,SIGNAL(clicked()),this,SLOT(slot_c......

2020-04-05 10:56:11 7498 14

原创 Qt 设置子窗体打开后不可操作父窗体

使用setWindowModality(Qt::ApplicationModal);方法即可实现阻塞除当前窗体外的其他所有窗体 addtopic_form=new AddTopics(); //阻塞其他窗体 addtopic_form->setWindowModality(Qt::ApplicationModal); addtopic_fo...

2020-04-03 18:00:41 6707

原创 qt设置父窗体关闭后同时关闭子窗体

首先重写closeEvent:并加入这一行代码即可this->setAttribute(Qt::WA_DeleteOnClose);void MainWindow::closeEvent(QCloseEvent *event){ //关闭时释放内存 this->setAttribute(Qt::WA_DeleteOnClose); WriteSettings()...

2020-04-03 17:43:08 2017 2

原创 Qtreewidget的使用及添加控件实现属性编辑器(textbox,combox,spinbox等)

之前使用treeview想要添加标准控件发现好像不能添加,查找资料发现可以使用treewidget实现:实现效果:主要是使用setItemWidget()方法实现添加控件,主要代码://treeWidget_rviz ui->treeWidget_rviz->setWindowTitle("Displays"); ui->treeWidget_rviz-&g...

2020-04-03 13:13:53 6461

原创 ROS Qt5 librviz人机交互界面开发一(配置QT环境)

一,首先安装ros对qt pkg的支持sudo apt-get install ros-melodic-qt-createsudo apt-get install ros-melodic-qt-build这样就能通过:catkin_create_qt_pkg命令创建ros gui包了:在src目录下创建包:catkin_create_qt_pkg qt_ros_test二,安装......

2020-03-28 16:59:21 25229 83

原创 catkin_create_qt_pkg:未找到命令

以下两行命令解决(注意换为自己的版本号):sudo apt-get install ros-melodic-qt-createsudo apt-get install ros-melodic-qt-build完美解决:

2020-03-28 12:10:32 3045 5

原创 c++ String类的实现

主要是通过这个例子,理解拷贝构造函数和赋值函数的区别:代码:#include <iostream>#include <string.h>using namespace std;class String{ public: //构造函数 String(char *str); //拷贝构造函数 String(const String& ot...

2020-03-11 16:36:09 170

原创 c++动态生成二维数组

动态生成一维数组是使用:int *a=new int[3];动态生成二维数组就比较麻烦了:int row,column; cin>>row>>column; //方法一 //申请空间 //先申请指针的指针 int ** a = new int *[row]; //再给每行分配内存 for(int i = 0;i < row;i++) a[i]...

2020-03-09 16:35:25 468

原创 数据库面试题

文章目录DML,DDL,DCL分别使用什么命令DML,DDL,DCL分别使用什么命令DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)...

2020-03-09 10:54:34 160

原创 前缀表达式(波兰式),中缀表达式,后缀表达式(逆波兰式)

一,中缀表达式中缀表达式就是常见的运算表达式,如(3+4)×5-6二,前缀表达式前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前比如:- × + 3 4 5 6前缀表达式的计算机求值:从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即...

2020-03-07 17:14:19 547

原创 c++产生随机数

c++没有产生随机数的方法,需要用rand(),和srand()在stdlib.h中;rand()%n 产生[0,n)之间的整数通用公式:a + rand() % n;其中的a是起始值,n是整数的范围#include <iostream>#include <stdlib.h>#include <time.h> using namespace std...

2020-03-05 09:44:24 629

arduino-1.8.10-linuxaarch64.tar.xz

jetson nano arduino的安装包 解压缩后执行sudo install.sh安装。

2020-02-06

roboware-studio_0.1.0-1475246269_amd64.deb

ROS机器人开发IED,避免反复进行书写编译选项,有代码提示等

2019-07-12

Mnist手写图片训练集

包含文件: t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz 训练集,测试集

2019-04-22

空空如也

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

TA关注的人

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