ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision

Posts made by weijiz
-
RE: 求助,如何在小强上利用摄像头完成物体的自动追踪
@zkstc110 在 求助,如何在小强上利用摄像头完成物体的自动追踪 中说:
物体以后实现自动追踪?
这个问题比较复杂,其中包含了几个子问题。
首先小强要能够遍历未知环境这个是slam问题。用深度摄像头或者雷达,配合上amcl之类的定位算法应该能够实现。
其次要从环境中找出物体,这个是物体识别问题。如果只是红色的球用颜色加形状识别摄像头图像应该也可以。对于复杂物体就需要专门的物体识别算法,比如yolo。
然后就是追踪物体。这个比较成熟可以用OpenCV里面的Tracker. -
RE: xiaoqiang tutorial (14) using rplidar A2 with gmapping
@ccsky 你的雷达没有对应的串口设备。可能是雷达的串口没插好。也有可能雷达是坏的
-
RE: 路径规划方面的问题
@rockyren 这个看你用什么定位算法,如果是amcl的话就订阅base link 到map的tf,然后算再base link原点在map坐标系下的坐标。
-
伽利略系统Windows客户端实现原理
这篇文章详细介绍了客户端各部分实现原理。希望能方便大家更加了解客户端。
1. 通信部分
1.1 主机发现部分
如果小强和你的电脑在同一个局域网下。在点击客户端左上角连接按钮的时候客户端会自动连接至小强。这个过程即为主机自动发现过程。其实现原理如下。
首先小强上会开启一个udp广播服务端。向局域网发送广播数据。广播数据包含小强的主机信息,如ip,mac,端口,id。客户端会等待广播数据。当Windows客户端收到广播数据之后向小强上的udp服务器发送数据,表明自己的存在。之后小强程序会根据收到的相关信息和Windows客户端建立连接。在局域网内同时有多个小强主机和多个客户端的时候。按照之前说明,每个小强主机都会广播出自己相关信息。客户端会根据收到的udp广播信息维护一份当前局域网小强主机的列表。当客户端点击连接按钮后会弹出一个下拉菜单选择需要连接的小强主机。
2.1 客户端与主机通信
在发现过程完成之后,客户端和服务器都有了对方的信息。Windows客户端会建立一个udp服务器,然后小强通过udp连接把状态信息发送至Windows客户端。Windows客户端显示对应的状态。
2. 地图载入部分
2.1 地图文件载入
地图文件保存在小强
home
文件夹内的slamdb
和saved-slamdb
之中。其中slamdb中保存的为当前地图,saved-slamdb中保存的是已经保存的地图。当Windows客户端连接到小强之后会开始从小强下载地图。即把小强slamdb文件夹中的文件下载到Windows本地。下载过程是通过winscp实现的。
2.2 地图绘制
在地图相关文件下载完成之后,Windows客户端进行本地地图数据解析。获取到每个特征点的三维坐标和关键帧的三维坐标。然后再把三维坐标投影到二维平面上。通过相应的图形库画出来。最后的效果就是俯视的点云图像。
3. 控制部分
控制部分的通信协议即为伽利略导航系统通信协议
Windows客户端可以实时的获取到当前机器人的状态。客户端根据机器人的状态显示不同的信息。遥控功能,导航控制等各种功能可以通过向小强发送对应的udp数据开启。4. 经验总结
当前的客户端通信部分是通过udp协议自己实现的。但是个人感觉还是采用ROS的通用做法更好一些。因为各种功能包可以直接使用。比如自动发现部分就可以使用
zeroconf
包。避免重复造轮子。ROS本身的topic通信方式是有消息队列的,连接有一定的稳定保证规则,数据更加可靠。udp方式有时丢包会比较严重。现象就是网比较差的时候遥控会反应比较慢。相对的ROS的通信方式占的带宽会更多。对于客户端的状态显示问题这里需要注意。客户端本身一定是没有状态的,所有状态都是从机器人获取的。机器人就好像一个状态机,服务端可以发布指令控制其处于不同的状态。然后通过从机器人获取到的状态信息更新界面。否则如果机器人掉线,或者客户端重新启动,客户端的状态就和机器人无法对应上,客户端状态控制也很麻烦。 -
RE: 小强Pro启动问题
接电池的时候,其中一根连线有轻微的嗞嗞的感觉是什么回事呢?不会烧坏主机吧。接电池的两根线有先后顺序嘛
主机会有滋滋声是正常的。但是如果是线的话可能有异常。请问具体是哪一个线?
-
RE: 伽利略客户端与小强的连接
@343079825 出现未连接的可能性有两种一种是客户端版本和小强程序版本不一致。一般小强系统程序在发货时是最新的。客户端程序在打开时是会自动更新的。两者版本一般不会出现不匹配的问题。
在1.0.17版本之前的客户端可能会存在无法自动更新的情况。这时候可以采用下面的方式手动更新。
启动客户端程序后,提示更新客户端。点击确认更新。此时更新进度条会卡在100%处。关闭小强客户端。然后打开小强客户端的安装位置(默认安装在C:\Program Files (x86)\GalileoClient)。把updates文件夹内的内容复制到安装目录,替换掉当前文件。之后再重启客户端。就可以使用了。但是这种方法之后的更新还是会有问题,需要手动更新。或者也可以在这里直接下载最新的客户端。然后安装,这样之后的更新可以自动完成。另外一种无法连接的可能是网络问题。比如用手机建热点可能无法连接。建议使用路由器。客户端和小强要保证在同一个局域网下。
-
如何不设置HOST通过ROS远程连接
在有些情况下我们想要连接远程的master节点是没办法设置hosts文件的。比如在Android上运行rosjava时。这样就导致我们能够发布消息到远程节点,但是却无法订阅远程消息。问题在于默认的
ROS_MASTER_URI
是http://computer-name:11311
。而我们连接的时候是通过IP连接的,这样导致本地节点订阅的是http://xxx.xxx.xxx.xxx:11311
,其中xxx.xxx.xxx.xxx
是远程机器的IP。这两个不一致,导致无法订阅消息。解决方法是把远程的
ROS_MASTER_URI
也设置成IP的形式。这个可以通过设置ROS_IP
变量实现。比如在launch文件内添加<env name="ROS_IP" value="xxx.xxx.xxx.xxx" />
但是实际使用的时候远程节点IP可能并不是固定的。这样设置之后一旦IP发生变化,程序就没办法继续运行了。下面介绍一个更好的方法。使用
robot_upstart
软件包安装
robot_upstart
软件包sudo apt-get install ros-kinetic-robot-upstart
安装自启动服务
rosrun robot_upstart install --interface enp2s0 startup/launch/startup.launch
需要注意的是这里的
--interface
参数。这个参数指定网络设备,在程序启动的时候会自动获取这个网络设备的IP然后设置到ROS_IP
环境变量。这样ROS_MASTER_URI
就会和当前的IP一致。