ROS卡车手推车。 第8部分。我们通过电话ROS控制,GPS节点进行控制

系列文章的续篇。

系列文章:
8.我们从电话控制ROS控制,GPS节点
7.机器人本地化:映射,AMCL,房间地图上的参考点
6.带轮编码器的里程表,房间地图,激光雷达
5.我们在rviz和凉亭中工作:xacro,新传感器。
4.使用rviz和gazebo编辑器创建机器人仿真。
3.加速,更换相机,固定步态
2.软件
1.铁

在有限空间内的机器人上构建地图时,没有问题。 通过从控制台的键盘或机器人本身控制机器人,您可以直观地观察其运动并及时避免不必要的障碍。 如果有几个房间,情况就很复杂。 如果机器人离开操作员的房间,这里有几种观察机器人构建地图的选项:
-将相机直接连接到机器人;
-使用机器人外部的现有视频监控系统;
-在机器人附近使用Wi-Fi,蓝牙键盘进行控制
-“将机器人抱在怀里”,以便激光雷达收集数据;
-通过电话控制机器人。

后一种选择似乎很方便。 要通过手机控制机器人,只需在机器人构建地图时将其(手机)向正确的方向倾斜即可。 这样的任务是可能的。
让我们考虑如何从电话引导机器人,将适当的消息发送到机器人上的ROS主题。

出于上述目的,无需在电话上编写单独的应用程序。 要利用现有做法,只需下载到您的手机并从市场上安装android应用程序-“ ROS Control”。

在手机上设置ROS Control应用。


该应用程序非常直观-向机器人添加了“ +”号,其ip设置如下:
图片


接下来,选择“显示高级选项”并为机器人手推车规定主题:
图片


图片


电话中的消息将进入这些主题,并且也将以ROS理解的格式接受。
在应用程序中,主题可供我们使用:
-游戏杆主题-通过电话进行控制;
-激光扫描主题-来自激光雷达的数据;
-导航卫星话题-GPS机器人数据;
-odom-里程表(从编码器和/或imu和/或激光雷达获得的所有信息);
-姿势-“位置”,即机器人的位置。

掌握操纵杆主题。


机器人本身不会消失,因此,我们将使用运动驱动器在机器人上启动一个主题,该主题在以前的文章中反复出现:
第一航站楼:
rosrun rosbots_driver part2_cmr.py

在ROS Control应用程序中的电话上,单击带有机器人名称的行,并在机器人控制菜单中失败:
图片


现在,如果您用手指(向任意方向)拉动操纵杆,则推车将会移动。
如果您查看在树莓派上运行引擎驱动程序主题会发生什么,您将看到电话已发布并且驱动程序以适当的格式接收消息:


所有其他主题都基于相同的原理。

*但是,如果出现问题,则在机器人控制模式下,有必要单击应用程序屏幕左上角的三个平行条。 在“首选项”中失败,然后选择“主题”:

图片


图片


接下来,单击适当的主题,注册路径(值):
图片



让我们看看应用程序中的激光雷达。


在机器人上,运行激光雷达节点:
roslaunch rplidar_ros rplidar.launch
如果您重新输入应用程序,则在机器人控制屏幕上,我们将看到特征点和一个蓝色箭头:
图片



*您也可以通过向不同方向倾斜手机并选择“倾斜控制模式”来骑行:
图片


还有其他“驾驶”模式,即使能够在电话上直接在地图上指示一个点,但是由于地图是非常任意的,因此行程也将是有条件的,即无路可走。

对于运动主题,例如相机(我们不会考虑),一切都差不多了,我们将处理gps。


gps在房间里几乎没有意义,但有趣的是它的工作原理。
对于测试,任何GPS哨声都适用。 我的选择如下-
图片


要使其工作,首先需要在树莓派上安装gps节点。
但首先,让我们检查一下GPS哨声是否有效,否则所有其他对话将有利于穷人。
我们将包装放在树莓上:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients

检查是否在USB设备之间定义了GPS哨声:
lsusb


现在,检查gps是否接受某些内容:
gpscat -s 9600 /dev/ttyACM1
*根据GPS哨声打开的端口,可能会有其他值(ttyACM0,ttyUSB0,ttyAMA0)代替ttyACM1。
GPS消息将散布在终端中:
图片


可以按以下方式获得结构化(令人赏心悦目的)数据:
gpsmon /dev/ttyACM1
图片


*坐标不是我的,这很奇怪。 目前尚不清楚这与什么有关。

在树莓派上安装gps节点:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make


现在我们已经组装了GPS节点,(在机器人上)运行它:
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600

如果查看主题(在机械手的另一个终端中),则可以看到电话已订阅一个主题,而gps节点的发布将转到另一个主题:
图片


通过上述设置将手机上的接收主题更改为/修复主题。
更改之后,发布和接收将集中在一个主题上:
图片


在电话上,您可以观察坐标:
图片



里程表(主题/主题)。


如果您从以前的帖子中运行里程表记录,那么当机器人移动时,您还可以在电话上获得机器人的线速度和角速度(速度不是使用gps计算的)。
在机器人上:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py

在电话上:
图片

Source: https://habr.com/ru/post/zh-CN474650/


All Articles