基于C++实现的智慧农业移动巡检系统设计(附源码)


Overview

在这里插入图片描述

项目源码

https://download.csdn.net/download/DeepLearning_/87863659
此项目开始于2023年2月7日,项目内容为一种AGV图形化操作系统,采用ROS2GO开发,开发环境为Ubuntu18.04、ROS melodic、Qt5.9.9,该项目作为23年挑战杯项目的上位机。

已实现功能:

  • 用户登录(上位机IP地址与机载电脑主机名称,支持环境变量登录和保存登录设置)
  • 传感器运动信号可视化(线速度、角速度、转向、档位、电池电量)
  • 环境信号可视化(空气湿度、空气温度、二氧化碳含量、光照度、雨量、风速)
  • 话题更新与可视化(包括话题名和话题类型)
  • 图传信号可视化(通过话题名订阅)
  • 运行状态可视化与控制(继承rviz部分功能:Grid、TF、LaserScan、PointCloud2、RobotModel、Map、Global Map、Local Map,估计位姿(原2D Pose Estimate)、目标位姿(原2D Nav Goal)、更新返航点、返航)
  • 运动控制器(包括差速和全向轮控制器、线速度和角速度调节)
  • 终端模拟器(目前仅支持常规Linux命令,不具备杀死进程的功能)
  • 信号采集(用户名、bag名、bag路径,bag列表,回放、录制、停止录制与回放、删除bag文件)

由于版本更新、不同设备上环境存在差异,可能导致无法正常运行,请自行查找相关资料。


一. 运行软件

1. 安装ros对qt pkg的支持

sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build

2. 文件路径参考

rosbash放在根目录下:

  • /home/user/rosbash

robot_gui_app放在工作空间的src下:

  • /home/user/catkin_ws/src/robot_gui_app

3. 编译

cd /home/user/catkin_ws
catkin_make

编译结果如下:

4. 运行

roscore
rosrun ros_gui_app ros_gui_app

运行效果如下:
在这里插入图片描述

二. 功能说明

1. 登录界面

此界面需填写上位机IP地址:运行Robot GUI APP的电脑可通过终端查询:

ifconfig

若只在本地进行仿真测试,IP地址和主机名称一致即可,如下所示:
在这里插入图片描述

启动节点

roscore

点击连接即可实现ROS与软件的通讯,日志处会持续打印连接状态,此处还可以添加其他信息类型,例如后续加入传感器的状态检测。两个CheckBox处依次勾选后可实现环境变量启动连接和记住登录设置,实现在Master存在时自动连接。没有节点运行时会提示No Master且无法启动软件。

2. 传感器信息(Turtlebot3仿真环境下测试)

  • 构建仿真环境:
roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • 运动信号:
    控制turtlebot运动
    在这里插入图片描述

仪表盘显示线速度,字母D、N、P、R表示档位,左侧是电量,箭头表示方向,中间的数值是角速度。
在这里插入图片描述

  • 环境数据
    此处未连接传感器,需根据硬件设置对应的接口函数,显示效果如下:
    在这里插入图片描述

  • 图传信号:
    由于不同使用场景下图像话题不一致,这里设计为在Line Edit中填写自己需要的图像话题名称来订阅图像,turtlebot3仿真环境中没有此类信号,我将会在下文Kitti数据集处演示。
    在这里插入图片描述

  • 话题:
    点击更新列表即可查看当前活跃的话题名及其类型,选中话题可通过CTRL+C复制文本(包括括号内的话题类型),因此在订阅图传信号以及下文Qviz中订阅话题时需删除类型信息。
    在这里插入图片描述

3. Qviz与运动状态(Turtlebot3仿真环境下测试)

  • 构建仿真环境:
    测试地图文件路径参考:
    /home/user/map.pgm
    /home/user/map.yaml
roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/user/map.yaml

运行软件后勾选Qviz处的控件,效果如下:
在这里插入图片描述

  • Display处控件使用逻辑与rviz一致,具备阉割版栅格、TF坐标变换、激光雷达、点云、机器人模型、地图、运动路径、全局代价地图及其路径规划、局部代价地图及其路径规划等常用功能,可根据后续场景继续完善。
    在这里插入图片描述

  • 运动控制器处可通过键盘或PushButtn控制机器人的运动,ODW处CheckBox用于切换全向轮控制(需适配全向轮底盘),下方两个Horizontal Slider用于调节运动线速度(cm/s)和角速度(rad/s)。
    在这里插入图片描述

  • 运行状态处显示画面,上方有4个PushButtn,其中估计位姿目标位姿与rviz中2D Pose Estimate2D Nav Goal作用一致,用于机器人的重定位和运动位姿设置,更新返航点可将当前位姿设定为返航点,任意位置点击开始返航后机器人都会运动到返航点处。
    在这里插入图片描述

