加载中…
请输入标题
暂无内容
个人资料
BigSam78
BigSam78
  • 博客等级:
  • 博客积分:0
  • 博客访问:619,693
  • 关注人气:171
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
博文
作者: Sam (甄峰)  sam_code@hotmail.com

0. 背景介绍
ROS是一种基于消息传递的分布式多进程框架。ROS Node之间的通讯,是基于TCP/IP协议,在传递Message或Service时,都需要先打包,后解包。对资源有较大浪费,在实时性上也表现不佳。
在需要传递的数据附载小,频率低时,这样的资源和时间消耗还可以接受。但当传递的是图像,点云等数量巨大的数据时,或实时性要求较高时,传输问题则必需要考虑。nodelet的出现,就是为解决此类问题。

1. ROS Nodelet简介
Nodelet用来提供一种方式,让多个算法运行在同一个进程内,他们之间数据实现zero  copy 传输。
使用shared_ptr实现零copy传输(Zero  Copy Transport). 它使用插件机制。

简单的说:Nodelet即为将之前启动的多个Node捆绑到一起,由一个Manager管理。在同一个Manager内, Topic数据更快,zero Copy.

nodelet package既提供用来实现Nodelet的nodelet base cl
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

image_proc

ros

分类: 机器人-ROS
作者: Sam (甄峰)    sam_code@hotmail.com

Image矫正和色彩处理功能包。这个Package包含image_proc  node. 这个Node处于Camera Driver与图像处理程序之间。它会消除Raw Data的失真,如果有需要,也可以转换Bayer RGB到YUV422格式。




image_proc提供Node模式和nodelet模式。

Node模式使用:

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

ros

分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com


0. rgbd_launch简介:
一组打开RGBD设备,并load 所有nodelets去转化 raw depth/RGB/IR 流到 深度图(depth image), 视差图(disparity image)和点云(point clouds)的launch文件集。

这些Launch文件在ROS中,使用RGB-D设备(如Microsoft Kinect, Xtion)。 它创建一个nodelet graph, 把Device Driver中获取Raw Data转换为点云,视差图或其它指定格式。

rgbd_launch包含一系列common launch文件,他们会被driver指定的launch Package使用。Driver指定的Launch Package包括:openni_launch或freenect_launch.

1. launch 详细分析
两个launch文件最重要:
launch/includes/processing.launch.xml:
从RGB-D driver (openni_camera, freenect_camera)获取数据,并处理。

launch/kinect_frames.launch:
为Kinect
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

ros

image_transport

分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

0. image_transport简介
image_transport应该总被用在image订阅和发布上。它为低带宽压缩格式(compressed formats)image传输提供透明支持。例如:为JPEG/PNG压缩和视频流提供单独插件,为此类image提供传输(订阅和发布)。
 
当我们基于Image工作时,我们常希望指定传输策略。例如使用压缩Image或视频流编码。 image_transport提供class和node提供支持位随意格式的各类传输。抽离了格式等复杂信息,所以用户只看到sensor_msgs/Image这个message.
 
指定格式的传输由插件提供,image_transport自身只提供“raw”传输。其它的格式支持依赖于其它子package. image_transport_plugins.
 
1. image_transport 使用:
image_transport可以使用C++或Python接口。我们主要看看C++接口。
1.1: 下载image_transport源码
$cd catkin_ws/src
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

usb_cam

ros

分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

Sam最近在学习ROS过程中,遇到非常多官方Package。对ROS Driver也有所得。现陆续记录如下。

首先从usb_cam Package说起。

0. 简介:
A ROS Driver For V4L USB Camera.
0.1: ROS Driver和Linux driver的区别:
ROS并非全操作系统,它只是架设在Ubuntu上的一个次级系统。提供了一系列通讯方式,工具和包,让开发者更容易工作的一个平台。 
所以,ROS Driver与Linux Driver完全不同。 Linux Driver是在内核模式下获取硬件信息,反馈到用户模式下。并提供在用户模式下控制内核模式下才能访问的硬件的途径(ioctl)。
ROS Driver则不同,它完全是在用户模式下,从Linux层面获取数据。并通过Topic发送Message。使得其它ROS Node可以通过topic得到信息的程序。
usb_cam就是个典型的ROS Driver. 通过它,理解ROS Driver的层级和用途。
它并非Linux传
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

