ROS机器人
-点灯-
这个作者很懒,什么都没留下…
展开
-
【直线提取】矢量数据压缩算法提取直线(RDP)
矢量数据压缩算法提取直线(RDP)问题:给出一个点集合,从集合中提取所有的直线原创 2022-03-11 18:28:59 · 927 阅读 · 2 评论 -
ROS::向量法外扩多边形
ROS::向量法外扩多边形将多边形区域的灭个边向外移动一定距离然后组成的新多边形如上图所示针对每一个顶点分别计算外扩后的新顶点,分两种情况:c为当前点,p为前一个点,n为下一个点情况1:pn的中点在多边形外部计算如图所示:多边形区域:R,计算当前点c的外扩点,上一个点为p,下一个点为n,o为pn的中点。L = 外扩距离。向量v1,v2.v1,v2的夹角为anglen_v1 = v1.normalized(); //单位向量n_v2 = v2.normalized(); //单位向量原创 2022-03-24 17:48:31 · 1190 阅读 · 0 评论 -
一种求多边形的边上所有间隔一定距离的点坐标方法
一种得到多边形的边上所有间隔一定距离的点坐标方法给一个任意多边形,得到每条边上间隔一定距离所有的点环境:ros 、c++代码如下:geometry_msgs::Polygon 为多边形类型。std::vector<geometry_msgs::Point32> &为要求的点存放的地方的引用。首先定义geometry_msgs::Polygon 和std::vect...原创 2020-04-29 14:06:54 · 834 阅读 · 0 评论 -
ROS:一种路径优化算法-中点向外扩张法
ROS:一种路径优化算法-中点向外扩张法此处介绍一种路径优化算法-中点扩张法,即绕中点向外扩张搜索合适的点。解决问题:路径平滑。算法如下:L1,L2暂时未用到,原本想加入到条件A里。...原创 2020-09-15 16:33:43 · 819 阅读 · 1 评论 -
ROS::判断点是否在多边形区域内
ROS::判断点是否在多边形区域内原理:介绍的射线法要求:多边形的边不能相交#include <Eigen/Core>const float EPS = 1e-6;const float PI = 3.1415926535;bool isInPolygon(float x,float y, geometry_msgs::Polygon& R){ if(R.points.empty()) return false; bool flag原创 2022-03-24 17:29:01 · 773 阅读 · 0 评论 -
ROS::下载安装ros-qtc-plugin
https://ros-qtc-plugin.readthedocs.io/en/latest/原创 2021-11-03 14:39:10 · 701 阅读 · 0 评论 -
ROS::在某个时间点利用TF做两个坐标变换
ROS::在某个时间点利用TF做坐标变换 geometry_msgs::PointStamped global_frame_point; geometry_msgs::PointStamped sensor_frame_point; try { /*************************** sensor_frame_point:原始数据 global_frame_point:变换后的数据 global_frame_:要变换到的坐标系 stamp:要使用的某时刻的tf关原创 2021-05-26 14:18:08 · 200 阅读 · 0 评论 -
ROS::多种方式的GDB调试
ROS::多种方式的GDB调试参考连接:wiki.ros.org/roslaunch/Tutorials/Roslaunch Nodes in Valgrind or GDB方式1:xterm本机直接调试:该方式需要电脑有显示器工具:GDB,xterm安装GDB和xteramsudo apt-get install xtermsudo apt-get install gdb修改节点启动launch文件例如:<node pkg="pkg" type="pkg" respa原创 2021-04-29 16:35:00 · 1309 阅读 · 0 评论 -
ROS::线程锁
ROS::线程锁boost::mutex mutex_;.........{ boost::mutex::scoped_lock l(mutex_); /*********** 被锁定的内容 ************/}当boost::mutex::scoped_lock l(mutex_);构建时发现mutex_被灵位一个线程使用时,则进入等待状态,直到mutex_被释放。...原创 2021-03-18 14:03:15 · 1050 阅读 · 0 评论 -
ROS::对costmap_2d的某一层地图做操作
ROS::对costmap_2d的某一层地图做操作//取出global_costmap_所有的地图层std::vector<boost::shared_ptr<costmap_2d::Layer> >* plugins = global_costmap_->getLayeredCostmap()->getPlugins();//遍历所有的层,搜索要操作的层for (std::vector<boost::shared_ptr<costmap_2d::L原创 2021-03-18 13:55:17 · 467 阅读 · 0 评论 -
ROS::差速运动模型机器人运动控制
ROS::差速运动模型机器人运动控制推荐看这个,包含pure pursuit(纯路径跟踪算法)解释。https://blog.csdn.net/iProphet/article/details/83661753?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-原创 2020-11-18 14:34:34 · 3159 阅读 · 0 评论 -
ROS::一种差速模型机器人脱困方法
ROS::一种差速模型机器人脱困方法介绍一种能原地旋转类型的机器人脱困的方法使用条件1、机器人为差速模型。2、具有可以探测机器人周围障碍物坐标的传感器(如激光雷达、深度相机、激光测距仪等)。3、有速度控制命令接口可以控制机器人自转和前进运动。被困检测当机器人不能规划出路径即可认为被困。被困场景示例具体操作...原创 2020-11-02 19:22:22 · 1367 阅读 · 0 评论 -
ROS::多话题消息同步
ROS::多话题消息同步出处:#include <ros/ros.h>#include "sensor_msgs/LaserScan.h"#include "geometry_msgs/PoseWithCovarianceStamped.h"#include <message_filters/subscriber.h>#include <message_filters/synchronizer.h>#include <message_filters/s原创 2020-10-11 15:12:30 · 1051 阅读 · 0 评论 -
ROS:静态TF发布
ROS:静态TF发布x y z 代表link2相对与link1的位置变换。qx qy qz qx表示link2相对与link1的位姿变换的四元数。参数100表示每隔100毫秒发布一次。方式2:x y z 代表link2相对与link1的位置变换。yaw pitch roll表示link2相对与link1的位姿变换,其中yaw为绕z轴的旋转,pitch为绕y轴的旋转,roll为绕x轴的旋转,逆时针旋转为正,顺时针旋转为负。参数100表示每隔100毫秒发布一次。...原创 2020-09-30 17:59:01 · 6659 阅读 · 0 评论 -
ROS:一种基于RRT的路径规划器
一种基于RRT的路径规划器最近写了一个基于RRT的全局路径规划器在此记录下来。环境ubuntu18.04ros-melodic实现方式作为move_base插件。介绍包括RRT* ,RRT-connect,启发式扩展,路径优化等内容。最终效果待继续完善内容。。。...原创 2020-09-16 19:02:15 · 6622 阅读 · 28 评论 -
ROS:一种路径优化方法-拉直法
ROS:一种路径优化方法此处提供一种路径优化方法名字:拉直法,即将路径拉直,将路径上一些不在直线上的点删掉。取直线的原则为:不能与障碍物相撞。需要参考代码者请留言写上邮箱地址。算法说明:如图:1、设路径点为数组P[end],end为一个大于2的整数。2、从路径一个点P[x]开始尝试与路径上其他的点P[x+2]~P[n]~P[end]拉直,若能拉直则删除Px与Pn之间所有的路径点(不包括Px和Pn)。3、x取值范围[0,end-3],依次增大,每次加1,x每加1需要与n为[x+2,end]上原创 2020-09-15 16:15:41 · 2582 阅读 · 17 评论 -
ROS::navigation导航速度指令计算流程
ros:melodic、ubuntu18.04全局规划器:dijkstra局部规划器:运动:路径跟踪,局部规划:dijkstra控制流程图:原创 2020-09-11 14:30:57 · 1068 阅读 · 0 评论 -
ROS:小车线速度、角速度、转弯半径之间的关系
ROS:小车线速度、角速度、转弯半径之间的关系v:线速度,单位:m/sω:角速度,单位:rad/sr:转弯半径ΔS:弧长T:周期,单位:sf:频率,单位:h、Hzv = ωrv = ΔS/Δt = 2πr/T = ωr = 2πrfω = Δθ/Δt=2π/T=2πf线速度也有平均值和瞬时值之分。如果所取的时间间隔很小很小,这样得到的就是瞬时线速度。注意,当△t足够小时,圆弧AB几乎成了直线,AB弧的长度与AB线段的长度几乎没有差别,此时,△l也就是物体由A到B的位移。因此,这里的v原创 2020-09-10 21:20:20 · 12004 阅读 · 1 评论 -
ROS:eband_local_planner参数注释
eband_local_planner参数注释eband_local_planner源码地址:wiki.ros.org/eband_local_plannerCommon Parameters常用参数~/EBandPlannerROS/xy_goal_tolerance (double, default: 0.1)• Distance tolerance for reaching the goal pose .• 达到目标姿势的距离公差。~/EBandPlannerROS/yaw_goal_t原创 2020-09-03 17:48:58 · 1596 阅读 · 2 评论 -
ROS:搜索某个点附近的可行点
ROS:搜索某个点附近的可行点解决目标点或机器人子膨胀层里导致规划不出路径问题。函数:void planner::getNearFreePoint(const geometry_msgs::PoseStamped in, geometry_msgs::PoseStamped& out, double tolerance);tolerance:搜索半径,单位米。in:原创 2020-08-26 19:31:58 · 484 阅读 · 3 评论 -
ROS:costmap_obstacles_layer
ROS:ros-melodic costmap障碍物层参数详解costmap_2d :: ObservationBuffer用于从传感器接收点云,使用tf将其转换为所需的坐标系,并存储它们直到被请求为止。 大多数用户将创建由costmap_2d :: Costmap2DROS对象自动处理的costmap_2d :: ObservationBuffers,但是有特殊需要的用户可以选择创建自己的对象。全局过滤参数这些参数适用于所有传感器。~/max_obstacle_height (double,原创 2020-08-14 10:20:18 · 1431 阅读 · 0 评论 -
ROS:Dijkstra全局规划器
ROS:Dijkstra全局规划器#ifndef _DIJKSTRA_PLANNER_H_#define _DIJKSTRA_PLANNER_H_#include <ros/ros.h>#include <costmap_2d/costmap_2d.h>#include <costmap_2d/cost_values.h>#include <simple_local_planner/world_model.h>#include <simp原创 2020-08-05 19:42:13 · 1678 阅读 · 0 评论 -
ROS:一种简单的基于global_planner的全局路径优化方法
一种简单的基于global_planner的全局路径优化方法环境:Ubuntu 18.04.4 LTSros-melodic修改的包:navigation中global_planner功能包全局规划器使用dijkstra算法优化目标:1、使路径与膨胀层保持一个像素点的距离。2、使绕障碍物的路径更加平滑。优化之前的路径第一步:添加路径规划约束条件文件:dijkstra.cpp函数inline void DijkstraExpansion::updateCell(原创 2020-08-05 10:26:47 · 5604 阅读 · 20 评论 -
ROS:ros-melodic 坐标变换
ros-melodic pose坐标在不同坐标系下的变换说明ROS版本 ros-melodic部分坐标系变换为:map->odom->base_footprint->base_link->laser全局路径规划出来的路径点一般是在map下的,局部路径规划器在发布速度控制指令一般是在odom下的,所以需要经map下的路径点转换到odom下。用到两个tf2的函数。第一步:获取此时odom到map的坐标系变换关系。调用函数 geometry_msgs::TransformS原创 2020-07-30 10:22:17 · 1009 阅读 · 0 评论 -
ROS::ubuntu18.04 sudo: rosdep:找不到命令
ubuntu18.04按照wiki上安装步骤执行sudo rosdep init是出现sudo: rosdep:找不到命令原因:python-rosdep这个包没有装。解决办法:安装python-rosdepsudo apt-get install python-rosdep继续接下来的安装sudo rosdep initsudo rosdep update...原创 2020-07-21 17:18:57 · 25808 阅读 · 6 评论 -
ROS::launch、参数服务器
用launch文件设置参数用launch文件向参数服务器添加参数<launch> <node name="demo" pkg="demo" type="demo" respawn="false" output="screen" > <param name="param_name" type="string" value="aaaaaa"/> </node></launch>在代码中读取参数ros::i原创 2020-07-09 16:29:10 · 328 阅读 · 0 评论 -
ROS::安装ROS,在进行sudo rosdep init报错,解决方案
安装ROS,在进行sudo rosdep init报错,解决方案错误现象解决方法修改/etc/hosts 文件sudo vim /etc/hosts在底部加上:151.101.84.133 raw.githubusercontent.com改过之后保存退出再次执行sudo rosdep init看问题是否解决,若未解决请另寻他法。...原创 2020-05-26 10:08:58 · 459 阅读 · 0 评论 -
ROS::服务通信
ROS服务通信AddTwoInts.srvint64 aint64 b---int64 sumserver.cpp#include "ros/ros.h"#include "learning_communication/AddTwoInts.h" //learning_communication为服务所在的包名// service回调函数,输入参数req,输出参数resbool add(learning_communication::AddTwoInts::Request &原创 2020-05-20 14:18:39 · 339 阅读 · 0 评论 -
ROS::下使用百度语音实现语音交互
ROS下使用百度语音将文字转为语音功能描述:往一个话题里发布文字然后读出改文字功能包链接:https://github.com/DinnerHowe/baidu_speech.git将该包放到自己的工作空间里编译一下。需要安装的包:1、安装requests模块sudo pip install requests2、安装两个Python库pyaudio和python-vlcsudo apt-get install python-pip portaudio19-dev vlc libvlc-de原创 2020-05-19 21:00:48 · 731 阅读 · 0 评论 -
ROS::机器人系统分布式配置
ROS机器人系统分布式配置说明:由两台电脑A和B都装了ROS,且两台电脑在同一个局域网内,rosmaster运行在A上。A的ip为:192.168.1.26B的ip为:192.168.1.27第一步:配置A。修改 /etc/hosts文件sudo vim /etc/hosts在最下面加上一句:192.168.1.27 kk说明:192.168.1.27为B的ip,kk为B的hostname,中间为tab不是空格。第二步:配置B修改~/.bashrc文件vim ~/.bashrc在最下原创 2020-05-18 10:18:22 · 313 阅读 · 0 评论 -
ROS:启动roscore报错: ‘ascii’ codec can’t decode byte 0xe6 in position 13: ordinal not in range(128),解决方法
启动roscore报错: ‘ascii’ codec can’t decode byte 0xe6 in position 13: ordinal not in range(128),解决方法第一步:保证自己工作空间的路径全是英文。第二步:将自己的工作空间的build/ devel/ 文件夹删除。第三步:将ubuntu系统语言改为英文。第四步:重启电脑。第五步:编译自己的操作空间。第六步:启动roscore查看问题是否解决,若未解决请另寻他法。若想把系统语言改为中文请继续以下步骤:第七步:原创 2020-05-13 10:33:26 · 1204 阅读 · 0 评论 -
ROS::计算时间间隔
ros中计算时间间隔 double before_time_//是一个全局变量 //其他代码 ... ... double now = ros::Time::now().toSec(); std::cout << "time:" << (now - before_time_)*1000 << std::endl;...原创 2020-04-20 15:36:12 · 2898 阅读 · 2 评论 -
ROS::重置gmapping的方法
重置gmapping的方法有时候需要让gmapping重置,通过杀死节点的方式太粗暴,这里提供一种让gmapping重置的方法1、首先编写一个重置gmapping的服务,通过该服务可以查询gmapping状态是否是正在运行,服务如下:uint8 cmd---uint8 status字段说明:cmd = 1,表示重置gmappingcmd = 2,表示查询gmapping的状态st...原创 2020-04-14 13:39:07 · 637 阅读 · 3 评论 -
ROS:rosbag的简单使用命令
rosbag的简单使用命令1、在终端或者sh脚本中启动数据录制功能rosbag record -O subset /turtle1/cmd_vel /turtle1/pose2、如果在 launch 文件中使用 rosbag record 命令,如下:<node pkg="rosbag" type="record" name="bag_record" args="/topic1 /...原创 2020-03-30 09:36:53 · 6704 阅读 · 0 评论 -
ROS::CmakeList 例子
ROS CmakeList 例子cmake_minimum_required(VERSION 2.8.3)project(puppy_clean)## Compile as C++11, supported in ROS Kinetic and newer add_compile_options(-std=c++11)## Find catkin macros and librari...原创 2020-02-27 09:48:07 · 186 阅读 · 0 评论 -
ROS::用turtlebot3和gazebo做仿真
用turtlebot3和gazebo做仿真环境:电脑系统:lubuntu16.04 ROS版本:kinetic安装需要的包:sudo apt-get install ros-kinetic-turtlebot3sudo apt-get install ros-kinetic-turtlebot3-gazebo编写launch文件:<?xml version="1.0" en...原创 2020-02-24 17:02:27 · 1536 阅读 · 0 评论 -
ROS::ros不同订阅方式的区别
ros不同订阅方式的区别ros话题不同的订阅方式有一些不同,适合不同的功能需求。Ros:spin() 和 ros::spinOnce() 区别ros:spin() 和 ros::spinOnce()为单线程订阅方式。Ros:spin()这种方式程序运行到这一句时就会卡在这,等待发布节点发布消息。例如:#include <move_base/move_base.h>int ...原创 2019-12-26 11:53:53 · 582 阅读 · 0 评论 -
ROS::ros机器人路径远离障碍物的方法
ros机器人路径远离障碍物的方法A星或dijkstra规划的路径会贴着障碍物,如果膨胀半径设置过小机器人在跟踪路径运动时会碰到障碍物,特别是在转弯的时候。这里提供一种路径优化的方法让路径与膨胀层保持一定距离。步骤:1、遍历所有的路径点,记录下路径点周围一定范围length(可设置)有障碍物。2、若所有的障碍物都在路径的同一测则找到距离该路径点A最近的障碍物点B,设距离为d。3、将路径点...原创 2020-02-17 18:47:15 · 7873 阅读 · 28 评论