# SoftBank Robotics documentation What's new in NAOqi 2.8?

# ALFsr Tutorial

NAOqi Sensors & LEDs - Overview | API | Tutorial

NAO only

## Using the values in ALMemory

This Python example shows how to retrieve the values in ALMemory. It gives the values of the total weight on both feet until foot contact is lost.

`sensors_fsr.py`

    #! /usr/bin/env python
    # -*- encoding: UTF-8 -*-

    """Example: Use getData Method to Use FSR Sensors"""

    import qi
    import argparse
    import sys
    import time

    def main(session):
        """
        This example uses the getData method to use FSR sensors.
        """
        # Get the service ALMemory.

        memory_service = session.service("ALMemory")

        footContact = memory_service.getData("footContact")

        while footContact:
            footContact = memory_service.getData("footContact")
            leftFoot    = memory_service.getData("leftFootTotalWeight")
            rightFoot   = memory_service.getData("rightFootTotalWeight")
            print ("Total weight on left foot: %.2f kg, on right foot: %.2f kg" % (leftFoot, rightFoot))
            time.sleep(1.0)

        print("Foot contact lost")

    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)

Another possible application is to implement a module with a callback on the event “footContactChanged” (see Event subscription for information on how to do so).

## Direct access

It is also possible to access sensors values directly, such as in the following example: `sensors_getFsrValues.py`.

    #! /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)

Glossary Site map Index Support Contact Legal Notices