ros

udev

分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

EAI发布Dashgo底盘和F4雷达之后,软硬件均有升级变化。
Sam手头F4雷达原先使用rplidar_ros驱动,后采用flashgo作驱动。现将手头版本所需处理工作记录下来。

Sam是在两个平台工作:
A. NV  TK1 平台,ARM架构,Ubuntu14.04+ROS indigo。
B: X86平台,Ubuntu14.04 + ROS indigo平台。

1.文件准备:
 1.1:把底盘程序dashgo copy到catkin_ws/src 目录。
 1.2:把雷达程序 flashgo copy到catkin_ws/src目录。
 1.3:下载move_base: 
$cd catkin_ws/src 
$git clone :
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

pid

uid

分类: Android
作者: Sam (甄峰)  sam_code@hotmail.com

0. 基础知识:
Android架构在Linux系统之上。
Linux系统下,每个Process拥有一个PID,Process ID. 每个用户拥有一个UID:User ID, 每个Thread也拥有一个TID。
使用Linux命令,ps, top等。均可以看到PID,User(非UID) UID等信息。
同一个用户,启动的程序,它们的UID相同。

如何看到某个User的UID呢? 使用id命令即可。
$id sam,uid=1000(sam)  gid=1000(sam) .......
(另一方面,top的PID是否就是Process ID, 其实也是存疑的,因为当在Thread模式下时,同一个Process的Thread的PID是不同的)


但在Android下,不少概念有所变化。最关键就是UID,由于Android不是多用户系统,所以,UID的概念有较大变化。每个应用程序都有一个UID。只有UID相同,资源才可以相互使用。所以,某种程度上可以认为,Android系统为每个APP指定一个
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

parameter

ros

分类: 机器人-ROS
作者: Sam(甄峰)  sam_code@hotmail.com

0. Parameter Server:
roscore在启动时,除了启动Mater Node,用来管理Node, 沟通各节点之间的消息和服务外。 还会创建一个Parameter Server。它用来设置与查询参数。

Parameter Server可以存储:strings, integers, , booleans,lists,字典, iso8601数据,base64-encoded数据。


1. Parameter Server数据的设置和读取
Parameter Server数据的设置和读取有多种方式:
A:C++,Python 的ROS API接口。
B:Launch文件设置。
C:命令行rosparam。


2. ROSCPP API接口对Parameter Server的访问
ROS Parameter API让用户很容易的访问string, integer, float和boolean.  要支持其它选项,则需要使用:
http://docs.ros.org/api/xmlrpcpp/html/classXmlRpc_1_1XmlRpcValue
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

imei

分类: Android
作者: Sam (甄峰)  sam_code@hotmail.com

0.基础知识: 

IMEI是国际移动通讯设备识别号(International Mobile Equipment Identity)的缩写,用于GSM系统。

由15位数字组成,前6位(TAC)是型号核准号码,代表手机类型。接着2位(FAC)是最后装配号,代表

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

telephony

分类: Android
作者: Sam (甄峰)  sam_code@hotmail.com

在Android开发中,常需要得到Android Device一些具体信息。如基站(Cell)信息,设备唯一ID,设备网络类型等。读取此类信息,第一个方式就是通过TelephonyManager.

0.基础知识:
TelephonyManager提供访问设备电信信息的途径和办法,应用程序可以利用它得到电信服务和状态信息。应用程序也可以Register 一个Listener去侦测电信服务和状态的变化。

不能直接实例化,而应该通过 Context.getSystemService(Context.TELEPHONY.SERVICE);获取。

1.实际使用
1.1:获取基站信息
1.1.1: 获取所有基站信息: 
TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
List cellInfoList = tm.getAllCellInfo();
if(cellInfoList.size() > 0)
{
for(CellInfo ci: cellInfoList)
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有