自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 Gazebo仿真WARN-The root link base_link has an inertia specified in the URDF, but KDL does not support

在Gazebo中进行小车仿真的过程中会出现如下警告The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF该警告的意思是根关节的base_link在urdf中具有惯性参数,但是KDL不支持,建议的解决办法是

2020-12-23 16:22:21 60

原创 《移动机器人开发教程》声明

最近有收到一些私信问有没有ROS源码包的代码注释或者是框架图的,在这统一回复一下我们实验室的移动机器人开发小组正在编写一本关于小型移动机器人开发的教程,里面包含了ROS基础知识、移动机器人(从底层硬件平台的搭建,到高层核心算法的解释,以及所有典型实验操作)的讲解。可以指导ROS入门和小型移动机器人的开发。本教材预计十二月底一月初发行第一版,后期会搭配移动机器人平台、和标准化实验场地,请大家敬请期待。...

2020-12-01 21:15:07 19

原创 解决 Costmap2DROS transform timeout.问题

用gmapping_slam或者karto_slam把房屋地图建好之后运行ROS导航navigation模块的时候会出现Costmap2DROS transform timeout.错误问了一下做过相关内容的师兄,发现可能是因为系统时间不统一造成的,于是尝试了修改系统时间,结果真好了,大家可以参考其实就是树莓派没有时钟模块,未联网状态下开机的时间默认为出厂时间,从而导致了系统时间早于地图的创建时间(比如系统时间时2016年某月某日,创建地图的时间是2020年某月某日),所以要将系统时间改到地图创建时

2020-09-08 17:17:52 507 4

原创 读取 /tf 话题中指定tf

大家都知道在ROS系统中同一个话题可以被多个node节点发送或者订阅,如下图是一个典型的tf结构那么如何才能获得到自己想要用的那一个变换矩阵是一个非常棘手的问题,经过查阅资料,我写了下面这一个读取/tf话题中的指定tf的demo供大家一起学习讨论。#include<iostream>#include<ros/ros.h>#include<tf/tf.h>#include<tf/transform_listener.h>#include<geo

2020-08-11 17:06:39 149

原创 PID参数设定

在电机的控制领域,不同的电机有不同的驱动方式,其中应用最广泛的就是PID(proportion integration differentiation)控制。P、I和D分别指比例控制,积分控制和微分控制。其算法简单可靠性高,广泛应用于工业过程控制,至今有90%左右的控制回路具有PID结构。在双轮移动机器人,大多数的电机的速度控制和反馈系统如下:在上图模型中,根据指定速度和实际速度构成控制偏差,将偏差按照比例、积分和微分通过线性组合构成控制量,对被控的电机进行控制。其控制规律为:判断一个控制系统是否优

2020-08-03 17:18:47 165

原创 ROS学习——巡线(C++ 、opencv)

这个功能需要摄像头的配合,如有需要可以查看我之前的博客,话不多说,直接上代码#include<ros/ros.h>#include<sensor_msgs/Image.h>#include<geometry_msgs/Twist.h>#include<cv_bridge/cv_bridge.h>#include<opencv2/opencv.hpp>#include<opencv2/imgproc.hpp>#inclu

2020-07-29 14:07:56 271

原创 二轮差分模型分析及里程计计算

小型移动机器人的底盘主要有两轮差速底盘和四轮差速底盘两种,因为两轮差速底盘的控制原理以及运动模型分析比较简单,所以运用的比较多,下面主要介绍两轮差速底盘的工作原理。如图1所示,两轮差速底盘由两个驱动轮和一个万向轮组成,两个驱动轮分别位于底盘的左右两侧,并且独立控制速度,通过不同的速度来实现底盘的转向,万向轮的作用是辅助支撑。如图5.1所示,v所指方向为移动机器人的前进方向,vl、vr分别为左轮和右轮的线速度,l为左右两轮的轮间距。假定l、vl、vr这三个值均已知。转向角速度W:移动机器人线速度V

2020-07-24 15:37:43 492

原创 ROS学习——控制小车转向

给定一个旋转的角度,让小车进行顺时针或逆时针旋转。#include<iostream>#include<string>#include<ros/ros.h>#include<geometry_msgs/Twist.h>#include<geometry_msgs/Quaternion.h>#include<nav_msgs/Odometry.h>#include<tf/tf.h>#define UNIT_

2020-07-22 11:32:18 414

原创 ubuntu内存不足1G解决办法

最近在使用ROS的时候出现ubuntu内存不足的问题,经查阅百度,发现是由于ros的输出日志过多造成的,也就是终端显示的日志ROS会自动保存起来,时间过长就会导致log文件过多过大,造成内存不足。解决办法:rosclean checkrosclean purge如果没有安装rosclean,就可以直接进行如下操作cd .rosrm -rf log再次检查ubuntu内存,就发现内存足够了...

2020-07-22 09:43:38 215

原创 ROS学习——控制小车前进给定距离

