Tutorial or samples¶
Overview | API | Tutorial or samples
Red Ball Tracker Sample¶
Python example
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use Tracking Module to Track a Red Ball"""
import qi
import argparse
import sys
import time
def main(session, ballSize):
"""
This example shows how to use ALTracker with red ball.
"""
# Get the services ALTracker, ALMotion and ALRobotPosture.
motion_service = session.service("ALMotion")
posture_service = session.service("ALRobotPosture")
tracker_service = session.service("ALTracker")
# First, wake up.
motion_service.wakeUp()
fractionMaxSpeed = 0.8
# Go to posture stand
posture_service.goToPosture("StandInit", fractionMaxSpeed)
# Add target to track.
targetName = "RedBall"
diameterOfBall = ballSize
tracker_service.registerTarget(targetName, diameterOfBall)
# set mode
mode = "Move"
tracker_service.setMode(mode)
# Then, start tracker.
tracker_service.track(targetName)
print "ALTracker successfully started, now show a red ball to robot!"
print "Use Ctrl+c to stop this script."
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print
print "Interrupted by user"
print "Stopping..."
# Stop tracker, go to posture Sit.
tracker_service.stopTracker()
tracker_service.unregisterAllTargets()
posture_service.goToPosture("Sit", fractionMaxSpeed)
motion_service.rest()
print "ALTracker stopped."
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="127.0.0.1",
help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
parser.add_argument("--port", type=int, default=9559,
help="Naoqi port number")
parser.add_argument("--ballsize", type=float, default=0.06,
help="Diameter of ball.")
args = parser.parse_args()
session = qi.Session()
try:
session.connect("tcp://" + args.ip + ":" + str(args.port))
except RuntimeError:
print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
"Please check your script arguments. Run with -h option for help.")
sys.exit(1)
main(session, args.ballsize)
Face Tracker Sample¶
Python example
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use Tracking Module to Track a Face"""
import qi
import argparse
import sys
import time
def main(session, faceSize):
"""
This example shows how to use ALTracker with face.
"""
# Get the services ALTracker and ALMotion.
motion_service = session.service("ALMotion")
tracker_service = session.service("ALTracker")
# First, wake up.
motion_service.wakeUp()
# Add target to track.
targetName = "Face"
faceWidth = faceSize
tracker_service.registerTarget(targetName, faceWidth)
# Then, start tracker.
tracker_service.track(targetName)
print "ALTracker successfully started, now show your face to robot!"
print "Use Ctrl+c to stop this script."
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print
print "Interrupted by user"
print "Stopping..."
# Stop tracker.
tracker_service.stopTracker()
tracker_service.unregisterAllTargets()
motion_service.rest()
print "ALTracker stopped."
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="127.0.0.1",
help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
parser.add_argument("--port", type=int, default=9559,
help="Naoqi port number")
parser.add_argument("--facesize", type=float, default=0.1,
help="Face width.")
args = parser.parse_args()
session = qi.Session()
try:
session.connect("tcp://" + args.ip + ":" + str(args.port))
except RuntimeError:
print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
"Please check your script arguments. Run with -h option for help.")
sys.exit(1)
main(session, args.facesize)
LArm Tracker Sample¶
Python example
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use Tracking Module to Track a Red Ball with LArm"""
import qi
import argparse
import sys
import time
def main(session, ballSize, effector):
"""
This example shows how to use ALTracker with red ball and LArm.
"""
# Get the services ALTracker, ALMotion and ALRobotPosture.
motion_service = session.service("ALMotion")
posture_service = session.service("ALRobotPosture")
tracker_service = session.service("ALTracker")
# First, wake up.
motion_service.wakeUp()
fractionMaxSpeed = 0.8
# Go to posture stand
posture_service.goToPosture("StandInit", fractionMaxSpeed)
# Add target to track.
targetName = "RedBall"
diameterOfBall = ballSize
tracker_service.registerTarget(targetName, diameterOfBall)
# set mode
mode = "Head"
tracker_service.setMode(mode)
# set effector
tracker_service.setEffector(effector)
# Then, start tracker.
tracker_service.track(targetName)
print "ALTracker successfully started, now show a red ball to robot!"
print "Use Ctrl+c to stop this script."
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print
print "Interrupted by user"
print "Stopping..."
# Stop tracker, go to posture Sit.
tracker_service.stopTracker()
tracker_service.unregisterAllTargets()
tracker_service.setEffector("None")
posture_service.goToPosture("Sit", fractionMaxSpeed)
motion_service.rest()
print "ALTracker stopped."
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="127.0.0.1",
help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
parser.add_argument("--port", type=int, default=9559,
help="Naoqi port number")
parser.add_argument("--ballsize", type=float, default=0.06,
help="Diameter of ball.")
parser.add_argument("--effector", type=str, default="LArm",
choices=["Arms", "LArm", "RArm"],
help="Effector for tracking.")
args = parser.parse_args()
session = qi.Session()
try:
session.connect("tcp://" + args.ip + ":" + str(args.port))
except RuntimeError:
print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
"Please check your script arguments. Run with -h option for help.")
sys.exit(1)
main(session, args.ballsize, args.effector)
Generic event Tracker Sample¶
Python example
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use Tracking Module to Track an Object"""
import qi
import argparse
import sys
import time
def main(session):
"""
This example shows how to use ALTracker to track an object with trackEvent api.
This example is only a subscriber. You need to create another script to raise the tracked event.
Your events should follow this structure :
EventNameInfo {
TargetPositionInFrameWorld,
TimeStamp,
EffectorId,
HeadThreshold (optional)
}
All details are available in ALTracker API Documentation.
"""
# Get the services ALTracker, ALMotion and ALRobotPosture.
motion_service = session.service("ALMotion")
posture_service = session.service("ALRobotPosture")
tracker_service = session.service("ALTracker")
# First, wake up.
motion_service.wakeUp()
fractionMaxSpeed = 0.8
# Go to posture stand
posture_service.goToPosture("StandInit", fractionMaxSpeed)
# Set target to track.
eventName = "ALTracker/BlobDetected"
# set mode
mode = "Move"
tracker_service.setMode(mode)
# Set the robot relative position to target
# The robot stays a 50 centimeters of target with 10 cm precision
tracker_service.setRelativePosition([-0.5, 0.0, 0.0, 0.1, 0.1, 0.3])
# Then, start tracker.
tracker_service.trackEvent(eventName)
print "ALTracker successfully started."
print "Use Ctrl+c to stop this script."
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print
print "Interrupted by user"
print "Stopping..."
# Stop tracker, go to posture Sit.
tracker_service.stopTracker()
tracker_service.unregisterAllTargets()
posture_service.goToPosture("Sit", fractionMaxSpeed)
motion_service.rest()
print "ALTracker stopped."
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="127.0.0.1",
help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
parser.add_argument("--port", type=int, default=9559,
help="Naoqi port number")
args = parser.parse_args()
session = qi.Session()
try:
session.connect("tcp://" + args.ip + ":" + str(args.port))
except RuntimeError:
print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
"Please check your script arguments. Run with -h option for help.")
sys.exit(1)
main(session)