ROS Kinect 学习笔记(一):工作空间创建

一、创建工作空间 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace catkin_init_workspace命令把当前目录初始化为一个ROS工作空间。 catkin_ws目录下仅仅有一个刚才创建的src目录,src目录下也只有一个指向一个cmake文件的符号连接文件。(在'src'目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它: $ cd ~/catkin
分类: 其他 发布时间: 03-22 22:36 阅读次数: 0

深入理解ROS核心:分布式通信机制

ROS是一个分布式框架,为用户提供多进程之间的通信服务。ROS主要有三种通信机制,下面总结一下: 1. 话题通信机制 通信过程: 1)Talker注册 2)Listener注册 3)ROS Master 进行信息匹配 4)Listener 发送连接请求 5)Talker 确认连接请求并反馈给 Listener 确认信息 6)Listener 尝试与 Talker 建立网络连接 7)Talker 向 Listener 发布数据 2.服务通信机制 通信过程: 1)Talker注册 2)Listen
分类: 其他 发布时间: 03-22 22:36 阅读次数: 0

ROS学习笔记二:ROS文件系统及创建功能包

一、安装一个学习需要的ros学习包: sudo apt-get install ros-kinetic-ros-tutorials 二、功能包 1.最简单的程序包也许看起来就像这样: my_package/ CMakeLists.txt package.xml 软件包必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信息。 软件包必须包含一个CMakeLists.txt文件,并且采用catkin。 2.在catkin工作
分类: 其他 发布时间: 03-22 22:36 阅读次数: 0

ROS学习笔记:探索 RoboWare Studio及实现基于发布/订阅模式的节点间通信

RoboWare Studio是一个ROS集成开发环境。它使 ROS开发更加直观、简单、并且易于操作。可进行ROS工作区及包的管理、代码编辑、构建及调试。 RoboWare官网:http://cn.roboware.me/#/home 因为官网的教程打不开,自己折腾了好久,写点东西记录一下吧 首先打开Studio 界面非常清爽,比Qt还舒服,然后点击打开工作区,选择我们先前创建的catkin_ws 工作区 在/src下新建ROS包 test std_msgs roscpp rospy 第一个
分类: 其他 发布时间: 03-22 22:35 阅读次数: 0

ROS学习笔记:探索 RoboWare Studio 及实现基于服务器/客户端模式的节点间通信

创建ROS消息 右键包名,新建Msg文件夹并添加msg文件: Num.msg代码: int64 num string first_name string last_name uint8 age uint32 score 到这里CMakeLists.txt 已经自动加入一些运行依赖(如果不用这个IDE必须手动添加)我们打开CMakeLists.txt看看: 我们可以看到这个IDE已经为我们全部添加好关于.msg文件的相关编译依赖了 测试下msg: 所有在msg路径下的.msg文件都将转换为RO
分类: 其他 发布时间: 03-22 22:35 阅读次数: 0

Qt下编译报错:error: 'nullptr' was not declared in this scope

问题原因:这个nullptr并不是程序定义的,而是C++11引入的关键字所以这个编译器可能没有支持C++11。 解决办法:使用nullptr时,要添加对C++11的支持,在.pro文件中添加QMAKE_CXXFLAGS += -std=c++0x即可
分类: 其他 发布时间: 03-22 22:35 阅读次数: 0

FreeRTOS中的 ’上下文切换‘ 含义