现在提出了一个小小的需求,就是要求控制小车前进五米。那么这个需求可以转化为一个问题,就是如何控制小车前进给定的距离,于是我编写了下面这个程序,向小车发布指令,然后使小车前进。#include<ros/ros.h>#include<string>#include<iostream>#include<geometry_msgs/Pose.h>#include<nav_msgs/Odometry.h>#include<geometr.

2020-07-21 09:57:34 559 2

原创 ROS学习——读取IMU数据

在ROS工作空间的src文件夹下创建read_imu功能包,并在包内创建include、launch、src、cfg四个文件夹。在cfg文件夹中创建param.ymal文件,并写入以下内容:imu_dev: /dev/ttyUSB0baud_rate: 9600data_bits: 8parity: Nstop_bits: 1pub_data_topic: imu_datapub_temp_topic: imu_tempyaw_topic: yaw_datalink_name: base

2020-07-09 10:45:37 1549 12

原创 ROS学习——读取激光雷达数据Laser

在ROS工作空间的src文件夹下创建read_laser功能包,并在包内创建include、launch、src四个文件夹。在include文件夹中创建read_laser.h文件,并写入以下内容:#include<ros/ros.h>#include<std_msgs/UInt16.h>#include<string>#include<iostream>#include<sensor_msgs/LaserScan.h>#includ

2020-07-09 10:42:27 681

原创 ROS学习——读取摄像头数据image

在ROS工作空间的src文件夹下创建read_camera功能包,并在包内创建include、launch、src、cfg四个文件夹。在cfg文件夹中创建param.yaml文件,并写入以下内容:image_dev: /dev/video0save_path: /home/huanyu/datasets/camerasave: falsevisualization: true在include文件夹中创建camera_manager.h文件,并写入以下内容:#include<openc

2020-07-09 10:38:59 440 4

原创 激光雷达运动畸变去除方法

激光雷达运动畸变产生的原因在机器人运动过程中,每个激光点都在不同的基准位姿上产生。激光扫描时伴随着机器人的运动,每个角度的激光数据都不是瞬时获得的,当激光雷达扫描的频率比较低的时候,机器人运动带来的激光帧的运动畸变是不能被忽略的。例如扫描频率是5Hz的激光雷达,一帧数据的收尾时间差是200ms,如果机器人以0.5m/s的速度沿着x方向行走并扫描前面的墙体,那么200ms后尾部的测量距离和首部的测量距离在x方向上就差10cm。所以如果不是高频扫描,这种运动畸变是不容忽视的。去除运动畸变的原理去除激光

2020-06-28 14:48:29 647 1

原创 ROS学习——TF&URDF

TF(transform)TF是指坐标变换(位置+姿态),是坐标系数据维护的工具。ROS里面的tf指的是坐标转换的标准、话题、工具、接口。tf of C++TF相关数据类型tf::Vector3 向量tf::Point 点tf::Quaternion 四元数tf::Matrix3x3 3x3矩阵tf::Pose 位姿tf::Transform 变...

2020-04-22 14:22:41 85

原创 ROS学习——Client Library——rospy

rospy-Node相关函数 init_node(name)#注册和初始化nodeMasterProxy get_master()#获取master的句柄bool is_shutdown()#返回是否关闭 on_shutdown(fn)#在node关闭时调用函数str get_node_uri()#返回节点的URL get_name()#返回本节点的全名...

2020-04-21 20:17:11 53

原创 ROS学习——CLient Library与roscpp以及模版

CLient LibraryCLient Library提供ROS编程的库(接口API),但是与API有些不同,CLient Library比API的高级,封装层次更高,有利于开发者使用。提供的库常用的主要有roscpp/rospy/roslisproscpp是C++版本的,执行效率高,适合做图像和SLAM方面的工作,但是代码非常复杂;rospy是python版本的,开发效率高。主要介绍...

2020-04-21 13:20:40 62

原创 安装ROS遇到的大坑

按照官网给的教程在Ubuntu16.04上安装kinetic,进行到sudo apt-get install ros-kinetic-desktop-full时会出现以下错误Reading package lists… DoneBuilding dependency treeReading state information… DoneSome packages could not be ...

2020-04-17 20:15:36 127

原创 ROS学习——ROS通信架构

