Sensors¶
This section shows how to get sensors values from ALMemory in Python.
To execute them, modify the robot’s IP adress inside the example file.
FSR values¶
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use getData Method to Use FSR Sensors"""
import qi
import argparse
import sys
def main(session):
"""
This example uses the getData method to use FSR sensors.
"""
# Get the service ALMemory.
memory_service = session.service("ALMemory")
# Get The Left Foot Force Sensor Values
LFsrFL = memory_service.getData("Device/SubDeviceList/LFoot/FSR/FrontLeft/Sensor/Value")
LFsrFR = memory_service.getData("Device/SubDeviceList/LFoot/FSR/FrontRight/Sensor/Value")
LFsrBL = memory_service.getData("Device/SubDeviceList/LFoot/FSR/RearLeft/Sensor/Value")
LFsrBR = memory_service.getData("Device/SubDeviceList/LFoot/FSR/RearRight/Sensor/Value")
print( "Left FSR [Kg] : %.2f %.2f %.2f %.2f" % (LFsrFL, LFsrFR, LFsrBL, LFsrBR) )
# Get The Right Foot Force Sensor Values
RFsrFL = memory_service.getData("Device/SubDeviceList/RFoot/FSR/FrontLeft/Sensor/Value")
RFsrFR = memory_service.getData("Device/SubDeviceList/RFoot/FSR/FrontRight/Sensor/Value")
RFsrBL = memory_service.getData("Device/SubDeviceList/RFoot/FSR/RearLeft/Sensor/Value")
RFsrBR = memory_service.getData("Device/SubDeviceList/RFoot/FSR/RearRight/Sensor/Value")
print( "Right FSR [Kg] : %.2f %.2f %.2f %.2f" % (RFsrFL, RFsrFR, RFsrBL, RFsrBR) )
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)
Inertial Sensor values¶
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use getData Method to Get Inertial Values"""
import qi
import argparse
import sys
def main(session):
"""
This example uses the getData method to get Inertial Values.
"""
# Get the service ALMemory.
memory_service = session.service("ALMemory")
# Get the Gyrometers Values
GyrX = memory_service.getData("Device/SubDeviceList/InertialSensor/GyroscopeX/Sensor/Value")
GyrY = memory_service.getData("Device/SubDeviceList/InertialSensor/GyroscopeY/Sensor/Value")
print ("Gyrometers value X: %.3f, Y: %.3f" % (GyrX, GyrY))
# Get the Accelerometers Values
AccX = memory_service.getData("Device/SubDeviceList/InertialSensor/AccelerometerX/Sensor/Value")
AccY = memory_service.getData("Device/SubDeviceList/InertialSensor/AccelerometerY/Sensor/Value")
AccZ = memory_service.getData("Device/SubDeviceList/InertialSensor/AccelerometerZ/Sensor/Value")
print ("Accelerometers value X: %.3f, Y: %.3f, Z: %.3f" % (AccX, AccY,AccZ))
# Get the Compute Torso Angle in radian
TorsoAngleX = memory_service.getData("Device/SubDeviceList/InertialSensor/AngleX/Sensor/Value")
TorsoAngleY = memory_service.getData("Device/SubDeviceList/InertialSensor/AngleY/Sensor/Value")
print ("Torso Angles [radian] X: %.3f, Y: %.3f" % (TorsoAngleX, TorsoAngleY))
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)
Sonar¶
#! /usr/bin/env python
# -*- encoding: UTF-8 -*-
"""Example: Use getData Method to Use Sonars Sensors"""
import qi
import argparse
import sys
def main(session):
"""
This example uses the getData method to use sonars sensors.
"""
# Get the services ALMemory and ALSonar.
memory_service = session.service("ALMemory")
sonar_service = session.service("ALSonar")
# Subscribe to sonars, this will launch sonars (at hardware level)
# and start data acquisition.
sonar_service.subscribe("myApplication")
# Now you can retrieve sonar data from ALMemory.
# Get sonar left first echo (distance in meters to the first obstacle).
memory_service.getData("Device/SubDeviceList/US/Left/Sensor/Value")
# Same thing for right.
memory_service.getData("Device/SubDeviceList/US/Right/Sensor/Value")
# Unsubscribe from sonars, this will stop sonars (at hardware level)
sonar_service.unsubscribe("myApplication")
# Please read Sonar ALMemory keys section
# if you want to know the other values you can get.
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)