
ROS 机器人
东方赤龙曲和政
致力于ROS机器人操作系统的研究,无人驾驶,机器人导航,SLAM,路径规划,视觉识别。数据成像。并发内存数据库内核开发。
展开
-
ROS中单独开辟线程接受message
ros::AsyncSpinner 已经可以开辟许多线程来接收message,但是有时候我们需要指定某个线程来单独对摸个topic的message进行接收处理。#include <ros/ros.h>#include "ros/callback_queue.h"void processImageGrabed(const sensor_msgs::Image::ConstPtr &a...原创 2018-04-13 16:44:27 · 2307 阅读 · 0 评论 -
gdb调试ros node崩溃地址
编译Debug版本catkin_make -DCMAKE_BUILD_TYPE=Debuggdb启动ros noderosrun --prefix 'gdb -ex run --args' package node[Thread debugging using libthread_db enabled]Using host libthread_db library "/lib/aarc...原创 2018-03-22 18:20:46 · 3600 阅读 · 0 评论 -
ROS 学习系列 -- 程序发送点云PointCloud2到Rviz显示
方法1 直接加载PCD文件:#include // PCL specific includes#include #include #include #include // Create a ROS publisher for the output point cloudpub = nh.advertise ("filtered_plane", 1); pcl::PCLP原创 2016-03-11 09:48:53 · 16596 阅读 · 2 评论 -
ROS 学习系列 -- image_transport 发布jpg图片文件流在image_view中看视频效果
目标: 目录/home/camera 中保存了2000张照相机连续拍照的JPG文件,名字按数字排序 1.jpg 2.jpg 3.jpg ......... 现在需要在ROS中建立一个node按频率发布所有照片,并可以在image_view中看视频效果。 详细见链接:http://wiki.ros.org/image_transport/Tutorials/Pu原创 2015-12-16 11:37:02 · 14646 阅读 · 0 评论 -
ROS 学习系列 -- 执行turtlebot navigation的方法
我们讲一下如何使用现有的turtlebot launch文件来启动navigation,并在PC上使用rviz指挥。1. 网络环境布置turtlebot单片机我们使用的是firefly,rviz运行在PC上,它们使用wifi通讯。master ros运行在firefly上,PC需要指向firefly。在PC修改IP到firefly主机的映射,修改/etc/hosts 文原创 2015-11-19 10:19:36 · 11224 阅读 · 2 评论 -
ROS 主动蒙特卡罗粒子滤波定位算法 AMCL 解析-- map与odom坐标转换的方法
ROS AMCL 算法根据订阅到的地图数据配合激光扫描特征,使用粒子滤波获取最佳定位点,该点称为Mp (point on map), 它是相对于地图map上的坐标,也就是base_link相对map上的坐标。odom 的原点是机器人启动时刻的位置,它在map上的位置或转换矩阵是未知的。但是AMCL可以根据最佳粒子的位置推算出 odom->map的tf转换信息并发布到 tf主题上原创 2015-10-16 09:37:05 · 28403 阅读 · 10 评论 -
ROS代码经验系列-- tf进行位置查询变换
include文件:// For transform support#include "tf/transform_broadcaster.h"#include "tf/transform_listener.h"#include "tf/message_filter.h"#include "tf/tf.h"#include "message_filters/subscriber.h"原创 2015-10-14 14:13:14 · 18740 阅读 · 2 评论 -
卡尔曼滤波算法实例剖析--机器人足球赛场中的定位算法
卡尔曼滤波(Kalman filtering)最早在阿波罗飞船的导航电脑中使用,它对阿波罗计划的轨道预测很有用。卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。是目前应用最为广泛的滤波方法, 在通信, 导航, 制导与控制等多领域得到了较好的应用。卡尔曼滤波本身是贝叶斯滤波体系的,建立在马尔科夫概率模型基础上。大多数关于卡尔曼滤波的文章都原创 2015-09-22 20:43:01 · 8634 阅读 · 6 评论 -
ROS 学习系列 -- Roomba, Xtion Pro机器人制作地图在Android手机无法实时观测地图
turtlebot 配合Android应用 Make a Map可以允许用户通过手机操纵机器人扫描室内地图并在手机上显示出来,效果图如下: ROS机器人与安卓设备的通讯协作是通过rocon实现的,细节这里不作描述。本文适合已经对该技术非常熟悉的人阅读。1. 问题描述下载安卓rocon remocon和Make a map并安装,在turtlebot上启动机器人:$ roslaunch turt原创 2015-07-30 21:23:59 · 5995 阅读 · 0 评论 -
ROS 学习系列 -- Roomba, Xtion Pro live 实现360度全景照片panorama 无法启动的解决方案
turtlebot 有个实现iPhone360全景照相功能的应用 panorama. 官方使用Create底座和Kinnect, 在使用Roomba底座和Xtion Pro Live配套时发现,按照教程的方式启动不了。1. 启动roslaunch turtlebot_bringup minimal.launch \\加载轮子驱动roslaunch turt原创 2015-07-24 23:16:20 · 2972 阅读 · 0 评论 -
ROS 学习系列 -- iRobot 第二代机座 Roomba 作为Turtlebot使用时无法开关机
iRobot 推出了第二代机座 Roomba来取代Create. 这是一个绿脸的机座。如果使用在turtlebot上,几乎是完全兼容的,不用该什么代码,但是波特率提高了一倍,所以需要更改环境变量。但是在停止所以turtlebot的进程后,发现Roomba不再有任何反应,灯灭了,按任何按钮都不管用,也无法充电,但是电池一直在放电。原因是退出进程时没有进入到passive模式。在full原创 2015-07-05 17:30:06 · 3263 阅读 · 4 评论 -
ROS学习 —— qt_gui_main() found no plugin matching ‘xxx' 解决方法
在使用 rocon_app_manager 控制 ROS进程时,打开某个QT的控制程序,出现以下错误:qt_gui_main() found no plugin matching "rocon_qt_teleop"rocon_qt_teleop 已经安装完成,问题出在 qt 的缓存没有更新安装插件。解决办法:$ rm ~/.config/ros.org/rqt_gu原创 2015-06-28 23:52:19 · 4233 阅读 · 2 评论 -
ROS 学习系列 -- rocon_app_manager 中 'unegister service [/Cybernetic Pirate/XXX]' 错误处理方法
1. 错误描述今天在PC和开发板上下载了 rocon_app_manager_tutorials,并尝试在安卓系统上遥控远程ROS进程,执行下面命令启动 rocon app 和 interaction集合:roslaunch rocon_app_manager_tutorials pairing.launch --screen结果出现了下面的红惨惨的错误:/opt/ros/in原创 2015-06-28 22:14:52 · 2907 阅读 · 0 评论 -
ROS学习 ——使用rosinstall下载源文件
ROS的stack库分作两部分,一部分为核心部分,即main部分,简而言之就是使用下面命令,安装ROS系统时就已经安装到我们用户电脑上的那部分。$ sudo apt-get install ros-diamondback-desktop-full另一部分为选用部分,即universe部分,它不仅包括一些开源库的支持,如opencv,pcl,openni_kinect等,还有更上面以机器人功转载 2015-06-14 11:06:39 · 10268 阅读 · 1 评论 -
ROS 学习系列 -- 使用Rviz观察智能车的运动轨迹 无陀螺仪计算角度转动
视频录像根据两边轮子转动的速率不同,推算出转动的角度。包括原地旋转。计算的原理和代码可以查看文章 ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)原创 2015-04-07 16:13:50 · 6491 阅读 · 0 评论 -
手势控制四轮智能车移动
视频请看这里1. 输入设备这里使用的是Andriod手机,根据加速计的来推测手势:停止,前进,后退,左右转向2. 手机与智能车通讯智能车上的树莓派运行一个tornado web service, 当检测到一个动作后通过http访问url即可。该web service可以驱动轮子转动原创 2015-04-07 14:09:39 · 3248 阅读 · 3 评论 -
使用补偿算法对陀螺仪和电子罗盘进行数据融合,计算方位角
电子罗盘如 HMC5883L或者 MPU9250的AK8963测方位角时,经常会发现测量角度抖动很厉害。即使不动,角度也在不停的小范围内变化。这时候就需要使用陀螺仪对方位角进行补偿融合,得出稳定的数据。本文只讨论2D空间的方位角,就是电子罗盘X, Y两轴数据融合陀螺仪Z轴数据。1. 电子罗盘和陀螺仪测量物理意义电子罗盘:0-360度的方位角,也称为 yaw 。角度为arcta原创 2015-03-29 21:57:51 · 8036 阅读 · 1 评论 -
ROS 学习系列 -- 使用Rviz 可视化调试9轴机器人姿态融合
机器人平面行走时只需要知道行进方向角度即可,也就是yaw. 但当行走在有坡度的地方时则需要识别出其它两个倾角:pitch 和 raw. 借助9轴传感器的姿态融合就可以识别。下面就是在Rviz中的识别效果测试(IE可能无法观看):1. 九轴姿态融合,欧拉角和四元数机器人三维空间的姿态的表达是用欧拉角, 就是ptich roll 和 yaw. 详见链接ROS中使原创 2015-03-19 20:06:50 · 14062 阅读 · 4 评论 -
ROS 学习系列-- 四轮机器人线性速率、角速度和电机PWM线性关系的定量分析
ROS中的机器人导航需要底层轮子驱动十分精确的对行进的速率和角速度进行控制。本文根据大量的实验数据进行图形化分析,找出线性速率、角速度和电机PWM线性关系,并得出计算公式。1. ROS导航机器人驱动功能分析ROS的navigation包内容十分丰富,并封装完整。开发机器人其实就是开发轮子驱动与ROS 进行通讯。这是一个双向通讯:1.1原创 2015-03-15 18:32:14 · 18987 阅读 · 7 评论 -
HMC5883L 电子指南针用树莓派进行磁场干扰过滤 校准
本文适合所有的电子指南针校准,不仅限于 HMC5883L. 硬件的连接和树莓派的搭建以后再写。本文仅限于固定强度和方向磁场干扰的过滤,例如机器人自身其它设备产生的磁场。但对于环境如扩音器喇叭等磁场干扰无效磁场干扰类型原创 2015-03-07 22:55:31 · 7346 阅读 · 2 评论 -
HMC5883L 电子罗盘芯片中 Declination 的作用和取值方法
网上有好多文章介绍如何从HMC5883L电子罗盘中获取旋转的角度。但是其中有个重要的参数Declination并没有太多介绍,而且该参数是必要的。本文结合美国国家地理的彩图介绍了Declination原创 2015-02-03 22:56:26 · 4653 阅读 · 0 评论 -
ROS 学习系列 -- 树莓派编译安装完整版本ROS
介绍如果在树莓派中安装完整的ROS原创 2015-02-02 20:01:30 · 29875 阅读 · 24 评论 -
ROS 学习系列 -- RViz中移动机器人来学习 URDF,TF,base_link, map,odom和odom 主题的关系
前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的。下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 主题的关系。1. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系一般在urdf文件中都要定义base_link,它代表了机器人的主干,其它所有的fra原创 2015-01-31 21:56:10 · 33499 阅读 · 6 评论 -
ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之二 joint 使用
在ROS 的 机器人仿真环境下建立四轮小车进行导航模拟。RViz是一个三维的仿真环境,可以避障,导航,控制。原创 2015-01-21 20:21:39 · 12297 阅读 · 2 评论 -
ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用
使用ROS强大的机器人功能,建立ROS可以识别的机器人模型是第一步,也是无法绕过去的环节。Unified Robot Description Format (URDF) 就是描述机器人硬件尺寸布局的模型语言。它是同ROS沟通的渠道,有了机器人的物理尺寸,ROS就可以有效的进行Navagation和碰撞检测(collision detect)了。未来,该语言会从ROS独立出来,集成到Ubuntu原创 2015-01-18 20:35:57 · 22291 阅读 · 2 评论 -
ROS 学习系列 -- RViz 实时观测机器人建立导航2D封闭空间地图过程 (SLAM)
ROS提供了非常强大的图形化模拟环境 RViz,这个 RViz 能做的事情非常多。今天我们学习一下如何使用 RViz 对机器人在路径探索过程中对地图动态观测。一 基本概念ROS 对机器人导航提供了非常强大的支持,这可以让我们在不了解细节和海量复杂无比的科学计算的情况下就可以对机器人的导航,定位,路径规划。这其中第一步就是要建立一个封闭环境的地图,这个过程叫做SLAM (simultaneo原创 2015-01-11 11:48:27 · 19877 阅读 · 7 评论 -
树莓派搭建 ROS 系统下四论驱动车,并用 IPad, 手机控制
使用树莓派在安装了ROS后,按照ROS的架构可以开发一个简单的四轮驱动Wifi小车:如图。配件说明双向电机马达 X4树莓派B+ X1双路转向控制芯片 X1万向轮 X4五号电池盒 充电宝 各一个面包板一个底盘支架1套重点说明 这里需要4节电池对马达进行直接供电,马达伺服电机虽然可以输出5V稳定电压,但是无法给树莓派供电。所以要搭载一个充电宝对树莓派原创 2015-01-06 20:45:58 · 18144 阅读 · 4 评论