Overview | API
Pepper only
ALRecharge module provides API to manage the robot behavior about its charging station.
It allows the user to make Pepper look for its charging station, dock onto it to automatically recharge, and leave it safely.
While Pepper is docked on the charging station, all motion moves are disabled. They are automatically re-enabled when Pepper leaves the charging station.
During all these operations, the module provides a way for developers to follow the progress and the current status.
Upon calling of ALRechargeProxy::goToStation(), Pepper starts to look for its charging station around him. Once it has localized it using the bottom camera, he goes in front of it using ALTracker, stopping at 0.6m.
After charging station localization confirmation, Pepper performs a U-turn and docks on its charging station in a backward motion at a reduced speed.
Upon success, it disables motion move API. In case of a failure, Pepper moves away from the charging station in order not to collide with it and an event is raised.
This behavior can be cut down into smaller steps by calling ALRechargeProxy::lookForStation(), ALRechargeProxy::moveInFrontOfStation() and ALRechargeProxy::dockOnStation()
The function ALRechargeProxy::leaveStation() makes Pepper leave the charging station. Upon success it enables motion move API.
# -*- encoding: UTF-8 -*-
''' ALRecharge: Makes the robot move onto its charging station. '''
import argparse
from naoqi import ALProxy
def main(ip, port = 9559):
# Get proxies
recharge = ALProxy("ALRecharge", ip, port)
motion = ALProxy("ALMotion", ip, port)
# Wake the robot up.
motion.wakeUp()
# Make the robot look for its charging station
found = recharge.lookForStation()
if not found: # The charging station has not been found.
print "Station is not found."
return
# Move in front of charging station using ALTracker
correct = recharge.moveInFrontOfStation()
if not correct: # The robot has not been able to move close to the charging station.
print "Unable to move in front of the station."
return
# Start docking motion
docked = recharge.dockOnStation()
if not docked: # The docking failed.
print "Unable to dock on the charging station."
return
print "Robot successfully docked."
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="127.0.0.1", help="Robot ip address")
parser.add_argument("--port", type=int, default=9559, help="Robot port number")
args = parser.parse_args()
main(args.ip, args.port)