![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 50
奇幻纬度
这个作者很懒,什么都没留下…
展开
-
记录使用docker运行ros过程中遇到的问题
新问题:[FATAL] [1678250622.904302134]: Can’t open default or :0 display. Try setting DISPLAY environment variable.1、问题一:QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’最终重启docker容器,搞定。原创 2023-03-08 15:18:25 · 1550 阅读 · 1 评论 -
docker上运行ros
缺点:我在虚拟机上构建docker容器后可以顺利运行,并可以顺利运行rviz和和gazebo;但是在双系统的ubuntu18上构建docker容器后无法运行rviz和docker,估计是显卡驱动这一块的问题,折腾了一天,没解决,放弃!注意:wiki社区提供的方法有nvidia-docker1跟nvidia-docker2两种,可以根据自己电脑安装的nvidia-docker版本来选择对应的方法。我使用了这种方法,顺利在docker容器中运行rviz和gazebo。5)更改脚本权限,使脚本可以运行。原创 2022-12-31 15:13:43 · 1890 阅读 · 0 评论 -
ubuntu18.04安装docker和nvidia-docker2
旧版本的 Docker 被称为 docker、docker.io 或 docker-engine。原创 2022-12-31 14:43:37 · 2152 阅读 · 0 评论 -
记录docker容器环境配置
1、更新软件包2、安装moveit3、配置环境。原创 2022-12-30 10:57:51 · 151 阅读 · 0 评论 -
docker运行报错
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组。进行docker操作的时候未分配sudo权限。原创 2022-12-30 09:27:54 · 991 阅读 · 0 评论 -
Ubuntu18下Vscode的安装及环境配置
4.收获:基本流程就是这样,在这次安装过程中,就是明白了些json文件中那些花括号里边的参数,参考了这个博客的后半部分:https://blog.csdn.net/iamsongyu/article/details/89630951。需要更改文件里边的"includePath"参数,我开始想也找g++的包,但是无果,就想到在这里是用的clang编译的,于是在终端上whereis clang但是只有文件夹目录信息,然后用。2.安装插件:安装好后,在“扩展”中下载插件,为了C++的话就安装下图的插件就好了。转载 2022-12-01 15:27:52 · 3101 阅读 · 0 评论 -
关于action通信的学习
主要查询话题/arm_group_controller/follow_joint_trajectory/goal。可以知道这个话题的发布方是/move_group,接收方是/gazebo,是action_client发布的话题。该话题使用的消息类型是control_msgs/FollowJointTrajectoryActionGoal。注意:该轨迹数据是一起发送出来的,并非一个数据点一个数据点发送。原创 2022-11-29 20:11:17 · 266 阅读 · 0 评论 -
关于4daic的理解
① 4diac除了可以重新布置任务外,还可以重新布置单个资源重新布置资源后,可以发现,开启的两个forte port:61499 和61500中,只有61500的一个资源被重新分配② 4diac重新部署任务,有三个层级,第一是所有forte协同的全任务分配,第二是单个forte的功能块网络任务分配,第三是单个资源的功能块网络任务分配。原创 2022-11-22 09:27:18 · 538 阅读 · 0 评论 -
关于4diac的发布/订阅和客户端/服务端功能块的思考
发布/订阅功能块是多对多通信,采用组播的方式,此时的IP地址应为D类IP地址224~239,使用其他的ip地址,则SUBSCRIBE功能块接收不到。IP地址需要写SERVER端所在设备的IP地址,端口号为除forte运行外的端口号。如果使用其他的IP地址,则会报INVALID_ID错误,表明输入的ID是错误的。报DATA_TYPE_ERRPOR错误,原因是未指明RD_1的数据类型。触发服务端的RSP事件,服务端发送回数据给客户端,客户端接收到数据3。常见错误2:使用forte运行的端口号(已经被占用了)原创 2022-11-19 21:41:04 · 544 阅读 · 0 评论 -
socket服务器端和客户端通信
①创建服务器端的socket。①创建客户端的socket。④获取客户端的socket。②发起建立连接的请求。③接受服务器端的消息。④向服务器端发送消息。原创 2022-11-10 19:28:34 · 297 阅读 · 0 评论 -
派生类构造函数的执行顺序
派生类构造函数的执行顺序原创 2022-11-10 08:42:14 · 845 阅读 · 0 评论 -
构造函数、析构函数的执行顺序
② 成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。参考博客:http://www.cnblogs.com/forcheryl/p/4205497.html。② 调用成员类对象的析构函数;① 调用派生类的析构函数;③ 调用基类的析构函数。③ 派生类构造函数。原创 2022-09-12 20:43:48 · 1892 阅读 · 0 评论 -
Google chrome 浏览器提示【证书无效】问题
2、在’‘目标’'后空一格添加–ignore-certificate-errors --allow-running-insecure-content。在使用google浏览器时,访问某些网址时会显示网址不安全,查看后发现网络证书无效。1、桌面找到google浏览器图标,右键,选择属性。原创 2022-09-07 21:43:45 · 19856 阅读 · 2 评论 -
cout和printf的区别
printf 在linux中是典型的行缓冲,遇到\n回车符 或者flush操作 exit(0)程序结束时,开始进行IO操作,输出在命令行上。cout原创 2022-08-24 21:42:48 · 5737 阅读 · 0 评论 -
C++如何限制类对象只能静态分配或者只能只能动态分配
将类的构造函数和析构函数设为protected属性,这样类对象不能够访问,但是派生类能够访问,能够正常的继承。(将create设为static原因是:创建对象的时候是A *p = A::create();只有静态成员函数才能够通过类名来访问。参考资料:https://www.cnblogs.com/xiaohai123/p/16465507.html。静态分配就是A a;这样来由编译器来创建一个对象,在栈 上分配内存。动态分配就是用运算符new来创建一个类的对象,在堆上分配内存。原创 2022-08-24 15:22:38 · 404 阅读 · 0 评论 -
常见数据结构应用场景
1)有序数组具有较高的查找效率(O(log n)),而链表具有较高的插入效率(头插法,O(1)),结合这两种数据结构,创建一种貌似完美的数据结构,也就是二叉查找树。1)如果处理的数据是有序的(升序/降序),那么构造的二叉查找树就会只有左子树(或右子树),也就是退化为链表,查找效率低下(O(log n))。1)有序数组可以通过二分查找方法具有很高的查找效率(O(log n)),而链表只能使用顺序查找,效率低下(O(n))。3)频繁的查找和插入操作(可以提供O(log n)级的查找、插入和删除操作)转载 2022-08-24 09:04:58 · 610 阅读 · 0 评论 -
优先级队列priority_queue
使用这种方式,需要显示定义优先级队列的容器类型和比较函数//函数对象类 template < typename T > class cmp {public ://重载 () 运算符 bool operator()(T a , T b) {} };int x;int y;};1 , 2 };0 , 2 };1 , 3 };2 , 5 };3 , 6 };// 显式指定容器类型和比较函数 pq . push(a);while(!}.........原创 2022-08-18 10:55:22 · 19123 阅读 · 1 评论 -
C++函数模板和类模板的声明和定义问题
编译器并不是把函数模板处理成能够处理任意类的函数;编译器从函数模板通过具体类型产生不同的函数;编译器会对函数模板进行两次编译:在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。在对模板进行声明和定义的时候,通常都会将声明和定义分开书写,在.h文件里声明,在.cpp文件里定义,最后在main函数里包含.h头文件,但这样会报链接错误。...原创 2022-08-15 14:33:58 · 2915 阅读 · 0 评论 -
CMAKE的一些指令
当在-P脚本模式下运行时,CMake会将变量CMAKE_BINARY_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR设置为当前工作目录。当在-P脚本模式下运行时,CMake会将变量CMAKE_BINARY_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR设置为当前工作目录。这是cmake当前正在处理的构建目录的完整路径。..原创 2022-08-08 11:13:08 · 2369 阅读 · 0 评论 -
数据存储模式
高位字节存放在内存的低地址端,低位字节存放在内存的高地址端,如对于数字1278,其存放如下图所示。高位字节存放在内存的高地址端,高位字节存放在内存的低地址端,如对于数字1278,其存放如下图所示。符号位在所表示的数据的内存的第一个字节中,便于快速判断数据的正负和大小。1、Intel的80×86系列芯⽚使⽤⼩端存储模式。3、MIPS芯⽚采⽤⼤端,但可以在⼤⼩端之间切换。2、ARM芯⽚默认采⽤⼩端,但可以切换为⼤端。4、在⽹络上传输的数据普遍采⽤的都是⼤端。...原创 2022-08-07 15:39:52 · 253 阅读 · 0 评论 -
单例模式笔记
由于将类释放后,无法自动调用析构函数释放内存,因此采用智能指针的方式原创 2022-08-06 10:36:44 · 96 阅读 · 0 评论 -
QT的CMakeLists配置
在项目中,将QT的文件放在项目下的3rdparty文件夹下。原创 2022-08-04 20:35:41 · 2118 阅读 · 0 评论 -
笔记:Dockerfile_forte分析
FROM命令用于初始化一个新的构建阶段,并为后续指令设置基础镜像:alpine,是一个重量仅为5 MB的最小Linux发行版。它还有基本的linux工具和一个不错的包管理器APK。APK非常稳定,有相当数量的包。由于体积小,在容器中很受欢迎。MAINTAINER指令设置生成镜像的作者RUN指令将在当前镜像之上的新层中执行命令,并且提交结果。在docker build时运行。缓存可能占用大量不需要的空间。所以总是apk add用–no-cache参数运行。COPY 指令和 ADD 指令的唯一区别在于:是原创 2022-07-09 14:21:10 · 280 阅读 · 0 评论 -
使用sudo apt-get update报错:E: 无法下载 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial/main/b
E: 无法下载 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial/main/binary-amd64/Packages 404 Not Found [IP: 101.6.15.130 80]E: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。原因分析:源的问题,更换源先备份源文件修改源文件将内容替换成保存即可,重新运行sudo apt-get update本教程使用的是ubuntu18.04,其他版本清参原创 2022-07-08 17:22:20 · 17350 阅读 · 1 评论 -
C++容器概述
C++STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器STL六大组件的交互关系:1、容器通过空间配置器取得数据存储空间2、算法通过迭代器存储空间的内容3、仿函数可以协助算法完成不同策略的变化4、适配器可以修饰仿函数容器:就是各种数据结构,如vector、list、deque、set、map等,用于存放数据,从实现的角度来看,STL容器是一种模板类。定义: 在容器内部,元素的摆放是有顺序的。定义: 关联容器不计较顺序的概念,使用原创 2022-07-07 09:56:12 · 2831 阅读 · 0 评论 -
运行moveit_rviz报错 Tried to advertise on topic [/move_group/filtered_cloud] with md5sum [060021388200f
[ERROR] [1656070551.111682083, 1948.582000000]: Tried to advertise on topic [/move_group/filtered_cloud] with md5sum [060021388200f6f0f447d0fcd9c64743] and datatype [sensor_msgs/Image], but the topic is already advertised as md5sum [1158d486dd51d683ce2f1be原创 2022-06-24 19:44:47 · 1900 阅读 · 1 评论 -
ubuntu18.04中安装opencv3.2
ubuntu18.04ros-melodic( 在安装完整版的时候,会将 opencv3.2安装到ubuntu的 /usr/lib 位置 )由于要在OpenCV3.2中使用SIFT和SURF特征提取,而自从OpenCV2升级到OpenCV3版本后,SIFT、SURF等这些算法都被移出opencv默认项目库,而被放到叫opencv_contrib的项目库。因此需要手动下载opencv和opencv_contrib的源码,然后将两个源码放在一起手动编译安装。我们需要自定义安装opencv3.2 和 openc原创 2022-06-24 19:09:00 · 2465 阅读 · 0 评论 -
Ubuntu18.04安装opencv和opencv_contrib
由于最近要在OpenCV3中使用SIFT和SURF特征提取,而自从OpenCV2升级到OpenCV3版本后,SIFT、SURF等这些算法都被移出opencv默认项目库,而被放到opencv_contrib的项目库。因此需要手动下载opencv和opencv_contrib的源码,然后将两个源码放在一起手动编译安装。1、opencv下载 选择你要装的版本下载(选择source是通过浏览器下载,选择github可以通过命令行git clone下载)我这里安装的是最新的opencv-4.6.02、opencv_原创 2022-06-22 21:11:12 · 1469 阅读 · 2 评论 -
关于4diac运行时的调度问题
这是一个关于事件顺序的测试。附件中有两个测试结果。F_GT的数据输入来自两个不同的事件驱动数据。由于多了两次数据转换,IN1没有更新。在触发后续的函数块事件之前,我必须等待所有的数据准备好吗?我不确定你的问题是否有“是”/“否”的答案。IEC 61499定义,在接收输入事件时,FB的输入数据将被更新,并具有可用的最新数据值。输入事件定义了采样时间点。在你的实验中,你有一个E_SPLIT,它清楚地定义了第一个EO1,然后发送EO2。在4diac FORTE中,这意味着先上后下FB会被触发。由于4dia原创 2022-06-19 16:15:56 · 254 阅读 · 0 评论 -
unzip: Ubuntu系统下解压文件失败的解决办法
双击打开.zip压缩文件,出现错误:装入归档文件时出现了一个错误使用命令unzip无法解压成功,出错:End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be原创 2022-06-14 20:28:35 · 3437 阅读 · 2 评论 -
Invalid Trajectory: start point deviates from current robot state more than 0.01
笛卡尔直线规划报错:Invalid Trajectory: start point deviates from current robot state more than 0.011问题分析1、机械臂抖动大,导致起始位姿改变2、move_group获取的机械臂状态不对解决措施1、针对第一种原因,可以采用以下解决措施设置机械臂当前的状态作为运动初始状态group.setStartStateToCurrentState();放大误差允许范围group.setGoalPositionTole原创 2022-05-31 09:00:25 · 1845 阅读 · 2 评论 -
The Gazebo grasp fix plugin
The Gazebo grasp fix plugin官方资料链接:https://github.com/JenniferBuehler/gazebo-pkgs/wiki/The-Gazebo-grasp-fix-plugin特别是在较老的Gazebo版本中(<2),机器人在抓取物体时可能会表现出奇怪的行为:它可能会摆动、爆炸或飞向太空。这是因为物理引擎还没有针对抓取进行优化。gazebo_grasp_plugin包中提供的插件有助于克服这些问题。在较新的Gazebo版本(>2)中,机器人原创 2022-05-26 16:30:16 · 1687 阅读 · 5 评论 -
Gazebo加载grasp-fix插件报错:
Gazebo加载grasp-fix插件报错:[Err] [GazeboGraspGripper.cpp:64] GazeboGraspGripper: Palm link ee_link not found. The gazebo grasp plugin will not work.[Err] [GazeboGraspFix.cpp:231] GazeboGraspFix: Could not initialize arm gripper_arm. Skipping.[Err] [GazeboGr原创 2022-05-26 15:52:06 · 1252 阅读 · 7 评论 -
启动gazebo报错:can‘t open /share/gazebo//setup.sh
启动gazebo报错:can’t open /share/gazebo//setup.sh使用gazebo命令能正常启动gazebo,但使用rosrun gazebo_ros gazebo启动时报错原因分析:gazebo_ros的问题查阅网上资料,有人建议修改setup的路径解决方法:修改/opt/ros/melodic/lib/gazebo_ros/目录下的gazebo、gzserver、gzclient三个文件的setup路径sudo vim /opt/ros/melodic/lib/原创 2022-05-13 14:58:29 · 1448 阅读 · 4 评论 -
2021-09-13
关于栈的程序的改写郝斌的C语言程序#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node{int data;struct Node *pNext;}NODE,*PNODE;//定义栈节点叫 Stack_Node 和 pStack_Node 更好点typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,*PS原创 2021-09-13 21:07:44 · 121 阅读 · 0 评论 -
2021-09-10
数据结构学习1、郝斌的C语言代码链表创建(尾插法)和链表遍历算法的演示#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node{int data;//数据域struct Node * pNext;//指针域}NODE,*PNODE;//NODE 等价于 struct Node,PNODE 等价于 struct Node *//函数声明//假设以下函数中形参都是普原创 2021-09-10 22:19:34 · 104 阅读 · 0 评论 -
关于策略梯度(policy gradient)的理解
关于策略梯度(policy gradient)的理解原创 2020-10-29 20:03:20 · 328 阅读 · 0 评论 -
关于强化学习的简介
强化学习什么是强化学习原创 2020-10-29 19:22:01 · 387 阅读 · 0 评论