Master节点管理器作用:每个Node启动时都要想master注册,管理node之间的通信(可实现点对点通信)$roscore 启动ros masternode节点(ROS的进程)pkg里面的可执行文件运行的实例。启动一个node$rosrun[包名][节点名]rosnode$rosnode list查看当前运行的node信息$rosnode info [node_n...

2020-04-17 14:58:15 66

原创 ROS学习——工程结构

catkinpackage是catkin编译的最基本的单元,catkin编译的时候会递归查找src目录下的每一个package。packagepackage是ROS软件的基本组织形式,一个package可以包含多个可执行文件(节点)。一个package中至少含有一个CMakeLists.txt和一个package.xml。CMakeLists.txt规定catkin编译的规则...

2020-04-17 13:49:32 48

原创 在Mac上安装Kinetic遇到的大坑

在执行brew tap ros/deps的时候遇到Error: Invalid formula: /usr/local/Homebrew/Library/Taps/ros/homebrew-deps/gfortran.rbgfortran: undefined method `prefer_64_bit?' for OS::Mac:ModuleError: Cannot tap ro...

2020-04-16 09:38:02 480 2

原创 ROS学习——简介

ROS起源2000s,斯坦福大学-机器人软件系统框架(吴恩达)2007,柳树车库(Willow Garage)发起(Opencv,pcl)2010,ROS 1.0发布2013,ROS Hydro2014,ROS Indigo(对应Ubuntu14.04,LTS)2015,ROS Jade2016,ROS Kinetic(对应Ubuntu16.04,LTS)2017,ROS Luna...

2020-04-15 20:11:14 63

原创 sd

from keras.models import Sequentialfrom keras.layers import Conv2D, Input, BatchNormalizationfrom keras.callbacks import ModelCheckpointfrom keras.optimizers import SGD, Adamimport numpyimport ma...

2018-05-01 20:47:30 154

原创 蓝桥杯——历届试题 分糖果

问题描述  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:  每个小朋友都把自己的糖果分一半给左手边的孩子。  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。输入格式 

2018-02-07 20:51:08 131

原创 蓝桥杯-关联矩阵

问题描述  有一个n个结点m条边的有向图,请输出他的关联矩阵。输入格式  第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。  接下来m行,每行两个整数a、b,表示图中有(a,b)边。  注意图中可能含有重边,但不会有自环。输出格式  输出该图的关联矩阵,注意请勿改变边和结点的顺序。样例输入 5 9 1 2 3 1 1 5

2017-12-20 14:15:39 247

原创 矩阵乘法

问题描述  输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式  第一行,空格隔开的三个正整数m,s,n(均不超过200)。  接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。  接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式  m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入 2 3 2 1

2017-12-07 17:28:15 143

原创 Torry的困惑(基本型)

问题描述  Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。输入格式  仅包含一个正整数n

2017-12-07 12:55:36 154

原创 前缀表达式

问题描述  编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。  输入格式:输入只有一行,即一个前缀表达式字符串。  输出格式:输出相应的计算结果(如果

2017-12-05 16:59:25 243

原创 Anagrams问题

问题描述  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。输入格式:输入有两行,分别为两个单词。

2017-12-05 16:46:52 131

原创 蓝桥杯-最大最小公倍数

问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式 输入一个正整数N。输出格式 输出一个整数,表示你找到的最小公倍数。样例输入 9样例输出 504数据规模与约定 1 <= N <= 106。如果按照正常的暴力搜索来解决问题,可想而知肯定会超时的,所以要知道一点:相邻的两个正整数是互斥的,而且互斥的正整

2017-11-27 21:19:32 737

原创 蓝桥杯-算法训练 出现次数最多的整数

问题描述  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。  输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。  输出格式:输出

2017-11-27 18:50:24 1170

原创 蓝桥杯——算法训练 大小写转换

问题描述  编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。  输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。  输出格式:输出经过转换后的字符串。输入输出样例 样例输入 AeDb 样例输出 aEdB

2017-11-27 15:57:14 686

原创 蓝桥杯试题——区间K大数查询

问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式 总共输出m行,每行一个数

2017-11-20 11:32:40 155

原创 蓝桥杯算法训练 排序

问题描述  编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。  输入格式:输入只有一行,即三个整数,中间用空格隔开。  输出格式:输出只有一行,即排序后的结果。  输入输出样例样例输入9 2 30样例输出30 9 2#include<iostream>#include<algorithm>using namespace std;int A(int a,in

2017-11-19 21:41:27 150

原创 蓝桥杯算法训练:递归求二项式系数值

#include <iostream>using namespace std;int DD(int a,int b){ if(a==0||a==b)return 1; else return DD(a,b-1)+DD(a-1,b-1);}int main(){ int k,n; cin>>k>>n; cout<<DD(k,n); retur

2017-11-19 21:35:51 199

原创 蓝桥进制转换题集

十六进制转八进制问题描述  给定n个十六进制正整数,输出它们对应的八进制数。输入格式  输入的第一行为一个正整数n (1<=n<=10)。  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式  输出n行,每行为输入对应的八进制正整数。  【注意】  输入的十六进制数不会有前导0,比如012A。  输出的

2017-11-19 21:30:45 124

原创 PAT——1066. 图像过滤(15)

图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。输入格式: 输入在第一行给出一幅图像的分辨率,即两个正整数M和N(0 < M, N <= 500),另外是待过滤的灰度值区间端点A和B(0 <= A < B <= 255)、以及指定的替换灰度值。随后M行,每行给出N个像素点的灰度值,其间以

2017-11-06 20:32:07 175

原创 PAT——1036. 跟奥巴马一起编程(15)

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入格式: 输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格。输出格式: 输出由给定字符C画出的正方形。但是注意到行间距比

2017-11-04 14:47:20 174

原创 PAT——1041. 考试座位号(15)

每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信

2017-11-04 13:55:59 216

原创 PAT——1046. 划拳(15)

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。 下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。输入格式: 输入第一行先给出一个正整数N(<=100),随后N行,每行给出一轮划拳的记录,

2017-11-04 13:31:22 244

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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