Home » Turtlebot入门教程 » Turtlebot入门-监控笔记本电池状态

Turtlebot入门-监控笔记本电池状态

监控笔记本电池状态

现在,turtlebot可以去一个特定的位置,我们要确保它不会耗尽电池电量。在以前的文章中我们讨论了自动对接turtlebot,所以如果TurtleBot知道当电池低,能自动充电本身。

上网本的电池状态监测。

  1. ROS的Topic

ROS有一个被称为“Topic”的概念。这些主题有很多像电话会议线。你可以不断地听一个会议线,每当有什么东西是在网上说,你可以做一些事情通过一个回调函数。有一个“各种各样的上网本的电池状态会议”。你可以听它,每次知道上网本的电池的增加或减少的电量。

  1. 列出所有的话题

ROS和turtlebot图书馆发布很多话题。让我们看一看他们的完整列表。
在turtlebot,打开一个终端窗口运行:

roslaunch turtlebot_bringup minimal.launch

在工作站打开一个终端运行:

rostopic list

上述将给我们一个当前主题的列表。你应该看到/laptop_charge,这让我们对上网本的电池信息。
让我们试着听它:

rostopic echo /laptop_charge

每一次你会看到一部关于包括电荷,百分比的上网本的电池信息,充电状态(1 ==正在充电,0 ==非充电)和更多的。

编写代码来监控上网本的电池状态

  1. 如果你还没有克隆GitHub的,先做这个。
cd ~/helloworld/
python netbook_battery.py

按CTRL+C停止它。现在让我们看一看代码。

  1. 在终端窗口中键入并运行:
gedit netbook_battery.py

你也可以查看GitHub上如果你喜欢。

  1. 你会注意到在初始化函数有:
rospy.Subscriber("/laptop_charge/",SmartBatteryStatus,self.NetbookPowerEventCallback)

这意味着,“每一次新的数据公布在线程/laptop_charge/电话功能的自我。self.NetbookPowerEventCallback

  1. SmartBetteryStatus 是数据类型的线程包含。此数据类型定义在包含命令(在脚本的顶部附近):
from smart_battery_msgs.msg import SmartBatteryStatus

现在让我们看看在功能NetbookPowerEventCallback。数据传递给功能,组件可以打印这样:

 print("Percent: " + str(data.percentage)) 

重要提示:稍后我们会检查是否data.percentage大于50看我们是否需要充电。Python是很严格的时候,比较不同类型的数据,所以总是用int()铸型。例子:

if (data.percentage < 50):

会导致一个错误,但:

if(int(data.percentage) < 50):

将工作正常。

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: turtlebot入门