Turtlebot入门-监控笔记本电池状态
监控笔记本电池状态
现在,turtlebot可以去一个特定的位置,我们要确保它不会耗尽电池电量。在以前的文章中我们讨论了自动对接turtlebot,所以如果TurtleBot知道当电池低,能自动充电本身。
上网本的电池状态监测。
- ROS的Topic
ROS有一个被称为“Topic”的概念。这些主题有很多像电话会议线。你可以不断地听一个会议线,每当有什么东西是在网上说,你可以做一些事情通过一个回调函数。有一个“各种各样的上网本的电池状态会议”。你可以听它,每次知道上网本的电池的增加或减少的电量。
- 列出所有的话题
ROS和turtlebot图书馆发布很多话题。让我们看一看他们的完整列表。
在turtlebot,打开一个终端窗口运行:
roslaunch turtlebot_bringup minimal.launch
在工作站打开一个终端运行:
rostopic list
上述将给我们一个当前主题的列表。你应该看到/laptop_charge
,这让我们对上网本的电池信息。
让我们试着听它:
rostopic echo /laptop_charge
每一次你会看到一部关于包括电荷,百分比的上网本的电池信息,充电状态(1 ==正在充电,0 ==非充电)和更多的。
编写代码来监控上网本的电池状态
- 如果你还没有克隆GitHub的,先做这个。
cd ~/helloworld/
python netbook_battery.py
按CTRL+C停止它。现在让我们看一看代码。
- 在终端窗口中键入并运行:
gedit netbook_battery.py
你也可以查看GitHub上如果你喜欢。
- 你会注意到在初始化函数有:
rospy.Subscriber("/laptop_charge/",SmartBatteryStatus,self.NetbookPowerEventCallback)
这意味着,“每一次新的数据公布在线程/laptop_charge/电话功能的自我。self.NetbookPowerEventCallback
”
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):
将工作正常。
参考:
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号