加载中…
请输入标题
暂无内容
个人资料
BigSam78
BigSam78
  • 博客等级:
  • 博客积分:0
  • 博客访问:605,520
  • 关注人气:171
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
博文
标签:

android

rk3229

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

首先选择Ubuntu12.04 64bit为开发环境。
很多必要的软件已经安装,如:python ,GNU Make等。

1. 必要软件安装:
1.1: JDK:
Android5.1后,采用JDK为Open JDK。而非oracle jdk.
$sudo apt-get install openjdk-7-jdk

检测:
$java -version
Java version '1.70_121'
OpenJDK RunTime  Environment.....


1.2: 其它包
sudo apt-get install git
sudo apt-get install gnupg 
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install libc6-dev
sudo apt-get
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2017-05-15 21:16)
分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

EAI  F4激光雷达该如何安装到地盘上呢?下面把安装过程记录下来:

1. 激光雷达和底盘的关系:
察看gmapping_demo.launch, 可以看到如下语句: 
    args='0.0 0.0 0.2 0.0 3.1415926  0.0 /base_link /laser_frame 40' />
表明:/laser_frame这个雷达TF和机器人中心参考系--/base_link是固定参考系(static_transform_publisher)
0.0 0.0 0.2:表明/laser_frame的中心与机器人中心x,y相同,但高0.2.
0.0 3.1415926  0.0: 表明雷达方向和机器人方向偏差180度。




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

arduino

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

在做ROS底盘 Base Controller研究时,底盘控制器采用Arduino (DFRduino UNO R3). 所以先搭建一个实际底盘。

0. 选用设备:
A: Arduino,-- DFRduino UNO R3.
B: 电机驱动模块  12/24V 7A 160W双路直流电机驱动模块 或L298N。
C: 电池。 12V锂电池。
D: 电机直流电机(带编码器)

一些设备可能并不完全合理,但手头已经有了。所以就直接使用了。

1. 电源:
本想着Arduino需要5V电源,所以想使用降压模块(
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
作者: Sam (甄峰)  sam_code@hotmail.com

0.基础知识:
ros_arduino_bridge也是一个元包(以前叫栈)。它为arduino微处理器提供ROS Driver和Base Controller。这个Driver提供访问模拟和数字Sensors的能力。 PWM Servos,从Encoder获取数据,并产生odometry数据。换句话说,它为Arduino为底盘控制器的ROS模型提供了一个完整的Base Controller模型。这与rosserial是完全不同的。
这个Stack包含的Firmware缺省使用Pololu电机控制shield(https://www.pololu.com/product/2502)和Robogaia Encoder shield(https://www.robogaia.com/two-axis-encoder-counter-mega-shield-version-2.html)。 但可以被很容易的替换为其它电机控制板和Encoder控制。

ros_arduino_bridge的最大优势在于:
1. 完整的Base Controller框架:
2. 逻辑代码放在ROS 设备上,降低了Arduino压力。


1.实际使用
1.1: 下载和编译:
$git clone&nbs
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2017-05-04 15:10)
标签:

git

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


git branch 看本地分支。
git branch -r 看远端分支。
git branch -a 查看本地和远端分支。

git checkout branchName  切换到新分支 



阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
作者: Sam (甄峰)  sam_code@hotmail.com

0. Base_Controller基础知识:
在ROS控制模型中,把对ROS底盘的驱动,对各轮子的PID调节,对底盘回报速度和odom处理等模块统称为Base_Controoler.  这部分对机器人底盘制作者,使用者都有意义。这部分最终的意义在于:让底盘的使用者看来,底盘就是一个Node。它吃cmd_vel数据并执行之。并上报odom消息。


ROS相关控制模型中Base_Controller所处位置和作用如下:



ROS设计者对降低耦合性思路真是值得学习:
ROS上位机发送/cmd-vel(Twist). 仅仅是告诉底盘它想以何种线速度,角速度做移动。至于如何做
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

1. terminate called after throwing an instance of 

'boost::exception_detail::clone_impl >'
  what():  

boost: mutex lock failed in pthread_mutex_lock: Invalid argument

解决方法:
sudo apt-get dist-upgrade

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2017-04-25 11:11)
分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

在控制机器人的PC,嵌入式系统启动时,常常需要ROS程序随开机启动。Sam尝试了多种方法,现记录如下:

1. ROS官方方法:
Robot_upstart:
The robot_upstart package provides scripts which may be used to install and uninstall Ubuntu Linux upstart jobs which launch groups of roslaunch files.

所以,这个方法可能仅支持Ubuntu Linux。它提供scripte来安装和卸载随机启动的ROS工作。 可以使用roslaunch等。

1.1:安装(indigo-ROS下):
$sudo apt-get install ros-indigo-robot-upstart 

1.2: 设置某个Package的launch文件为开机启动 .launch:
Sam有个Package:beacool_bringup, 它其中有个
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

nvidia

tk1

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

这段时间,一直在Nvidia TK1 平台上做事。但Kernel,driver等都依赖朋友公司提供。最近,突然发现Nvidia网上提供一篇文章。对编译Kernel有讲解。
http://www.jetsonhacks.com/2016/06/20/intel-realsense-camera-installation-nvidia-jetson-tk1/


1. 下载Kernel到TK1中:
wget http://developer.download.nvidia.com/embedded/L4T/r21_Release_v4.0/source/kernel_src.tbz2

2. 编译:
tar -xvf kernel_src.tbz2
zcat /proc/config.gz > .config
TK1的 /proc/目录下有个文件,config.gz , 确实是Kernel配置时的配置文件。
make xconfig

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2017-03-23 16:11)
标签:

linux

char

int

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

0.
之前对窄数据类型向宽数据类型转换转换时,符号扩展,零扩展稍有了解,具体什么时候用符号扩展,什么地方用零扩展,并不清楚。所以常用按位与(&) 按位或(|) 等操作来保证扩展部分与编程思路的统一。

这次在使用iBeacon协议时,信号强度的dbm值保存在一个字节中。有时作为原码,有时又要求补码。为了验证,常要printf出来。 这下就要求把零扩展和符号扩展搞清楚。


1. 何时使用零扩展,何时使用符号扩展:
当窄数据类型为:有符号数据类型时,扩展为宽数据类型时,使用符号扩展。
当窄数据类型为:无符号数据类型时,扩展为宽数据类型时,使用零扩展。

例1: 有符号数扩展(符号扩展)
int8_t rssi = 0xBE;
int rssi_4byte = 0;

rssi_4byte = rssi;
解析:
rssi为8位有符号数,则使用符号扩展。
0xBE:   10111110B. 最高位为1。所以使用1扩展到其
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

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

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

新浪公司 版权所有