Home

ROS发布订阅模型编程实现

准备工作 $ cd <work_space>/src $ catkin_create_pkg learning_topic std_msgs roscpp geometry_msgs turtlesim $ cd learning_topic/src # 在此目录下创建两个文件,填充后续 publisher 和 subscriber 章节的内容 $ touch velocity_publisher.cpp pose_subscriber.cpp Publisher /*********************************************************************** Copyright 2020 GuYueHome (www...

Read more

ROS创建功能包

Create Package # 创建工作空间 $ mkdir -p learning_ros/src && cd learning_ros/src # 创建功能包 $ catkin_create_pkg <pkg_name> <pkg_dependency1> <pkg_dependency2> ... <pkg_dependencyn> $ catkin_create_pkg test_pkg std_msgs roscpp # 编译 $ catkin_make # 查看当前的环境变量 ROS_PACKAGE_PATH $ echo $ROS_PACKAGE_PATH > /opt/ros/melodic/sh...

Read more

点云多帧可视化

首先参考点云单帧可视化: 使用numpy进行读取数据与使用python_pcl进行可视化 这一章节 使用python-pcl实现多帧 import numpy as np import pcl.pcl_visualization import time # 创建管理可视化的类 visual = pcl.pcl_visualization.CloudViewing() # 点云bin文件所在的目录 bin_path= "path_to_dir_which_includes_bin_files" flag = True while flag: for root, dirs, files in os.walk(bin_path): for file in fiels: ...

Read more

ROS基础知识

ROS基础知识 通信机制 话题使用编程语言无关的 .msg 文件定义 类型和数据结构 用于传输数据 服务使用编程语言无关的 .rsv 文件定义 类型和数据结构 用于传输数据 node – 执行单元 执行具体任务的执行单元,可以分布式运行在不同的主机,由不同的编程语言实现。名称必须唯一。 ros master – 节点管理器 为节点提供命名和注册服务 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接。 提供参数服务器,由所有节点共享。适合存储一些静态、非二进制的配置参数 文件系统 功能包:ros基本单元,包含节点源码、配置文件、数据定义等 功能包清单:记录功能包的基本信息 元(综合)功能包:组织用于同一目的的功能...

Read more

安装任意版本app

安装任意版本app 查找历史版本 在终端输入并得到如下信息,默认是最新的版本。 $ brew info XXX # 例如 $ brew info baidunetdisk # 百度网盘 >brew info baidunetdisk baidunetdisk: 4.4.1 https://pan.baidu.com/download /opt/homebrew/Caskroom/baidunetdisk/4.4.1 (130B) From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/baidunetdisk.rb ==> Names Baidu NetDisk 百度网盘 ==> Des...

Read more

线程创建回收分离

线程的创建、回收、分离 当一个程序启动后,就会新建一个进程。若此时创建了一个新的==子==线程,原来的进程会==退化成主线程==。 创建线程 构造函数原型 public: // ① 默认构造函数 thread() noexcept; // ② 移动构造函数 thread( thread&& other) noexcept; // ③ 创建线程对象,可以指定任务函数f和参数列表 template< class Function, class... Args > explicit thread( Function&& f, Args&&... args); private: // ④ 私有的...

Read more

线程同步

线程同步 为什么做同步 多个线程访问共享资源时,必须要一个一个来,特别是对于写操作来说,边读边写也是危险的。 // 功能:两个函数同时数数,对number修改,每个线程数5次,期望最终得到10 #include <iostream> #include <thread> #include <unistd.h> int MAX(5); int number = 0; void funcA_num() { int cur; for (int i = 0; i < MAX; ++i) { cur = number; cur++; usleep(5); number...

Read more

C++的traits技术

对于自定义的结构体,如果需要作为要求元素是可哈希的容器的元素,那么就需要自定义hash函数。STL中这样的容器有:std::unordered_map、std::unordered_set、std::unordered_multimap、std::unordered_multiset。

Read more

线程概念和原理

线程概念和原理 Linux操作系统是基于进程实现的,后面看到windows线程玩的6,借鉴其概念用进程实现了线程,所以Linux里面是伪线程,即轻量级的进程。 进程拥有独立的地址空间,线程共享部分地址空间(合租) (合租)多线程省资源,上下文切换快(屋内串门) 独享(牙刷牙杯):栈区(stack)、cpu寄存器(由内核管理) 共享:代码段(.text段)、堆区(heap)、全局数据区(.bss段、.data段)、打开的文件等 进程是分配资源的最小单位,线程是执行的最小单元 Q:创建多少个线程线率最高? A:IO较多时,2倍CPU核;计算复杂度高时,等于CPU核。 参考资料 linux教程by爱...

Read more

交叉编译snpe&&grpc记录

笔者从这个工作开始接触 cmake ,期间踩了不少坑,现在也算是成功达到了半吊子的水平。 整理了几篇笔记之后,觉得有些零散。因此借由这篇详尽的例子,做到理论和实际相结合。 交叉编译 SNPE 由于本组项目需要,受限于硬件无法接显示屏,数据可视化需要借助 protobuf 做成标准格式,而后通过 grpc 远程调用显示。在本机进行开发时,就需要交叉编译生成可执行文件到 arm 板子上运行。 交叉编译 grpc 依据2022.08.25--[grpc官方库](https://github.com/grpc/grpc/blob/master/test/distrib/cpp/run_distrib_test_cmake_aarch64_cross.sh)脚本59行~62行可知,在交...

Read more