ROS激光传感器可视化

问题描述

实验平台:TIAGo

编程语言:Python

TIAGo所使用的激光传感器在移动基座的底部,具体的描述信息如下

Laser range-finder

Located at the front of the base. This sensor measures distances in a horizontal plane. It is a valuable asset for navigation and mapping. Bad measurements can be caused by reflective or transparent surfaces.

为了获取激光数据,我们必须订阅 /scan 消息,消息返回的类型为 sensor_msgs/LaserScan ,该类型的文档可以访问http://docs.ros.org/indigo/api/sensor_msgs/html/msg/LaserScan.html查看,这里为了方便,我直接摘抄这个结构体的描述文档到了下面

其中ranges是一个浮点数组,每个数组成员代表着激光传感器返回的距离,这个距离有可能是inf,因为激光传感器可能会因为没有探测到物体而返回无限远。这个我们需要在后面留意一下。intensities也是一个浮点数组,用来保存对应ranges上的强度。

所有代码如下:

可以持续移动机器人,将会发现数据图随着机器人的变化而变化。

代码讲解

使用循环,每次步进 angle_increment 的角度,然后使用了三角函数公式来计算出激光数据点相对于机器人中心点(准确说应该是/base_laser_link,但是这里为了简便就说是中心点了)的坐标x和y。

为了能够将x,y坐标转换为像素的个数(方便显示),我将他们整体扩大了30倍。实际情况中如果有map,应该结合map的分辨率来计算这个值

然后,我们新建了一个801×801的空白画布。这个画布大小是我自己定义的,足够容纳我实验环境下激光传感器返回的所有点。 pixels_relative_center 数组保存的是相对于机器人中心点,激光数据点的像素坐标。在后面的循环中,我们将这些数据点转换为相对于画布原点的像素坐标,并将他们放在 pixels_relative_origin 数组中。这里需要注意的是,opencv画布坐标轴的位置和方向是不一样的。400就是我们的画布中心点,所以转换方式如下

最后,我们将这些点画出来即可

 

更改MySQL的数据存储(datadir)目录

步骤很简单,在开始之前,不要忘了先停止mysql服务。

 

然后,拷贝之前旧的数据文件夹到新的位置

上面的命令会把/data/lib/mysql这个文件夹的所有内容(包括权限),拷贝到/mnt/mysql

 

然后,修改 /etc/mysql/my.cnf ,如果是Ubuntu使用mysql的apt源安装的,应该修改 /etc/mysql/mysql.conf.d/mysqld.cnf

把datadir改成你需要的位置

 

下一步我们一般不会注意到,但是如果我们不修改这步,会造成mysql无法启动

编辑 /etc/apparmor.d/usr.sbin.mysqld ,找到 # Allow data dir access ,把他下面的旧数据目录替换成你的新的

然后,执行下面的命令即可

 

参考:http://www.jianshu.com/p/5fb55e313f8c

在openwrt中,使用mwan3等工具来创建虚拟wan口实现带宽叠加

首先安装我们要用的环境

 

然后,我们在 /etc/rc.local 添加如下的脚本用来生成虚拟WAN口,这里我生成了4个。注意,每一个虚拟WAN口要使用不同的名字。如果你不想给你的虚拟WAN口指定一个MAC地址,可以去掉所有的 ifconfig vth1 hw ether 这一行,这样每次这个脚本运行的时候,都会生成一个新的MAC地址。

 

然后到网络->接口中为你刚才添加vth1-4添加接口。名字我们命名为wan1-4,这样可以对应。因为我这里是自动获取IP上网,所以协议选择是DHCP,可以根据你的需要进行变化。注意,每一个接口需要有不同的网络跃点。为了让网关认为我们是不同的电脑,也可以定义一个主机名。接口要选择正确。别忘了添加进防火墙

 

然后,我们到mwan3的设置页面。删除里面原先所有的接口。然后对应好我们之前创建好的wan1-4,在这里创建mwan的接口。Tracking IP要填写一个永远能访问的,比如8.8.8.8。

 

 

 

然后,到members里,删除里面所有的内容,对应我们之前创建的wan1-4,创建对应的member。接口要选对

 

 

然后我们转到policies,清空里面所有的内容,创建一个名字为balanced的策略。选择上我们所有的members

 

 

 

最后,我们可以返回总览,看一下是否出现了4个绿色wan。出现则代表正常

如何挂载U盘到openwrt并扩容根分区

先安装必要环境

然后在dev中找到你的U盘(一般是sdax,这里假设为sda1)

格式化U盘

 

由于我们要挂载到/,所以我们先要拷贝原来的文件到U盘中,执行下面的命令

 

然后,使用 blkid 命令来查看sda1的UUID,显示结果类似于下面

 

然后,把下面的UUID替换成你的,把这段文本拷贝到 /etc/config/fstab 文件的后面

现在,重启路由器。使用 df -h 来查看是否挂载成功。如果重启失败,可以尝试取下U盘,再重启。

 

创建一个只读的mysql账户并且可以使用mysqldump导出