- 博客(72)
- 资源 (4)
- 收藏
- 关注
原创 混水摸鱼导航系列参数介绍--局部代价地图
1.local_costmap_params.yamllocal_costmap:global_frame: /odomrobot_base_frame: /base_footprint tf关系发布,局部代价地图必须有这个变换update_frequency: 3.0 代价地图更新频率publish_frequency: 1.0 代价地图的发布频率static_map: false 是否使用一个地图或者地图服务器来初始化代价地图rolling_window: true 保
2020-12-18 14:57:50 460
原创 混水摸鱼导航系列参数介绍--全局代价地图的配置
2.global_costmap_params.yamlglobal_costmap:global_frame: /maprobot_base_frame: /base_footprint tf 关系的变换,全局代价地图必须有这个变换update_frequency: 1.0 代价地图更新频率publish_frequency: 0 代价地图的发布频率static_map: true 是否使用一个地图或者地图服务器来初始化代价地图rolling_window: false
2020-12-18 14:49:52 494
原创 混水摸鱼导航系列参数介绍--基本参数
1.costmap_common_params.yamlobstacle_range:2.5 障碍的探测距离raytrace_range:3.0 机器人运动过程中,实时清除代价地图中的障碍物,并更新可移动的自由空间数据footprint:[[],[],[],[]] 机器人的几何参数,让机器人与障碍物之间保持一个合理的距离#robot_radius: 0.165 圆形机器人inflation_radius:0.5 机器人与障碍物之间必须保持的最小距离cost_scaling_factor
2020-12-18 14:40:27 564
原创 混水摸鱼C++进阶笔记20
C++进阶笔记笔记20:宁以pass-by-reference-to-const替换pass-by-valuepass-by-value:bool V_student(student s);会牵扯V_student对象,会调用构造函数和析构函数,效率低pass-by-reference-to-const:bool V_student(student& s);没有调用构造函数和析构函数,效率高...
2020-12-17 09:55:56 162
原创 混水摸鱼C++进阶笔记4
C++进阶笔记第四条:确定对象被使用前已被初始化1.内置型对象进行手工初始化2.构造函数最好使用成员初值列,不要在构造函数本体内使用赋值操作.保证次序一致.class AB{public:AB(const std::string& name, const std::string& address);private:std::string theName;std::string theAddress;};AB::AB(const std::string& name
2020-12-16 11:00:01 149
原创 混水摸鱼C++进阶笔记3
C++进阶笔记第三条:尽可能使用const可以修饰class外部global或namespace作用域中的常量,文件,函数,区块作用域中被申声明为static的对象可以修饰class内部的static和non-static成员变量const 出现在左边,表示被指物是常量;const char p=g ||char const * p=g;const 出现在右边,表示指针自身是常量;char const p=g;const出现在左右两边,表示被指物和指针两者都是常量const char con
2020-12-16 10:42:16 115
原创 混水摸鱼C++进阶笔记2
C++进阶笔记第二条:尽量以const,enums,inline替换#defines#defines 无法创建一个class专属常量没有封装特性,并不重视作用域对于单纯常量,最好以const对象或enums替换#defines对于形似函数的宏,最好改用inline函数(会破坏封装性)替换#define...
2020-12-16 10:09:05 102
原创 混水摸鱼C++进阶笔记1
C++进阶笔记第一条:视C++为一个语言联邦1.以C为基础2.面向对象class(构造函数,析构函数)封装继承多态virtual函数(动态绑定)3.C++模板4.标准模板库STL容器迭代器算法函数对象
2020-12-16 09:55:52 123
原创 算法----哈希Python
常见的数据查找算法:顺序查找、二分查找、深度优先遍历、广度优先遍历、哈希查找哈希查找算法由于其查找速度快,查询、插入删除操作简单等原因被广泛使用。冲突:多个关键字映射到同一个值的现象。例子:查找两个数的和nums = [3, 5, 4, 7, 10]target = 11def twoSum(nums, target): //双指针方法 res = [] newnums = nums[:] newnums.sort() left = 0
2020-07-31 08:26:52 107
原创 算法----二分查找Python
二分查找,每次查找后,查找的范围都折半。这样查找到最后,查找范围内只剩一个数时,判断是否为要找的数。如果是,就记录它的位置;如果不是,则要查找的数不在这个数组中。针对有序数组双指针:头指针,第一个数尾指针,最后一个数+1numbers = [1,3,5,6,7,8,13,14,15,17,18,24,30,43,56]head, tail =0, len(numbers)search = int(5)while tail - head > 1: mid = (head +
2020-07-31 08:19:30 98
原创 算法----数组合并
数组合并,合并两个有序数组。arr1 = [1, 3, 4, 6, 10]arr2 = [2, 5, 8, 11]ind = 0;ans = arr1.copy() #copy防止数组内部元素变化for i in range(0, len(arr2)): while ind < len(arr1): if arr2[i] <= arr1[ind]: #为数组2中的元素敲定合并数组中的位置 ans.insert(ind + i,
2020-07-31 08:14:29 237
原创 结构体与共用体之C++笔记
一、结构体结构体是一种构造的数据类型,数据类型都与占用内存多少有关。语法:struct 结构体类型名{ 成员类型 成员名; ....... 成员类型 成员名;};二、共用体将不同的数据项组织为一个整体,内存中占用地址相同的一段存储单元。语法:union 共用体类型名{ 成员类型 共用体成员名1; ....... 成员类型 共用体成员名2; }共用体变量的目的是希望用同一个内存段存放几种不同类型的数据,但是一瞬间只能存放一种,而
2020-07-08 14:43:19 142
原创 继承与派生之C++笔记
1.继承子类到父类得到东西2.派生父类到子类给与东西class 子类名称标识符: [继承方式] 父类名称标识符{ [访问控制修饰符] [成员声明列表]}继承方式:public、protected、private继承后可访问性:public:父类的数据成员和成员函数在子类中还是publicprivate:父类的public、protected数据成员和成员函数,在子类中可以访问。protected:父类的public、protected数据成员和成员函数,在子类中均为prot
2020-07-07 10:03:17 111
原创 数值计算Matlab----干货1
一、寻找多项式的根clc;clear; close all;roots([1, -1, -1])roots([1, -3, 4, -5])二、非线性函数的根f = @(x)x.^2 -5*exp(-x) + 1;ezplot(f); %显示函数图像grid on; %网格化fzero(f, 0); %求解三、非线性方程的求解f = @(x)[x(1)*x(2)-5*x(2)+10;x(1).^3-x(2).^2-2];a=f([1, 3]);b=fsolve(f,[1
2020-05-28 16:06:44 126
原创 第三章、移动机器人控制4
一、轨迹跟踪轨迹:如果一条路径是用时间参数化的,也就是说,沿着这条路径的运动必须与时间同步,那么我们说的就是轨迹。轨迹总是在有限时间间隔t∈[0,t]上定义,即参考轨迹有一个起点和一个终点。轨迹跟踪控制是一种确保机器人轨迹q(t)在遇到困难时尽可能接近参考qref(t)的控制方法。控制器的每个采样时间内,参考点移动到参考轨迹的当前点(xref(t), yref(t)),根据下面二公式实现控制。...
2020-05-18 09:26:29 375
原创 Matlab与python----函数
一、函数重复利用的代码块。例子:%matlabfunction [mean, sdev] = stats(x) if ~isvector(x) error('Input must be a vector') end len = length(x); mean = sum(x)/len; sdev = sqrt(sum((x-mean).^2/len));end#pythonimport numpy as np# Function definition is heredef s
2020-05-17 15:21:04 180
原创 Matlab与python----循环
一循环for循环:for循环使用一个特定的循环变量来迭代地运行相同的代码块指定的次数。通常用于遍历数组中的元素。matlab:%1for j=1:4 jend%2for j=1:0.5:4 jend%3 嵌套循环for j=1:4 for k=1:4 a(j, k)=j*k; endendapython:#1for j in range(4): print(j)#2直接遍历数组import numpy as npa = np.array([1,2,3])
2020-05-17 15:15:51 1003
原创 Matlab与python----条件陈述
一、关系运算符二、逻辑运算符三、条件语句matlab:%1if conditional statement command groupend%2if conditional statement command group 1else command group 2end%3if conditional statement 1 command group 1elseif conditional statement 2 command group 2...elseif
2020-05-17 15:00:50 140
原创 Matlab与python----2D画图
一、画图x、y向量维度一致matlab语法:plot(x,y) %一条曲线例子:x=[-2:0.01:4];y=3*x.^3 - 26*x+6;yd=9*x.^2 - 26;ydd=18*x;plot(x, y,'-b', x, yd,'--r', x, ydd,':k')xlabel('x')ylabel('y')title('f')axis([-2, 5, -40, 120])legend()python语法:plt.plot(x, y)例子:import
2020-05-17 11:26:31 246
原创 Matlab与python----矩阵
一、矩阵matlab:%创建一个向量a = [1; 2 ;3];%创建一个矩阵A = [1 2 3; 4 5 6];B = [1 2; 3,4; 5,6]; %矩阵相乘A*B%矩阵转置A'pythonimport numpy as np#创建向量a = np.array([1,2,3])print(a)#创建矩阵A = np.array([[1,2,3],[4,5,6]])print(A)B = np.array([[1,2],[3,4]
2020-05-17 10:54:43 134
原创 Matlab与ROS----栅格地图
一、二值栅格地图0表示自由空间 false1表示障碍物 truesimple.maptrue true true true true true true true true true true true true true true true true true true true true true true true true true truetrue false false false false false false false false false false fal
2020-05-16 15:48:52 1401
原创 Matlab与ROS----导航
一、VFH向量场直方图算法,是一种由人工势场法改进而来的机器人导航算法。算法会计算各个方向的行进代价,该方向的障碍越多,代价越高,并且会累加该方向不同距离的障碍物。二、仿真turtlebot_gazeboclear all;close all;clear;laserSub = rossubscriber('/scan');[velPub, velMsg] = rospublisher('/mobile_base/commands/velocity');vfh = controllerVFH;
2020-05-16 15:19:14 633 1
原创 Matlab与ROS----雷达
一、雷达laser = rossubscriber('/scan');%scan = receive(laser);figure%plot(scan);tic;while toc < 10 scan = receive(laser,3); plot(scan);end二、避障spinVelocity = 0.6; % 角速度forwardVelocity = 0.1; % 前进角速度backwardVelocity = -0.02; % 后退角速度d
2020-05-16 15:07:58 336
原创 Matlab与ROS----turtlebot_gazebo
一、turtlebot_gazebo走圈打开gazebo_turelebotroslaunch turtlebot_gazebo turtlebot_world.launchm文件:while(1) velocity = 0.2; angular = 0.1; robot = rospublisher('/mobile_base/commands/velocity') ; velmsg = rosmessage(robot); velmsg.Linear.X
2020-05-16 11:29:19 421
原创 Matlab与ROS----话题发布、话题订阅
一、话题发布、话题订阅话题发布:chatpub = rospublisher('/chatter','std_msgs/String');msg = rosmessage(chatpub);msg.Data = 'Test matlab ros';send(chatpub,msg);话题订阅:sub = rossubscriber('/chatter',@exampleHelperROSChatterCallback);...
2020-05-16 10:53:51 1235
原创 Matlab与ROS----通信
一、通信ROS系统终端输入roscoreifconfig #获取iprosrun turtlesim turtlesim_nodematlab端rosinit('ip')乌龟走圈cmdpub = rospublisher('/turtle1/cmd_vel',rostype.geometry_msgs_Twist);pause(1)% Wait to ensure publisher is setupcmdmsg = rosmessage(cmdpub);while(1)
2020-05-16 09:57:04 215
原创 ROS----rospy编写turtlesim程序
一、移动turtlesimroscorerosrun turtlesim turtlesim_noderostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:x:0.1y:0z:0angular:x:0y:0z:0"python文件:#!/usr/bin/env pythonimport rospy#Importing Twist message: Used to send velocity to Turtlesim
2020-05-15 10:46:07 991
原创 ROS---hello_world实例
一、使用ROS的Hello World示例创建一个hello_world包catkin_ws/src$ catkin_create_pkg hello_world roscpp rospy std_msgssrc/talker.cpp#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv){ ros::init(argc, argv, "t
2020-05-14 16:58:37 676
原创 ROS----使用客户机库
一、客户机库通过客户机库内置函数创造节点,实现话题、消息、服务。客户机库:roscpp—高性能rospy—节省时间roslisp—主要用于运动规划库其他c++/python创建node#include "ros/ros.h" /import rospy加入头文件#include "std_msgs/String.h" /from std_msgs.msg import String包含一个字符串信息# include "msg_pkg_name/message_
2020-05-14 15:41:15 265
原创 ROS----创建工作空间和包
一、创建ROS工作区和包创建一个名为catkin_ws的文件夹,其中包含另一个名为src的文件夹。ROS工作区也称为catkin工作区。mkdir -p ~/catkin_ws/src不应该更改src文件夹的名称。但是,您可以更改工作区文件夹名称(catkin_ws)。使用cd命令切换到src文件夹cd catkin_ws/src初始化一个新的ROS工作区。如果您没有初始化工作区,您就不能正确地创建和构建包。catkin_init_workspace在初始化catkin工作区之后,可以
2020-05-13 15:55:10 456
原创 Ubantu终端的一些操作
1.终端的打开方式:在应用中,输入Terminal按ctrl + alt +t同一个终端中打开多个:ctrl + shift + t2.manman命令代表manual。此命令提供给定命令的手册页。3.lsls命令列出当前目录中的文件和文件夹的内容。4.cdcd命令从一个文件夹切换到另一个文件夹。5.pwdpwd命令返回终端的当前路径。这对于获得绝对路径很有用。6.mkdirmkdir命令创建一个空文件夹或目录。7.rmrm命令删除文件。通过递归删除文件夹中的文件来删除文件夹
2020-05-13 15:17:17 102
原创 ROS----话题
一、topic(话题)在ROS中,同一主题的所有消息必须具有相同的数据类型。例子:topic_pub.py#!/usr/bin/env python #让ROS知道是python文件import rospy #出现在每个ROS_Python节点中,并导入我们需要的所有基本功能。from std_msgs.msg import Int32 #数据类型rospy.init_node('topic_publisher') #初始化话题pub = rospy.Publisher
2020-05-13 11:00:44 303
原创 ROS----基本操作
一、ROS的基本概念ROS系统由许多同时运行的不同程序组成和通过传递消息来相互通信。ROS Graph:ROS图节点表示发送或接收消息的软件模块,ROS图边缘表示两个节点之间的消息流roscore:roscore是一种向节点提供连接信息的服务,以便节点之间可以相互传输消息。roscore还提供了一个参数服务器,ROS节点广泛使用该服务器进行配置。—rosparamcatkin:ROS构建系统,用来生成可执行程序、库、脚本和其他代码可以使用的接口的工具集。workspace:在开始编写任何
2020-05-13 10:38:50 205 1
原创 Python数据结构5
一、图1.理解什么是图形2.了解图形的类型及其组成3.了解如何表示图形并遍历它图是一组顶点和边,它们在顶点之间形成连接。在更形式化的方法中,图G是顶点集合V和边集合E的有序对,在形式化的数学符号中表示为G = (V, E)。例子:节点或顶点:一个点,通常用图上的点表示。顶点或节点是A、B、C、D和E。边:这是两个顶点之间的连接。连接A和B的线就是边的一个例子。循环:当一个节点的边与自身发生关联时,该边形成一个循环。顶点的度:这是一个给定顶点上关联的顶点的数量。顶点B的度数是4。邻接:指
2020-05-12 11:24:03 144
camera_description.zip
2020-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人