最近在重新回顾底层的相关知识在FreeRTOS中遇到了一个词’上下文切换‘,我在网上找到份比较好的解释: 上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。 进程(有时候也称做任务)是指一个程序运行的实例。在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程。 上下文是指某一时间点 CPU 寄存器和程序计数器的内容。寄存器是 CPU 内部的数量较少但是速度很快的内存(
分类: 其他 发布时间: 03-22 22:34 阅读次数: 0

Ubuntu16.04系统查看已安装的python版本&python指向版本切换切换

1.查看已安装版本 python2 --version #查看python2安装版本 python3 --version #查看python3安装版本 python --version #查看当前系统默认指向版本 2.切换版本 Python3和Python2是互相不兼容,但也不能卸载其中一个。例如:可以将默认Python的指向Python3,这样就可以默认使用python3了。 echo alias python=python3 >> ~/.bashrc source ~/.b
分类: 其他 发布时间: 03-22 22:34 阅读次数: 0

PX4在Ubuntu 16.04 ROS-Kinetic外部控制模式下仿真

参考:官网https://dev.px4.io/en/ros/mavros_offboard.html 环境:Ubuntu 16.04+ROS-Kinetic 工作空间catkin_ws + MAVlink 1. 建立一个外部控制程序包 打开RoboWare在原来已经配置好MAVlink环境的工作空间catkin_ws下创建一个新的ROS包 offb roscpp mavros geometry_msgs 在/offb/src/下新建一个offb_node.cpp文件 /** * @fi
分类: 其他 发布时间: 03-22 22:34 阅读次数: 0

Ubuntu中更改所有子文件及其子目录所有者权限

利用chmod修改权限: 对Document/目录下的所有子文件与子目录执行相同的权限变更: sudo chmod -R 777 xxxxx/ -R参数是递归 处理目录下的所有文件以及子文件夹 777是变更后的权限表示 xxxxx/ 是需要执行的目录 利用 chmod 可以藉以控制档案如何被他人所存取 此命令有两种使用方法 一种是chmod后加数字,后接文件名 chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1
分类: 其他 发布时间: 03-22 22:34 阅读次数: 0

ROS Kinectic 搭配Raplidar激光雷达使用hector-slam算法构建2D地图

前言: Hector slam利用高斯牛顿方法解决scan-matching问题,对传感器要求较高。 缺点:需要雷达(LRS)的更新频率较高,测量噪声小。所以在制图过程中,需要robot速度控制在比较低的情况下,建图效果才会比较理想,这也是它没有回环(loop close)的一个后遗症;且在里程计数据比较精确的时候,无法有效利用里程计信息。 优点:不需要使用里程计,所以使得空中无人机及地面小车在不平坦区域建图存在运用的可行性;利用已经获得的地图对激光束点阵进行优化, 估计激光点在地图的表示,和
分类: 其他 发布时间: 03-22 22:33 阅读次数: 0

AMD 不支持intelhaxm-android虚拟化技术

解决方法一 下载Genymotion安装使用就可以了,教程本人博客发的有 ----------------------------------------------------------------------------------------- 解决方法二 用这里的android镜像
分类: 其他 发布时间: 03-22 22:33 阅读次数: 0

oracle 存在更新不存在插入

UPDATE TEST SET NAME= V_NAME WHERE ID = V_ID; -- 先更新 IF SQL%NOTFOUND THEN -- 判断更新结果 INSERT INTO TEST(ID,NAME)VALUES(V_ID,V_NAME); -- 如果没有更新到数据则插入 END IF; 这里会遇到一个坑 如果更新SQL后面的条件包含非主键字段就会有可能出现主键冲突, 因为可能更新的时候与表中的某一条数据只有非主键字段不同,然后就会更新不到,就会执行插入当插入的时候就有可能
分类: 其他 发布时间: 03-22 22:33 阅读次数: 0

boost::thread编程实战(1)——创建线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88049397 1. A simple example #include <iostream> #include <boost/thread.hpp> #include <boost/bind.hpp> using namespace boost; void thread1(int x){ std::cout << "x= " << x
分类: 其他 发布时间: 03-22 22:32 阅读次数: 0

boost::thread编程实战(2)——获取线程id并转化为DWORD类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88068328 1. boost::thread::id 的基础知识 ① boost::thread::id 的对象能够用来标识线程,每个正在运行的线程都可以获取一个唯一可用的线程id,可以通过调用 boost::thread 的成员函数 get_id(),或者通过在线程中调用 boost:this_thread::get_id()。 ② b
分类: 其他 发布时间: 03-22 22:32 阅读次数: 0

boost::thread编程实战(3)——通过PostThreadMessage和PeekMessage实现线程通信

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88080903 1. PostThreadMessage和PeekMessage的介绍 ① PostMessage 和SendMessage 的区别 PostMessage 是异步的,SendMessage 是同步的。 PostMessage 只把消息放到队列,不管消息是不是被处理就返回,消息可能不被处理; SendMessage等待消息被处
分类: 其他 发布时间: 03-22 22:32 阅读次数: 0

win10安装jdk1.8

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88085316 1. 下载jdk1.8 下载地址:Java SE Development Kit 8 Downloads 我选择的是Java SE Development Kit 8u202,首先需要接受协议,然后点击jdk-8u202-windows-x64.exe进行下载。 2. 安装jdk1.8 安装JDK 选择安装目录 安装过程中会出
分类: 其他 发布时间: 03-22 22:31 阅读次数: 0

maven(1)——win10 安装maven3.5

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88087579 1. 安装准备 根据maven官网给出的maven要求的jdk版本,安装maven3.5需要jdk1.7及以上版本。具体的版本对应,查看官网:Maven Releases History。 拟安装jdk1.8,可以参考上一篇博客:win10安装jdk1.8 2. 下载maven 最新的maven版本为3.6.0,可以去mave
分类: 其他 发布时间: 03-22 22:31 阅读次数: 0

maven(2)—— win10安装maven后的相关配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88088014 1. 配置maven本地资源库 Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。 打开C:\Program Files\apache-maven-3.5.2\conf\settin
分类: 其他 发布时间: 03-22 22:31 阅读次数: 0

maven(3)——IDEA使用maven创建简单的java项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014454538/article/details/88089680 1. 准备工作 配置IDEA的maven信息,参考链接:IntelliJ IDEA配置maven 2. 创建maven项目 打开IDEA,选择Create New Project或者通过菜单File->New->Project开始创建maven项目。 选择Maven,然后选择Maven项目模板maven-archetype-q
分类: 其他 发布时间: 03-22 22:31 阅读次数: 0