4. 终端模拟器

此页面具备基本的Linux终端功能,便于快速查看信息,在Line Edit中输入命令并回车,结果会输出在下方的Text Browser中,如下所示:
在这里插入图片描述

5. 信号采集

此页面用于.bag文件的管理,便于采集和回放数据
在这里插入图片描述

  • 用户名处填写自己电脑系统对应的用户名,即根目录/home/user中的user,此信息会影响.sh文件的读取,务必填写正确

  • Bag路径处填写相对于/home/user的路径,例如要管理/home/user/rosbag下的bag文件,填写/rosbag即可,此处不填写默认路径为/home/user。

  • Bag名称处填写录制文件的名称,此处不填写默认为录制时间。

  • 点击Bag列表更新会过滤出该路径下全部的.bag文件,点击右侧Combo Box可列出全部.bag文件。

  • 点击播放会回放Combo Box处选中的文件,效果如下:

  • 点击录制会弹出终端并开始记录目前所有活跃的话题,效果如下:
    在这里插入图片描述

  • 点击停止会弹出终端询问需要kill掉的节点,录制时选则带有record关键字的节点并回车即可结束录制,同理回放时选择带有play关键字的节点即可结束回放(注意别kill错了!!!),效果如下:
    在这里插入图片描述

  • 点击删除可删除Combo Box处选中的文件,无法还原。

  • 日志会打印上述所有操作的信息,效果如下:
    在这里插入图片描述

  • 第三方数据集:
    任意.bag格式的数据集均可播放,这里以kitti数据集为例,路径填写为kitti数据集目录下,更新列表,选中kitti数据集,点击播放:
    在这里插入图片描述

此时到话题处刷新,可以看到数据集内的话题:
在这里插入图片描述

到上方图传信号处订阅所需画面的话题名即可显示相机图像:
在这里插入图片描述

到Qviz处修改Fixed_FrameTFPointCloud2的参数,即可看到坐标系和点云:
在这里插入图片描述

三. 二次开发

1. 安装qtcreator

安装Qt 5.9.9 linux版本
去官网下载:http://download.qt.io/archive/qt/5.9/5.9.9/qt-opensource-linux-x64-5.9.9.run
添加可执行权限:

sudo chmod a+x qt-opensource-linux-x64-xxxx.run

运行安装包,完成注册,组件选择Desktop gcc 64-bit,完成安装。

2. 配置环境变量:

sudo nano /usr/bin/qtcreator

添加内容如下:

#!/bin/sh 
export QT_HOME=/home/user/Qtxxx/Tools/QtCreator/bin 
$QT_HOME/qtcreator $*

更改可执行权限:

sudo chmod a+x /usr/bin/qtcreator

3. 运行qtcreator:

  • 点击qtcreator图标
  • 或从终端启动(ROS项目必须从终端启动刷新环境变量)
qtcreator

4. 项目展开:

  • 选择robot_gui_app/CMakeLists.txt展开
  • 若在ROS工作空间下,选择catkin_ws/src/CMakeLists.txt展开。

项目源码下载:

https://download.csdn.net/download/DeepLearning_/87863659

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ROS小海龟是一个在ROS(Robot Operating System)中使用的仿真机器人。它被广泛用于教育和开发机器人技术。 在ROS小海龟中,定点移动是指让小海龟在图形界面上的给定点上停留一段时间。下面是一个简单的300字中文回答,解释ROS小海龟如何进行定点移动: ROS小海龟可以通过使用turtlebot3_teleop包来进行定点移动。首先,我们需要打开一个终端窗口并输入以下命令来启动ROS小海龟仿真器: ``` roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch ``` 接下来,在另一个终端窗口中输入以下命令来启动ROS小海龟操作节点: ``` roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch ``` 现在,我们可以通过按键盘上的箭头键来控制小海龟的移动。当我们按住箭头键移动小海龟时,它会按照我们的指示移动。 要进行定点移动,我们需要使用turtlesim包提供的服务。在新的终端窗口中输入以下命令来调用turtlesim服务: ``` rosservice call /turtle1/teleport_absolute x y theta ``` 在这个命令中,x和y是小海龟需要移动到的坐标,theta是小海龟旋转的角度。 例如,如果我们想让小海龟移动到坐标(5, 5)的位置,并使其朝向角度为0度,则需要执行以下命令: ``` rosservice call /turtle1/teleport_absolute 5 5 0 ``` 小海龟将会移动到这个位置,并保持在那里一段时间。 通过使用这些命令,我们可以轻松地实现ROS小海龟的定点移动。这对于学习机器人控制和路径规划等领域非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值