WO2020110659A1 - 情報処理装置、情報処理方法、およびプログラム - Google Patents

情報処理装置、情報処理方法、およびプログラム Download PDF

Info

Publication number
WO2020110659A1
WO2020110659A1 PCT/JP2019/043841 JP2019043841W WO2020110659A1 WO 2020110659 A1 WO2020110659 A1 WO 2020110659A1 JP 2019043841 W JP2019043841 W JP 2019043841W WO 2020110659 A1 WO2020110659 A1 WO 2020110659A1
Authority
WO
WIPO (PCT)
Prior art keywords
sensor
information
position information
manipulator
controller
Prior art date
Application number
PCT/JP2019/043841
Other languages
English (en)
French (fr)
Inventor
康隆 福本
横山 正幸
Original Assignee
ソニー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to KR1020217012586A priority Critical patent/KR20210093866A/ko
Priority to EP19890537.4A priority patent/EP3889737A4/en
Priority to CN201980076542.8A priority patent/CN113168224A/zh
Priority to JP2020558270A priority patent/JPWO2020110659A1/ja
Priority to US17/291,790 priority patent/US20220026981A1/en
Publication of WO2020110659A1 publication Critical patent/WO2020110659A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/24Constructional details thereof, e.g. game controllers with detachable joystick handles
    • A63F13/245Constructional details thereof, e.g. game controllers with detachable joystick handles specially adapted to a particular type of game, e.g. steering wheels
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/212Input arrangements for video game devices characterised by their sensors, purposes or types using sensors worn by the player, e.g. for measuring heart beat or leg activity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/001Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/812Ball games, e.g. soccer or baseball
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1012Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals involving biosensors worn by the player, e.g. for measuring heart beat, limb activity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/105Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals using inertial sensors, e.g. accelerometers, gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1087Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals comprising photodetecting means, e.g. a camera
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8011Ball
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user

Definitions

  • the present disclosure relates to an information processing device, an information processing method, and a program.
  • position information of an operator is calculated by analyzing a captured image output by a camera attached to a user's head, and the calculated position information is used as the calculated position information.
  • a technique for superimposing and displaying a virtual object on an operator based on this is disclosed.
  • the image processing apparatus analyzes the captured image output by the camera mounted on the user's head, and thereby the manipulator (such as the user's hand) shown in the captured image. Position information is calculated.
  • the power consumption of the image pickup processing by the camera and the image recognition processing by the image processing device tends to be relatively large, the power consumption of the entire system becomes large by constantly executing these processing.
  • the present disclosure has been made in view of the above circumstances, and is a new and improved information processing apparatus, information processing method, and program that can more appropriately realize calculation of position information of an operator. I will provide a.
  • first sensor information output by the first sensor and used for calculating position information of the manipulator and output by a second sensor, used for calculating position information of the manipulator.
  • the second sensor information is An information processing apparatus, comprising: a calculation unit that calculates the position information of the manipulator.
  • the first sensor information output by the first sensor and used for calculating the position information of the manipulator, and the second sensor output by the second sensor, the position information of the manipulator are calculated.
  • the second sensor information to be used and the position information of the operator calculated using the first sensor information are included in a preset setting range, the second sensor information is used. Calculating the position information of the manipulator using the.
  • the first sensor information output by the first sensor and used for calculating the position information of the manipulator, and the second sensor output by the second sensor, the position information of the manipulator are calculated.
  • the second sensor information to be used and the position information of the operator calculated using the first sensor information are included in a preset setting range, the second sensor information is used.
  • FIG. 6 is a diagram for explaining an intermittent operation using the image sensor according to the first embodiment. It is a figure for demonstrating the specific example of the intermittent operation which used the image sensor which concerns on 1st Embodiment. It is a figure for demonstrating the specific example of the intermittent operation which used the image sensor which concerns on 1st Embodiment. It is a figure for demonstrating the specific example of the intermittent operation which used the image sensor which concerns on 1st Embodiment. It is a figure for demonstrating the specific example of the intermittent operation which used the image sensor which concerns on 1st Embodiment. It is a figure for demonstrating the specific example of the intermittent operation which used the image sensor which concerns on 1st Embodiment.
  • FIG. 6 is a flowchart showing an example of a process of providing contents to a user by the HMD and the controller according to the first embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for explaining a modification concerning a 1st embodiment. It is a figure for demonstrating the specific example of the setting range which concerns on 2nd Embodiment.
  • 9 is a flowchart showing an example of a process of providing content to a user by the HMD and the controller according to the second embodiment.
  • It is a block diagram which shows the structural example of each apparatus which concerns on 3rd Embodiment.
  • It is a flow chart which shows an example of processing of providing contents to a user by an HMD and a controller concerning a 3rd embodiment.
  • It is a schematic diagram which shows the time change image of the position error which can occur in the position estimation process based on inertial navigation.
  • FIG. 1 is a diagram showing a configuration example of an information processing system according to the first embodiment.
  • the information processing system according to the first embodiment includes a head mounted display 100 (hereinafter, referred to as “HMD100”) and a plurality of controllers 200 (in the example of FIG. 1, the controllers 200a to 200a to 200e).
  • HMD100 head mounted display 100
  • controllers 200a to 200e may be simply referred to as the controller 200 unless it is necessary to distinguish them.
  • the controller 200 is an information processing device attached to a part of the user's body. Then, the controller 200 includes a first sensor that outputs first sensor information used to calculate position information of the manipulator (in other words, the first sensor is attached to a part of the user's body).
  • the “operator” is a mounting part of the controller 200 on the user's body (for example, a wrist part on which the controller 200 is mounted, etc., hereinafter also simply referred to as “mounting part”), or a part other than the mounting part ( For example, an elbow portion to which the controller 200 is not attached, etc., hereinafter also simply referred to as “non-attached portion”).
  • the operator is a mounting portion of the controller 200 on the user's body (hereinafter, also simply referred to as “controller 200”).
  • the “first sensor” is an inertial sensor including an acceleration sensor, a gyro sensor (angular velocity sensor), etc. (hereinafter referred to as "IMU: Internal Measurement Unit”), etc., and the “first sensor information” is , Acceleration (Acceleration) and angular velocity (Angular velocity).
  • the controller 200 provides the HMD 100 with the first sensor information output by the IMU.
  • the controller 200 be attached to a reference joint part of the body (for example, the waist or the head) or near the distal end of the body (for example, the wrist, ankle, or the head).
  • the controller 200a is attached to the user's waist
  • the controllers 200b and 200e are attached to the wrist
  • the controllers 200c and 200d are attached to the ankles.
  • the number of controllers 200 and the positions of the mounting portions are not limited to the example shown in FIG.
  • the HMD 100 is an information processing device that is mounted on the user's head to provide various contents to the user.
  • the HMD 100 may be an optically transmissive (optical see-through) device that allows a user to directly see the outside.
  • the HMD 100 can provide various contents to the user by superimposing and displaying the virtual object on the real object that the user directly sees.
  • the HMD 100 is an optical transmission type device
  • the type of the HMD 100 is not particularly limited.
  • the HMD 100 may be a non-transmissive device or a video transmissive (video see-through) device.
  • the HMD 100 not only performs so-called AR (Augmented Reality) display, in which a virtual object is superimposed and displayed on a real object, but also displays the virtual world to the user by displaying the virtual object, so-called VR (Virtual Reality). Display may be performed (note that the display is not limited to AR display and VR display).
  • the present disclosure may not be embodied as the HMD 100.
  • the present disclosure may be embodied as various devices such as a smartphone, a tablet PC (Personal Computer), a portable game machine, or a digital camera.
  • the “virtual object” is a concept that includes some visually appealing image such as a still image or a moving image.
  • the HMD 100 calculates the position information and the posture information of the controller 200 (operator) based on the first sensor information output by the IMU (first sensor) of the controller 200. More specifically, the HMD 100 includes an IMU similarly to the controller 200, and acquires the sensor information output by the IMU. Then, the HMD 100 positions the respective mounting portions of the HMD 100 and the controller 200 based on the first sensor information output by the IMU (first sensor) of the controller 200 and the sensor information output by the IMU of the own device. Calculate information and attitude information.
  • the HMD 100 calculates the position information and the attitude information by inertial navigation, and corrects the drift error generated at that time by the regression model, thereby obtaining the highly accurate position information and the attitude information of each mounting portion of the HMD 100 and the controller 200. calculate. The method will be described in detail later.
  • the HMD 100 calculates skeleton information including the position information and the posture information of each part in the skeleton structure based on the position information and the posture information of each mounting part.
  • the skeleton structure includes information on body parts and bones that are line segments connecting the parts.
  • the parts in the skeleton structure correspond to, for example, the terminal parts of the body and joint parts.
  • the bone in the skeleton structure may correspond to, for example, a human bone, but the position and the number of bones do not necessarily match the actual human skeleton.
  • the HMD 100 can calculate the position information and the posture information of not only the mounted portion of the controller 200 but also the non-mounted portion.
  • the method of calculating the position information and the posture information of the mounted portion and the non-mounted portion by the HMD 100 is not limited to the above method (method using inertial navigation and regression model).
  • the HMD 100 displays the virtual object so as to be superimposed on the real world based on the position information and the posture information of the controller 200 (operator). However, the accuracy is not sufficient only by the processing based on the sensor information output by the IMU. Since it does not exist, it is difficult to superimpose the virtual object accurately. Therefore, the HMD 100 includes, in addition to the IMU, a second sensor that outputs second sensor information used to calculate position information of the controller 200 (operator).
  • the “second sensor” according to the first embodiment is an image sensor (in other words, the HMD 100 includes a camera that uses the image sensor), and the “second sensor information” is an image. It is a captured image output by the sensor.
  • the second sensor information is not limited to the visualized captured image, and may be an electric signal output by photoelectric conversion or the like.
  • the camera is provided in the HMD 100 so that the angle of view thereof corresponds to the field of view of the user (in other words, the camera is directed in the same direction as the line of sight of the user).
  • the camera is not necessarily limited to this).
  • the HMD 100 can calculate the position information and the posture information of the controller 200 (operator) based on the captured image (second sensor information) output by the image sensor. For example, the HMD 100 extracts the characteristic amount of the subject of the captured image by analyzing the captured image (second sensor information), compares it with the characteristic amount of the controller 200 (operator) acquired in advance, and compares them with each other. The controller 200 (operator) shown in the picked-up image is detected by calculating the degree of similarity. Then, the HMD 100 calculates the position information and the posture information based on the size and the form (including the shape and the pattern) of the controller 200 (operator) shown in the captured image.
  • the HMD 100 uses the first sensor information output by the IMU (first sensor) and the captured image (second sensor information) output by the image sensor (second sensor),
  • the position information and attitude information of the controller 200 (operator) can be calculated.
  • the process of calculating the position information and the posture information of the manipulator using the captured image (second sensor information) is the same as the process of calculating the position information and the posture information of the manipulator using the first sensor information. Compared to this, higher accuracy can be achieved, but more power is consumed.
  • the HMD 100 intermittently uses the image sensor (second sensor) when calculating the position information and the posture information of the controller 200 (operator).
  • the HMD 100 constantly outputs the IMU (first sensor) while the content is being provided to the user.
  • the position information and the attitude information of the controller 200 (operator) are continuously calculated based on the sensor information of (the calculation of the position information and the attitude information is represented as “ON” in FIG. 2).
  • the HMD 100 determines that the image sensor The position information and the posture information of the controller 200 (operator) are calculated using the second sensor information output by the (second sensor).
  • the image sensor (second sensor) is used more than the period in which the first sensor information is acquired in the position information calculation process using the first sensor information output by the IMU (first sensor). It is shown that the period during which the second sensor information is acquired is shorter in the calculation process of the position information using the second sensor information output by the sensor.
  • the period during which the first sensor information is acquired means from a certain time point to another time point (for example, from the start time point to the end time point of the position information calculation process). It is to be noted that (up to) includes the total value of the periods during which the first sensor information (second sensor information) is acquired. As described above, the HMD 100 can reduce power consumption by intermittently using the image sensor (second sensor).
  • the “setting range” may be, for example, a range within the angle of view of a camera that uses the image sensor (second sensor). That is, when the position information of the controller 200 (operator) calculated using the first sensor information is included in the range (set range) within the angle of view of the camera, the HMD 100 causes the captured image ( By analyzing the second sensor information), the position information and the posture information of the controller 200 (operator) shown in the captured image are calculated with higher accuracy.
  • the camera is provided in the HMD 100 so that its angle of view corresponds to the field of view of the user (in other words, the setting range corresponds to the field of view of the user).
  • the position information and the posture information of the controller 200 can be calculated with higher accuracy. Therefore, the HMD 100 can more accurately superimpose and display the virtual object on the real world based on the calculated position information and posture information.
  • the HMD 100 displays the virtual object of the tennis racket as if the virtual object of the tennis racket is held by the user's hand according to the swing of the arm of the user, and displays the virtual object of the tennis ball so as to be hit by the tennis racket. indicate.
  • FIG. 3 is a diagram of a user who plays a tennis game using the HMD 100 as viewed from above.
  • FIG. 3 shows a state before the user hits the tennis ball with the tennis racket.
  • the controller 200 (controller 200b and controller 200e in the example of FIG. 3), which is an operator, is not included in the range within the angle of view ⁇ th of the camera, and the virtual object of the tennis racket (hereinafter referred to as “tennis racket 10a”).
  • the virtual object of the tennis ball hereinafter referred to as “tennis ball 10b”) is not displayed.
  • FIG. 4 is a diagram showing the field of view of the user before the user hits the tennis ball 10b with the tennis racket 10a (the state of FIG. 3). As shown in FIG. 4, the controller 200 (operator), the tennis racket 10a, and the tennis ball 10b are not visible to the user.
  • FIG. 5 shows a state after the user hits the tennis ball 10b with the tennis racket 10a.
  • the controller 200b (operator) is included in the range within the angle of view ⁇ th of the camera, and the tennis racket 10a and the tennis ball 10b are displayed in a superimposed manner in the real world.
  • FIG. 6 is a diagram showing a field of view of the user in a state after the user hits the tennis ball 10b with the tennis racket 10a (state of FIG. 5). As shown in FIG. 6, the user can see the controller 200b (operator) attached to the wrist, and can also see the tennis racket 10a and the tennis ball 10b superimposed and displayed in the real world. Is.
  • the HMD 100 calculates the position information and the posture information by using the IMU (first sensor) in a range other than the setting range, and uses the image sensor (second sensor) in the important range (setting range) in the content.
  • the position information and the posture information can be calculated with higher accuracy by using the information.
  • the HMD 100 can reduce power consumption by intermittently using the image sensor (second sensor) as described above.
  • the setting range used in the processing does not necessarily have to be the range within the angle of view ⁇ th of the camera.
  • the setting range may be a range corresponding to a more important space in the content provided to the user.
  • FIG. 7 is a block diagram showing a configuration example of each device according to the first embodiment.
  • the controller 200 includes an IMU 210, a control unit 220, and a communication unit 230.
  • the IMU 210 has a configuration that functions as a first sensor. More specifically, the IMU 210 includes an acceleration sensor, a gyro sensor (angular velocity sensor), and the like.
  • the acceleration sensor included in the IMU 210 outputs acceleration as the first sensor information, and the acceleration output by the acceleration sensor may be the acceleration of the controller 200 in the local coordinate system set for each controller 200.
  • the gyro sensor included in the IMU 210 outputs the angular velocity as the first sensor information, and the angular velocity output by the gyro sensor may be the angular velocity of the controller 200 in the local coordinate system.
  • the frequency of the output of the first sensor information by the IMU 210 may be, for example, about 800 [Hz] (of course, not limited to this).
  • the first sensor of the first sensor and the second sensor is used as a pair of predetermined devices provided in one device together with the second sensor.
  • the IMU 210 first sensor
  • the image sensor 120 second sensor
  • the HMD 100 uses the IMU 210 (first sensor) of the controller 200 and the IMU 110 (predetermined device) of its own device as a pair, and analyzes the sensor information to detect the position information of the controller 200 (operator). And the posture information can be calculated.
  • “to be used as a pair” includes “to use one or more IMU 210 (first sensor) of the controller 200 and the IMU 110 (predetermined device) together” ( That is, the number of controllers 200 used for processing is not particularly limited).
  • the control unit 220 is configured to integrally control the overall processing performed by the controller 200.
  • the control unit 220 can control activation and deactivation of each component.
  • the control unit 220 controls the communication by the communication unit 230 and causes the HMD 100 to transmit the first sensor information (angular velocity and acceleration) acquired by the IMU 210.
  • the control unit 220 may perform a part of the processing performed by the HMD 100 on the first sensor information acquired by the IMU 210, or may transmit the processing result obtained by the processing to the HMD 100.
  • the control content of the control unit 220 is not limited to these.
  • the control unit 220 may control a process generally performed in various servers, a general-purpose computer, a PC, a tablet PC, or the like (for example, a process related to an OS (Operating System)).
  • the communication unit 230 is configured to send and receive data to and from an external device (particularly the HMD 100) by wire or wirelessly.
  • the communication unit 230 is an external device such as a wired LAN (Local Area Network), a wireless LAN, Wi-Fi (Wireless Fidelity, registered trademark), infrared communication, Bluetooth (registered trademark), short-distance/contactless communication, or the like. Wirelessly communicate directly with or via a network access point.
  • the configuration example of the controller 200 has been described.
  • the configuration described above with reference to FIG. 7 is merely an example, and the configuration of the controller 200 is not limited to this example.
  • the controller 200 may have a configuration not shown in FIG. 7.
  • the configuration shown in FIG. 7 may be provided in an external device (not shown), and the controller 200 may realize the functions described above by communicating and cooperating with the external device.
  • each controller 200 may have a different configuration (in this embodiment, the case where each controller 200 has the same configuration is described as an example).
  • the HMD 100 includes an IMU 110, an image sensor 120, a communication unit 130, a control unit 140, a display unit 150, an input unit 160, and a storage unit 170.
  • the control unit 140 also includes an acquisition unit 141, a calculation unit 142, and a display control unit 143.
  • the IMU 110 has a configuration including an acceleration sensor, a gyro sensor (angular velocity sensor), and the like.
  • the acceleration sensor included in the IMU 110 outputs acceleration, and the acceleration output by the acceleration sensor may be the acceleration of the HMD 100 in the local coordinate system set in the HMD 100.
  • the gyro sensor included in the IMU 110 outputs an angular velocity, and the angular velocity output by the gyro sensor may be the angular velocity of the HMD 100 in the local coordinate system.
  • the image sensor 120 is configured to function as a second sensor. More specifically, the image sensor 120 is a sensor provided in a camera (not shown), and has a plurality of pixels on an image forming surface, and each pixel is an object image formed by an imaging lens (not shown). Is converted into an electric signal to output a captured image (second sensor information).
  • the image sensor 120 is, for example, a CCD sensor array or a CMOS sensor array, but is not necessarily limited to these.
  • the frame rate of the image sensor 120 may be, for example, about 60 [fps] (of course, it is not limited to this).
  • a captured image (second sensor information) is obtained when the position information calculated using the angular velocity or the like (first sensor information) falls within the setting range. Is started, and the acquisition of the captured image (second sensor information) is stopped when the position information calculated using the angular velocity or the like (first sensor information) is out of the set range.
  • the controller 200 in the calculation process of the position information of the controller 200 (operator), in the period in which the captured image (second sensor information) is acquired rather than the period in which the angular velocity or the like (first sensor information) by the IMU is acquired. Is shorter.
  • the acquisition frequency of the captured image (second sensor information) is increased in response to the position information calculated using the angular velocity and the like (first sensor information) falling within the setting range, and the angular velocity and the like (second sensor information) are acquired.
  • the acquisition frequency of the captured image (second sensor information) may be reduced in response to the position information calculated using the first sensor information) falling outside the set range.
  • position information of the controller 200 (operator) is calculated using a high rate angular velocity or the like (first sensor information), and controller 200 using a low frame rate captured image (second sensor information). Detection of (operator) (it should be noted that the detection is performed to determine whether or not the controller 200 is within the set range, not the calculation of the position information of the controller 200).
  • the position information calculated using the angular velocity or the like falls within the set range
  • the frame rate of the captured image (second sensor information) is increased, and the captured image of the high frame rate.
  • the position information may be calculated using (second sensor information).
  • acquisition and “acquisition frequency” (of the first sensor information and the second sensor information) described above refer to various information (first sensor information and It may refer to acquisition or acquisition frequency of the second sensor information) or acquisition or acquisition frequency of various information (first sensor information or second sensor information) from various sensors by the acquisition unit 141 of the HMD 100.
  • acquisition and acquisition frequency refer to various information (first sensor information and It may refer to acquisition or acquisition frequency of the second sensor information) or acquisition or acquisition frequency of various information (first sensor information or second sensor information) from various sensors by the acquisition unit 141 of the HMD 100.
  • the communication unit 130 is configured to send/receive data to/from an external device (particularly the controller 200) by wire or wirelessly.
  • the communication unit 130 wirelessly communicates with an external device directly or via a network access point by a method such as a wired LAN, a wireless LAN, Wi-Fi, infrared communication, Bluetooth (registered trademark), and short-range/contactless communication. ..
  • the control unit 140 is configured to control overall processing performed by the HMD 100.
  • the control unit 140 can control activation and deactivation of each component.
  • the control content of the control unit 140 is not particularly limited.
  • the control unit 140 may control processing generally performed in various servers, general-purpose computers, PCs, tablet PCs, etc. (for example, processing relating to the OS).
  • the acquisition unit 141 is configured to acquire various information. More specifically, the acquisition unit 141 includes the first sensor information output by the IMU 210 (first sensor) of the controller 200 and the second sensor information output by the image sensor 120 (second sensor). To get. Furthermore, the acquisition unit 141 also acquires sensor information output by the IMU 110 included in the own device. The acquisition unit 141 provides the acquired information to the calculation unit 142.
  • the calculation unit 142 is configured to calculate position information and posture information of the HMD 100 and the controller 200 (operator). More specifically, the calculation unit 142, based on the first sensor information output by the IMU 210 (first sensor) of the controller 200 and the sensor information output by the IMU 110, attaches each of the HMD 100 and the controller 200. Position information and orientation information of the part are calculated. For example, the HMD 100 calculates the position information by inertial navigation and corrects the drift error generated at that time by the regression model, so that the HMD 100 and the controller 200 (operator) have high-accuracy position information and attitude information of each mounting portion. Is calculated (the method will be described in detail later).
  • the calculation unit 142 also calculates skeleton information including position information and posture information of each part in the skeleton structure based on the position information and posture information of the HMD 100 and the controller 200 (operator). More specifically, the calculation unit 142 calculates the skeleton information by using inverse kinematics (IK) calculation.
  • IK inverse kinematics
  • the inverse kinematics calculation is a technique for calculating the displacement of each joint part from the position information and posture information of the end part.
  • each part of the body is regarded as a simple link mechanism consisting of a certain number of bones of known length (for example, an arm is a link consisting of two bones of known length).
  • the skeleton information is calculated by setting the degree of freedom of the link mechanism and calculating the angle formed by each bone.
  • the calculation unit 142 intermittently uses the image sensor 120 (second sensor) based on the position information of the controller 200 (operator) included in the skeleton information. More specifically, the positional information of the controller 200 (operator) included in the skeleton information (positional information calculated using the first sensor information) is the captured image (second image) acquired by the image sensor 120. Sensor information of the position information) is used to define the coordinate system of the position information calculated using the second sensor information (hereinafter, the coordinate system of the position information calculated using the second sensor information may be referred to as a “global coordinate system”). In other words, the position information calculated using the first sensor information and the position information calculated using the second sensor information are defined by the global coordinate system).
  • the calculation unit 142 can determine whether the position information of the controller 200 (operator) included in the skeleton information is included in the preset setting range.
  • the calculation unit 142 uses the second sensor information output by the image sensor 120 to control the controller 200 (operator). Position information is calculated.
  • the calculation unit 142 causes the camera to capture an image.
  • the position information of the controller 200 (operator) is calculated using the image (second sensor information). More specifically with reference to FIG. 8, the position vector A of the controller 200 (the controller 200b attached to the right wrist in the example of FIG. 8) and the camera when the base point O of the angle of view of the camera is used as a starting point Let ⁇ be the angle formed by the direction vector H of.
  • the calculation unit 142 causes the controller 200b (operator) to fall within the range of the angle of view of the camera. It is determined that the position information is included, and position information calculation processing using a captured image of the camera (second sensor information) is performed. On the other hand, when the relationship of ⁇ > ⁇ th/2 is established, the calculation unit 142 determines that the controller 200b (operator) is not included in the range within the angle of view of the camera, and the first sensor acquired from the IMU 210. The position information calculation process using the information is continued. Although the determination process based on the horizontal angle of view ⁇ th of the camera has been described with reference to FIG. 8, the same determination process can be performed for the vertical angle of view of the camera.
  • the calculation unit 142 analyzes the imaged image of the camera (second sensor information). The feature amount of the subject in the captured image is extracted with, and the degree of similarity between them is calculated by comparing with the feature amount of the controller 200 (operator) acquired in advance. ) Is detected. Then, the calculation unit 142 calculates the position information and the posture information based on the size and the form (including the shape and the pattern) of the controller 200 (operator) shown in the captured image.
  • the calculation unit 142 uses the position information and the posture information of the controller 200 (operator) calculated using the captured image, and the position information calculated using the sensor information acquired from the IMU (IMU110 and IMU210). And the attitude information is corrected (this correction processing is equivalent to calculating the position information of the manipulator using the first sensor information and the second sensor information). Note that the calculation unit 142 uses the position information and the attitude information of the controller 200 (operator) calculated using the captured image as the position information and the attitude information of the controller 200 (operator) without performing the correction. Good.
  • various measures may be taken in order to simplify the image processing when calculating the position information and the posture information of the controller 200 (operator) using the captured image.
  • a marker coated with a so-called retroreflective material hereinafter, referred to as “reflection marker” having a property of strongly reflecting infrared light may be provided on the surface of the controller 200.
  • the calculation unit 142 irradiates the reflection marker with infrared light from the outside (for example, the HMD 100) and analyzes the captured image in which the reflected light is reflected, whereby the calculation unit 142 causes the position information and the posture of the controller 200 in the captured image. Information can be calculated easily.
  • the type of the retroreflective member is not particularly limited, but a material having transparency in the visible light region can be preferably used.
  • a transparent or semi-transparent retroreflective member in the visible region the reflected light does not obstruct the eyes while facilitating the calculation of the position information and the posture information of the controller 200.
  • a self-luminous light source (eg, LED) may be provided on the surface of the controller 200. This makes it easier for the calculation unit 142 to calculate the position information and the posture information of the controller 200 in the captured image by analyzing the captured image in which the light emitted from the light source is reflected.
  • the type of light source is not particularly limited.
  • the HMD 100 may store in advance information regarding the size and shape of the controller 200.
  • the calculation unit 142 compares the pre-stored information regarding the size and shape with the size and shape of the controller 200 shown in the captured image to obtain the position information and the posture information of the controller 200 in the captured image. It becomes easy to calculate.
  • the calculation unit 142 calculates the position information and the posture information of the HMD 100 using the Visual SLAM (Simultaneous localization and mapping).
  • Visual SLAM is a technology that can perform self-position/orientation calculation and map creation at the same time by analyzing images captured by a camera in an unknown environment.
  • the method of realizing the Visual SLAM is not particularly limited, and the calculation unit 142 can calculate the position information and the attitude information of the HMD 100 using the known method of realizing the Visual SLAM.
  • the use of the Visual SLAM to calculate the position information and the posture information of the HMD 100 is merely an example, and the method of calculating the position information and the posture information of the HMD 100 is not limited to this.
  • the display control unit 143 is configured to control the display of the virtual object by the display unit 150 based on the position information and the posture information of the controller 200 (operator) calculated by the calculation unit 142. For example, the display control unit 143 controls the display unit based on the position information and the posture information of the controller 200 (operator) to display the virtual object on the controller 200 (operator) in a superimposed manner.
  • the display unit 150 is configured to display a virtual object in the field of view of the user. More specifically, the display unit 150 displays the virtual object so as to be superimposed on the real world under the control of the display control unit 143.
  • the display method by the display unit 150 is not particularly limited, and can be flexibly changed according to the type of the HMD 100 and the like.
  • the input unit 160 is configured to receive an input from the user.
  • the input unit 160 includes an input device such as a touch panel, a button, a switch, a microphone, a mouse, or a keyboard, and a user can input desired information by using these input devices.
  • the input device included in the input unit 160 is not particularly limited.
  • the storage unit 170 is configured to store various types of information.
  • the storage unit 170 stores programs and parameters used by each component of the HMD 100.
  • the storage unit 170 may store the sensor information acquired by each sensor.
  • the content of the information stored in the storage unit 170 is not limited to these.
  • the configuration described above with reference to FIG. 7 is merely an example, and the configuration of the HMD 100 is not limited to this example.
  • the HMD 100 may not include a part of the configuration illustrated in FIG. 7 or may include a configuration not illustrated in FIG. 7.
  • the configuration shown in FIG. 7 may be provided in an external device (not shown), and the HMD 100 may realize the functions described above by communicating and cooperating with the external device.
  • the HMD 100 includes each controller 200. Instead of communicating with the hub device, various information may be received.
  • an external server is separately provided, the HMD 100 and the external server may realize the above various processes by distributed processing.
  • FIG. 9 is a flowchart showing an example of a process of providing content to the user by the HMD 100 and the controller 200.
  • a reflective marker is provided on the surface of the controller 200 in order to simplify the image processing when calculating the position information and the attitude information of the controller 200 (operator).
  • step S1000 the acquisition unit 141 of the HMD 100 acquires the first sensor information acquired by the IMU 210 of the controller 200 (operator) and the sensor information acquired by the IMU 110.
  • step S1004 the calculation unit 142 calculates the position information and the posture information of the controller 200 (operator) based on the first sensor information from the IMU 210 and the sensor information from the IMU 110.
  • step S1008 the calculation unit 142 determines whether or not the controller 200 (operator) has entered the range (set range) within the angle of view of the camera.
  • the acquisition unit 141 acquires the image sensor 120 in step S1012. A captured image (second sensor information) is acquired.
  • step S1016 the calculation unit 142 attempts to detect the reflection marker included in the controller 200 by analyzing the captured image (second sensor information).
  • the calculation unit 142 uses the position information and the attitude information of the controller 200 calculated using the first sensor information. , And corrects based on the detected reflection marker (in other words, the controller 200 provided with the reflection marker).
  • step S1016/No When it is determined that the controller 200 has entered the range (set range) within the angle of view of the camera, but the reflection marker provided in the controller 200 is not detected (step S1016/No), the process proceeds to step S1024. Then, it is determined that the imaging condition or the recognition performance has a cause of failure in detecting the reflective marker, and the calculation unit 142 tries to detect the reflective marker by switching the internal processing of image recognition. For example, when the imaging environment is too bright (for example, when the illuminance is too high), the calculation unit 142 may increase the intensity of the infrared light with which the reflective marker is irradiated to make it easier to detect the reflective marker. In addition, when the moving speed of the controller 200 is too fast, the calculation unit 142 may increase the frame rate of the camera.
  • the calculation unit 142 may switch to a more accurate algorithm. Note that these are merely examples, and the content of the processing performed by the calculation unit 142 for facilitating detection of the reflection marker is not particularly limited. If the reflection marker can be detected by switching the internal processing of image recognition, the calculation unit 142 corrects the position information and the posture information of the controller 200 based on the reflection marker in step S1020.
  • step S1028 the display control unit 143 controls the display unit 150 based on the position information and the posture information of the controller 200 to display the virtual object by superimposing it on the real world.
  • step S1032 the control unit 220 determines whether the content has ended. If it is determined that the content has ended (step S1032/Yes), a series of processes ends, and if it is determined that the content has not ended (step S1032/No), the processes of steps S1000 to S1028 continue. To be done.
  • the setting range may include a range outside the angle of view of the camera.
  • the setting range may be within the angle ⁇ th′. More specifically, as shown in FIG. 10, when the relationship of ⁇ th′/2 is established ( ⁇ is the angle formed by the position vector A of the controller 200 and the direction vector H of the camera), the calculation unit 142.
  • the controller 200b (operator) is included in the setting range, and starts the calculation process of the position information and the posture information using the captured image of the camera (second sensor information).
  • the buffer is provided, and the range within the angle ⁇ th′ wider than the angle of view ⁇ th is set as the setting range, so that the calculation unit 142 causes the controller 200 to display an image before entering the range within the angle of view ⁇ th. Since the process can be started, the position information and the posture information of the controller 200 shown in the captured image can be calculated earlier. This is particularly useful when the view angle ⁇ th of the camera is narrower than the display view angle of the HMD 100.
  • the determination process based on the horizontal angle ⁇ th′ of the camera has been described with reference to FIG. 10, the same determination process can be performed for the vertical angle of the camera.
  • the setting range may be a range within the angle ⁇ th′′. More specifically, as shown in FIG. 11, when the relationship of ⁇ th′′/2 is established, the calculation unit 142 determines that the controller 200b (operator) is included in the setting range, and the calculation unit of the camera 200b. The calculation process of the position information and the posture information using the captured image (second sensor information) is started. Note that in this case as well, similar determination processing can be performed for the vertical angle of the camera.
  • the set range may be a region having a predetermined shape in the captured image.
  • the set range may be an area 20 of a predetermined shape located in the lower right part of the captured image.
  • FIG. 12 shows the case where the content of the tennis game is provided as an example.
  • the lower right portion of the captured image is an area where the controller 200b attached to the right wrist is easily visible.
  • the HMD 100 can easily calculate the position information and the attitude information of the controller 200. Further, by limiting the setting range in this way, the power consumption of the HMD 100 is reduced.
  • the shape of the set range in the captured image is not particularly limited.
  • the calculation unit 142 calculates the position information by inertial navigation and corrects the drift error generated at that time by the regression model to calculate the position information of each mounting portion of the HMD 100 and the controller 200.
  • the accuracy of the IMU IMU 110 and IMU 210
  • the drift error that occurs during position calculation by inertial navigation will be small, so the calculation unit 142 does not have to perform correction using the regression model.
  • the calculation unit 142 causes the calculation unit 142 to acquire the first sensor acquired by the IMU 210.
  • the position information and the posture information of the object can be calculated with high accuracy. For example, as shown in FIG. 13, when the controller 200f including the IMU 210 is attached to the tennis racket (real object) held by the user, the calculation unit 142 increases the position information and the posture information of the tennis racket. It can be calculated accurately.
  • Second Embodiment> (2.1. Overview) The above has described the first embodiment according to the present disclosure. Subsequently, a second embodiment according to the present disclosure will be described.
  • the IMU 210 is used as the first sensor and the image sensor 120 is used as the second sensor.
  • the IMU 210 is used as the first sensor and the magnetic sensor is used as the second sensor.
  • the process of calculating the position information and the posture information of the manipulator using the magnetic sensor is the process of calculating the position information and the posture information of the manipulator using the IMU 210 (first sensor). Higher accuracy can be achieved, but more power is consumed.
  • the HMD 100 intermittently uses the magnetic sensor (second sensor) when calculating the position information and the posture information of the manipulator.
  • the HMD 100 calculates the position information and the posture information using the IMU 210 (first sensor) or the like in a range other than the setting range, and the magnetic sensor (second sensor) in the range (setting range) important in the content. ) Can be used to calculate highly accurate position information and posture information.
  • the predetermined area in the entire circumference of the user wearing the HMD 100 can be calculated.
  • the region 21 on the front side of the frontal plane of the user and the region 22 on the rear side of the frontal plane can be set as the setting range.
  • FIG. 15 is a block diagram showing a configuration example of each device according to the second embodiment. Note that, hereinafter, description of the same contents as those of the respective configurations according to the first embodiment will be omitted, and different contents will be mainly described.
  • the controller 200 according to the second embodiment includes an IMU 210, a control unit 220, a communication unit 230, and a magnetic sensor 240.
  • the magnetic sensor 240 functions as a second sensor and is configured to output the magnetic detection information as the second sensor information by detecting the magnetism generated from the magnetic generation unit 180 included in the HMD 100.
  • the magnetic sensor 240 may be configured by, for example, a Hall element, but is not necessarily limited to this.
  • the control unit 220 controls the communication by the communication unit 230 and causes the HMD 100 to transmit the magnetic detection information (second sensor information) acquired by the magnetic sensor 240.
  • the configuration shown in FIG. 15 is merely an example, and the configuration of the controller 200 according to the second embodiment is not limited to this example.
  • the HMD 100 according to the second embodiment includes an IMU 110, an image sensor 120, a communication unit 130, a control unit 140, a display unit 150, an input unit 160, and a storage unit 170. And a magnetic field generator 180.
  • the control unit 140 also includes an acquisition unit 141, a calculation unit 142, and a display control unit 143.
  • the magnetism generating unit 180 is configured to generate magnetism (magnetic field) to be detected by the magnetic sensor 240.
  • the magnetic field generation unit 180 may be configured by, for example, a magnetic field generation coil, but is not necessarily limited to this.
  • the calculation unit 142 uses the skeleton information based on the first sensor information output by the IMU 210 (first sensor) of the controller 200 and the sensor information output by the IMU 110 of the own device. After calculating, the magnetic field generator 180 and the magnetic sensor 240 (second sensor) are used intermittently based on the position information of the operator included in the skeleton information. More specifically, the calculation unit 142, when the position information of the manipulator included in the skeleton information is included in a preset setting range, the magnetic detection information (second sensor information) output by the magnetic sensor 240. A known magnetic tracking process is performed using to calculate position information and attitude information of the operator.
  • the calculation unit 142 calculates the position information and the posture information of the HMD 100 by performing the process related to the Visual SLAM using the captured image output by the image sensor 120.
  • the configuration shown in FIG. 15 is merely an example, and the configuration of the HMD 100 according to the second embodiment is not limited to this example.
  • the magnetic field generator 180 may be included in the controller 200, and the magnetic sensor 240 may be included in the HMD 100.
  • FIG. 16 is a flowchart showing an example of processing of providing content to the user by the HMD 100 and the controller 200.
  • step S1100 the acquisition unit 141 of the HMD 100 acquires the first sensor information acquired by the IMU 210 of the controller 200 (operator) and the sensor information acquired by the IMU 110.
  • step S1104 the calculation unit 142 calculates the position information and the attitude information of the controller 200 (operator) based on the first sensor information from the IMU 210 and the sensor information from the IMU 110.
  • step S1108 the calculation unit 142 determines whether or not the controller 200 (operator) has entered the set range.
  • the acquisition unit 141 causes the magnetic sensor 240 to acquire the magnetic detection information (second sensor information). ) To get.
  • step S1116 the calculation unit 142 calculates the position information and the posture information of the controller 200 by analyzing the magnetic detection information (second sensor information).
  • step S1120 the calculation unit 142 corrects the position information and the posture information of the controller 200 calculated using the first sensor information based on the calculation result.
  • step S1124 the display control unit 143 controls the display unit 150 based on the position information and the posture information of the controller 200 to display the virtual object in a superimposed manner on the real world.
  • step S1128 the control unit 220 determines whether the content has ended. When it is determined that the content has ended (step S1128/Yes), a series of processes ends, and when it is determined that the content has not ended (step S1128/No), the processes of steps S1100 to S1124 continue. To be done.
  • the IMU 210 is used as the first sensor, the image sensor 120 is used as the second sensor, and in the second embodiment, the IMU 210 is used as the first sensor, and the second sensor is used.
  • the magnetic sensor 240 was used as On the other hand, in the third embodiment, the magnetic sensor 240 is used as the first sensor and the image sensor 120 is used as the second sensor.
  • the magnetic sensor 240 is a pair of the magnetic field generator 180 (predetermined device) provided in the HMD 100 (one device) together with the image sensor 120 (second sensor). Used.
  • the process of calculating the position information and the posture information of the manipulator by using the image sensor 120 (second sensor) is the process of calculating the position information and the posture information of the manipulator by using the magnetic sensor 240 (first sensor). Higher accuracy can be achieved, but more power is consumed. Therefore, the HMD 100 intermittently uses the image sensor 120 (second sensor) when calculating the position information and the posture information of the manipulator. As a result, the HMD 100 calculates the position information and the posture information using the magnetic sensor 240 (first sensor) in a range other than the setting range, and the image sensor 120 (second range) in the range (setting range) important in the content. Sensor) can be used to calculate highly accurate position information and posture information.
  • FIG. 17 is a block diagram showing a configuration example of each device according to the third embodiment.
  • the controller 200 includes a control unit 220, a communication unit 230, and a magnetic sensor 240. Note that these configurations have the same functions as the configurations according to the second embodiment described with reference to FIG. 15, and thus description thereof will be omitted.
  • the HMD 100 includes an image sensor 120, a communication unit 130, a control unit 140, a display unit 150, an input unit 160, a storage unit 170, and a magnetic field. And a generating unit 180.
  • the control unit 140 also includes an acquisition unit 141, a calculation unit 142, and a display control unit 143. Note that these configurations have the same functions as the configurations according to the second embodiment described with reference to FIG. 15, and thus description thereof will be omitted.
  • FIG. 18 is a flowchart showing an example of a process of providing contents to a user by the HMD 100 and the controller 200.
  • the range within the angle of view of the camera is set as the setting range, as in the first embodiment.
  • step S1200 the acquisition unit 141 of the HMD 100 acquires the magnetic detection information (first sensor information) acquired by the magnetic sensor 240 of the controller 200 (operator).
  • step S1204 the calculation unit 142 calculates the position information and the posture information of the controller 200 (operator) based on the magnetic detection information (first sensor information).
  • step S1208 the calculation unit 142 determines whether the controller 200 (operator) has entered the range (setting range) within the angle of view of the camera.
  • the acquisition unit 141 is acquired by the image sensor 120 in step S1212.
  • a captured image (second sensor information) is acquired.
  • step S1216 the calculation unit 142 analyzes the captured image (second sensor information) to try to detect the reflection marker provided in the controller 200.
  • the calculation unit 142 calculates the position of the controller 200 using the magnetic detection information (first sensor information) in step S1220. The information and the posture information are corrected based on the detected reflection marker (in other words, the controller 200 provided with the reflection marker).
  • step S1216/No When it is determined that the controller 200 has entered the range (set range) within the angle of view of the camera, but the reflection marker provided in the controller 200 is not detected (step S1216/No), the process proceeds to step S1224. Then, it is determined that the imaging condition or the recognition performance has a cause of failure in detecting the reflective marker, and the calculation unit 142 tries to detect the reflective marker by switching the internal processing of image recognition. A specific example of switching the internal processing may be the same as that described with reference to FIG. 9, so description thereof will be omitted. If the reflection marker can be detected by switching the internal processing of image recognition, the calculation unit 142 corrects the position information and the posture information of the controller 200 based on the reflection marker in step S1220.
  • step S1228 the display control unit 143 controls the display unit 150 based on the position information and the posture information of the controller 200 to display the virtual object on the real world in a superimposed manner.
  • step S1232 the control unit 220 determines whether the content is finished. If it is determined that the content has ended (step S1232/Yes), a series of processes ends, and if it is determined that the content has not ended (step S1232/No), the processes of steps S1200 to S1228 continue. To be done.
  • the HMD 100 calculates the position information by inertial navigation, for example, and corrects the drift error generated at that time by the regression model, thereby calculating more accurate position information of each mounting portion of the HMD 100 and the controller 200. be able to.
  • Inertial navigation is a technique for calculating sensor position information by integrating angular velocity and acceleration a plurality of times, and is used in, for example, ships or aircraft.
  • FIG. 19 is a schematic diagram showing an outline of position calculation processing based on inertial navigation.
  • the attitudes of the controller 200 and the HMD 100 in the global coordinate system are calculated by integrating the angular velocities in the local coordinate system (the coordinate system set for each sensor device) acquired by the gyro sensor (S111). ..
  • the acceleration of the sensor device in the local coordinate system acquired by the acceleration sensor provided in each device is coordinate system converted into the acceleration of each device in the global coordinate system (S112). ..
  • the velocity of each device in the global coordinate system is calculated by integrating the acceleration in the coordinate system-converted global coordinate system (S113).
  • the moving distance of each device is calculated by integrating the speed of each device in the global coordinate system (S114).
  • the position calculation process based on the inertial navigation shown in FIG. 19 has a relatively small processing load and can be executed at high speed.
  • the integration performed on the angular velocity to obtain the attitude information is only once in step S111, and the attitude information is acquired with high accuracy by combining well-known techniques such as AHRS. It was possible to On the other hand, in order to obtain the position information, the integration of Step S113 and Step S114 is performed twice on the acceleration. Therefore, if the acceleration acquired by the acceleration sensor includes an error, the output position information is output. The error can be accumulated in.
  • FIG. 20 is a schematic diagram showing a temporal change image of a position error that can occur in a position calculation process based on inertial navigation.
  • the position error is small and the position information can be calculated with high accuracy.
  • the error included in the position information calculated by inertial navigation can increase with time as shown in FIG. 20, a very large error is included in the position information when continuously executed for a long time. There is a risk of being lost.
  • FIG. 21 is a schematic diagram showing an outline of position calculation processing based on a motion model.
  • steps S121 to S122 shown in FIG. 21 is the same as the processing of steps S111 to S112 described with reference to FIG. 19, so description thereof will be omitted here.
  • the position information of each device is estimated by regression without integrating the acceleration (S123).
  • the regression estimation process of step S123 the position information is estimated by regression in which the posture and acceleration of each device in the global coordinate system are applied to a motion model prepared in advance.
  • the motion model can be generated, for example, by learning motion constraint information in advance (for example, information including a plurality of samples of positions and postures of each part in a pose or a series of motions acquired in the past). is there.
  • various regression analysis methods can be used in the regression estimation processing in step S123, and methods such as DNN (deep neural network) and Random Forest may be used alone or in combination.
  • FIG. 22 is a schematic diagram showing a temporal change image of a position error that can occur in the position calculation process based on the motion model. As shown in FIG. 22, although a position error has occurred in the position calculation process based on the motion model, it does not increase with time, so even if it is continuously executed for a long time, a large error will occur. Hard to occur.
  • the position information can be calculated with higher accuracy by the position calculation process based on the motion model shown in FIG.
  • the position calculation process based on the motion model since statistical calculation is performed by regression, the output (calculation result) tends to change discontinuously even when the input changes continuously. As a result, for example, when the skeleton information finally obtained is visualized, it is likely to give a sense of discomfort.
  • the position calculation process based on the motion model shown in FIG. 21 has a heavy processing load as compared with the position calculation process based on the inertial navigation shown in FIG. 19, and it is difficult to execute the position calculation process faster than the position calculation process based on the inertial navigation. Is.
  • the position calculation process based on inertial navigation and the position calculation process based on a motion model have their respective characteristics. Therefore, in the present embodiment, by combining both the position calculation process based on inertial navigation and the position calculation process based on a motion model to correct the calculated position information, the position information is calculated with higher accuracy.
  • the position calculation process based on inertial navigation may be referred to as a first process
  • the position calculation process based on a motion model may be referred to as a second process.
  • FIG. 23 is a schematic diagram showing an outline of position calculation processing by the calculation unit 142 of the HMD 100 according to the present disclosure. Note that what is shown in FIG. 23 is an outline, and the position calculation processing by the calculation unit 142 may include processing not shown in FIG. 23.
  • the position calculation process by the calculation unit 142 includes a correction process (S130) in addition to a first process (S111 to S114) based on inertial navigation and a second process (S121 to S123) based on a motion model. ) Is also included.
  • the correction is performed with reference to the output of the first process (hereinafter, also referred to as the first output) and the output of the second process (hereinafter, also referred to as the second output).
  • the first output includes the posture information and the position information of the mounting portion
  • the second output includes the position information.
  • step S130 the position information included in the first output is corrected based on the posture information included in the first output and the position information included in the second output.
  • the posture information included in the first output may be used for correction of the position information and may be output as it is.
  • the correction process of step S130 can be realized by, for example, a Kalman filter.
  • the first process can be executed faster than the second process. Therefore, the correction process (S130) is executed at the timing when the second output is obtained, and when the second output is not obtained and only the first output is obtained, the first output is actually performed. It may be output as it is as the output of the position calculation process according to the embodiment.
  • FIG. 24 is a schematic diagram showing a temporal change image of a position error that can occur in the position calculation processing according to this embodiment.
  • the second output is obtained at time t 11 and the correction based on the second output is performed.
  • the position error is suppressed.
  • the position error is suppressed every time the correction is performed, and thus the error is unlikely to increase with time, and is the case where the error is continuously executed for a long time. However, a large error is unlikely to occur.
  • the position calculation process by the calculation unit 142 when the second output is not obtained, the first output is output as it is, so compared with the case where the position calculation is performed only by the second process based on the motion model. Thus, the position information can be calculated with high frequency.
  • the HMD 100 can realize highly accurate calculation of position information and attitude information with less controller 200 by correcting the drift error that occurs during position calculation by inertial navigation using the regression model.
  • the position calculation processing by the calculation unit 142 is not limited to the method described above (method using inertial navigation and regression model).
  • the accuracy of the IMU IMU110 and IMU210
  • the drift error that occurs when calculating the position by inertial navigation is reduced, so that it may not be necessary to perform correction using a regression model.
  • FIG. 25 is a block diagram illustrating a hardware configuration example of an information processing device that embodies the HMD 100 or the controller 200 according to each embodiment. Information processing by the HMD 100 or the controller 200 according to each embodiment is realized by cooperation of software and hardware described below.
  • the information processing apparatus 900 includes a CPU (Central Processing Unit) 901, a ROM (Read Only Memory) 902, a RAM (Random Access Memory) 903, and a host bus 904a.
  • the information processing device 900 also includes a bridge 904, an external bus 904b, an interface 905, an input device 906, an output device 907, a storage device 908, a drive 909, a connection port 911, a communication device 913, and a sensor 915.
  • the information processing apparatus 900 may have a processing circuit such as a DSP or ASIC instead of or in addition to the CPU 901.
  • the CPU 901 functions as an arithmetic processing unit and a control unit, and controls overall operations in the information processing apparatus 900 according to various programs. Further, the CPU 901 may be a microprocessor.
  • the ROM 902 stores programs used by the CPU 901, calculation parameters, and the like.
  • the RAM 903 temporarily stores a program used in the execution of the CPU 901, parameters that appropriately change in the execution, and the like.
  • the CPU 901 may embody the control unit 140 or the control unit 220, for example.
  • the CPU 901, the ROM 902, and the RAM 903 are connected to each other by a host bus 904a including a CPU bus and the like.
  • the host bus 904a is connected to an external bus 904b such as a PCI (Peripheral Component Interconnect/Interface) bus via a bridge 904.
  • the host bus 904a, the bridge 904, and the external bus 904b do not necessarily have to be separately configured, and these functions may be mounted on one bus.
  • the input device 906 is realized by a device such as a mouse, a keyboard, a touch panel, a button, a microphone, a switch, and a lever, to which information is input by the user. Further, the input device 906 may be, for example, a remote control device that uses infrared rays or other radio waves, or may be an externally connected device such as a mobile phone or a PDA that supports the operation of the information processing device 900. .. Furthermore, the input device 906 may include, for example, an input control circuit that generates an input signal based on the information input by the user using the above-described input means and outputs the input signal to the CPU 901. By operating the input device 906, the user of the information processing device 900 can input various data to the information processing device 900 and instruct a processing operation.
  • the input device 906 may embody the input unit 160, for example.
  • the output device 907 is formed of a device capable of visually or auditorily notifying the user of the acquired information. Such devices include CRT display devices, liquid crystal display devices, plasma display devices, EL display devices and display devices such as lamps, audio output devices such as speakers and headphones, and printer devices.
  • the output device 907 outputs results obtained by various processes performed by the information processing device 900, for example.
  • the display device visually displays the results obtained by various processes performed by the information processing device 900 in various formats such as text, images, tables, and graphs.
  • the audio output device converts an audio signal composed of reproduced audio data, acoustic data, and the like into an analog signal and outputs it audibly.
  • the output device 907 may embody the display unit 150, for example.
  • the storage device 908 is a data storage device formed as an example of a storage unit of the information processing device 900.
  • the storage device 908 is realized by, for example, a magnetic storage device such as an HDD, a semiconductor storage device, an optical storage device, a magneto-optical storage device, or the like.
  • the storage device 908 may include a storage medium, a recording device that records data in the storage medium, a reading device that reads data from the storage medium, a deletion device that deletes data recorded in the storage medium, and the like.
  • the storage device 908 stores programs executed by the CPU 901, various data, various data acquired from the outside, and the like.
  • the storage device 908 may embody the storage unit 170, for example.
  • the drive 909 is a reader/writer for a storage medium, and is built in or externally attached to the information processing device 900.
  • the drive 909 reads out information recorded on a removable storage medium such as a mounted magnetic disk, optical disk, magneto-optical disk, or semiconductor memory, and outputs it to the RAM 903.
  • the drive 909 can also write information to a removable storage medium.
  • connection port 911 is an interface connected to an external device, and is a connection port with an external device capable of data transmission by, for example, a USB (Universal Serial Bus).
  • USB Universal Serial Bus
  • the communication device 913 is, for example, a communication interface formed of a communication device or the like for connecting to the network 920.
  • the communication device 913 is, for example, a communication card for wired or wireless LAN (Local Area Network), LTE (Long Term Evolution), Bluetooth (registered trademark), or WUSB (Wireless USB).
  • the communication device 913 may be a router for optical communication, a router for ADSL (Asymmetric Digital Subscriber Line), or a modem for various kinds of communication.
  • the communication device 913 can send and receive signals and the like to and from the Internet and other communication devices, for example, according to a predetermined protocol such as TCP/IP.
  • the communication device 913 may embody the communication unit 130 or the communication unit 230, for example.
  • the sensor 915 is various sensors such as an acceleration sensor, a gyro sensor, a geomagnetic sensor, an optical sensor, a sound sensor, a distance measuring sensor, and a force sensor.
  • the sensor 915 acquires information about the state of the information processing apparatus 900 itself, such as the attitude and moving speed of the information processing apparatus 900, and information about the surrounding environment of the information processing apparatus 900, such as the brightness and noise around the information processing apparatus 900. ..
  • the sensor 915 may also include a GPS sensor that receives GPS signals and measures the latitude, longitude, and altitude of the device.
  • the sensor 915 may embody the IMU 110, the IMU 210, the image sensor 120, the magnetic field generator 180, or the magnetic sensor 240, for example.
  • the network 920 is a wired or wireless transmission path of information transmitted from a device connected to the network 920.
  • the network 920 may include a public line network such as the Internet, a telephone line network, a satellite communication network, various LANs (Local Area Network) including Ethernet (registered trademark), WAN (Wide Area Network), and the like.
  • the network 920 may also include a dedicated line network such as an IP-VPN (Internet Protocol-Virtual Private Network).
  • the above computer program may be distributed, for example, via a network without using a recording medium.
  • the information processing system has higher accuracy than the first sensor that outputs the first sensor information used to calculate the position information of the manipulator and the first sensor information. While it is possible to calculate various position information, a second sensor that outputs second position information that requires a large amount of power for the calculation is provided. Then, in the HMD 100 according to the present disclosure, when the position information of the manipulator calculated using the first sensor information is included in the preset setting range, the position information of the manipulator is calculated using the second sensor information. To calculate. As a result, the HMD 100 calculates the position information and the posture information using the first sensor in a range other than the setting range, and more accurately uses the second sensor in the range (setting range) important in the content. Position information and orientation information can be calculated. Further, the HMD 100 can reduce the power consumption by intermittently using the second sensor in this way.
  • the IMU 210 is used as the first sensor, the image sensor 120 is used as the second sensor, and in the second embodiment, the IMU 210 is used as the first sensor,
  • the magnetic sensor 240 is used as the second sensor, the magnetic sensor 240 is used as the first sensor, and the image sensor 120 is used as the second sensor.
  • the types and combinations of the sensors used as the first sensor and the second sensor are not limited to these.
  • each step in each flowchart described above does not necessarily have to be processed in time series in the order described. That is, the steps in the flowchart may be processed in a different order from the described order or in parallel.
  • the following configurations also belong to the technical scope of the present disclosure.
  • (1) The first sensor information output by the first sensor and used for calculating the position information of the manipulator, and the second sensor information output by the second sensor and used for calculating the position information of the manipulator are displayed.
  • An acquisition unit to acquire, Calculation for calculating the position information of the manipulator using the second sensor information when the position information of the manipulator calculated using the first sensor information is included in a preset setting range.
  • a section Information processing device.
  • the position information calculated using the first sensor information is defined by the coordinate system of the position information calculated using the second sensor information, The information processing device according to (1).
  • the calculator calculates position information of the manipulator using the first sensor information and the second sensor information, The information processing device according to (1) or (2).
  • Acquisition of the second sensor information is started in response to the position information calculated using the first sensor information falling within the setting range, Acquisition of the second sensor information is stopped in response to the position information calculated using the first sensor information being out of the set range.
  • the position information calculation process using the second sensor information is performed in the second position in the position information calculation process using the second sensor information rather than the period in which the first sensor information is acquired in the position information calculation process using the first sensor information. The period when sensor information is acquired is shorter, The information processing device according to (3).
  • the acquisition frequency of the second sensor information is increased in response to the position information calculated using the first sensor information falling within the setting range, The frequency of acquisition of the second sensor information is reduced in response to the position information calculated using the first sensor information falling outside the setting range.
  • the information processing device according to (5) above.
  • the process of calculating the position information of the manipulator using the second sensor information consumes more power than the process of calculating the position information of the manipulator using the first sensor information.
  • At least the first sensor of the first sensor and the second sensor is used as a pair of predetermined devices provided in one device together with the second sensor, The information processing apparatus according to any one of (1) to (7) above.
  • the information processing apparatus according to (7) or (8).
  • the first sensor and the second sensor are attached to a part of a user's body or an object that contacts the part, The information processing device according to (9).
  • the operator is a mounting portion of the first sensor or the second sensor in the body of the user or the object, or a portion other than the mounting portion.
  • (12) The setting range corresponds to the field of view of the user, The information processing device according to (10) or (11).
  • the display unit displays a virtual object in the field of view of the user, Further comprising a display control unit that controls display of the virtual object by the display unit based on position information of the manipulator, The information processing device according to (12).
  • the display control unit controls the display unit based on the position information of the manipulator to display the virtual object by superimposing it on the manipulator.
  • the first sensor information output by the first sensor and used for calculating the position information of the manipulator, and the second sensor information output by the second sensor and used for calculating the position information of the manipulator are displayed. To get When the position information of the manipulator calculated using the first sensor information is included in a preset setting range, the position information of the manipulator is calculated using the second sensor information.
  • HMD 110 IMU 120 image sensor 130 communication unit 140 control unit 141 acquisition unit 142 calculation unit 143 display control unit 150 display unit 160 input unit 170 storage unit 180 magnetic generation unit 200 controller 210 IMU 220 control unit 230 communication unit 240 magnetic sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Cardiology (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Computer Hardware Design (AREA)
  • Optics & Photonics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)

Abstract

第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得する取得部と、前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、情報処理装置が提供される。

Description

情報処理装置、情報処理方法、およびプログラム
 本開示は、情報処理装置、情報処理方法、およびプログラムに関する。
 近年、様々なセンサを用いて操作子の位置情報を算出する技術が盛んに開発されている。例えば、以下の特許文献1には、ユーザの頭部に装着されたカメラによって出力された撮像画像を解析することで操作子(ユーザの手など)の位置情報を算出し、算出した位置情報に基づいて操作子に対して仮想オブジェクトを重畳して表示する技術が開示されている。
特開2011-175439号公報
 しかし、特許文献1に記載の技術などによっては、操作子の位置情報の算出を適切に実現することができない場合があった。例えば、特許文献1に記載の技術においては、画像処理装置が、ユーザの頭部に装着されたカメラによって出力された撮像画像を解析することで、撮像画像に映る操作子(ユーザの手など)の位置情報を算出している。しかし、カメラによる撮像処理や、画像処理装置による画像認識処理の消費電力は比較的大きい傾向にあるため、これらの処理が常時実行されることでシステム全体の消費電力が大きくなってしまう。
 そこで、本開示は、上記事情に鑑みてなされたものであり、操作子の位置情報の算出をより適切に実現することが可能な、新規かつ改良された情報処理装置、情報処理方法、およびプログラムを提供する。
 本開示によれば、第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得する取得部と、前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、情報処理装置が提供される。
 また、本開示によれば、第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、コンピュータにより実行される情報処理方法が提供される。
 また、本開示によれば、第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、をコンピュータに実現させるためのプログラムが提供される。
第1の実施形態に係る情報処理システムの構成例を示す図である。 第1の実施形態に係るイメージセンサを用いた間欠動作を説明するための図である。 第1の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。 第1の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。 第1の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。 第1の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。 第1の実施形態に係る各装置の構成例を示すブロック図である。 第1の実施形態に係る算出部による制御を説明するための図である。 第1の実施形態に係るHMDおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。 第1の実施形態に係る変形例を説明するための図である。 第1の実施形態に係る変形例を説明するための図である。 第1の実施形態に係る変形例を説明するための図である。 第1の実施形態に係る変形例を説明するための図である。 第2の実施形態に係る設定範囲の具体例を説明するための図である。 第2の実施形態に係る各装置の構成例を示すブロック図である。 第2の実施形態に係るHMDおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。 第3の実施形態に係る各装置の構成例を示すブロック図である。 第3の実施形態に係るHMDおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。 慣性航法に基づく位置推定処理の概略を示す模式図である。 慣性航法に基づく位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。 運動モデルに基づく位置推定処理の概略を示す模式図である。 運動モデルに基づく位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。 同実施形態にかかる位置推定処理の概略を示す模式図である。 同実施形態にかかる位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。 各実施形態に係るHMDまたはコントローラを具現する情報処理装置のハードウェア構成例を示すブロック図である。
 以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
 なお、説明は以下の順序で行うものとする。
 1.第1の実施形態
 2.第2の実施形態
 3.第3の実施形態
 4.位置情報の算出方法の具体例
 5.ハードウェア構成例
 6.まとめ
  <1.第1の実施形態>
 (1.1.概要)
 まず、本開示に係る第1の実施形態について説明する。
 図1は、第1の実施形態に係る情報処理システムの構成例を示す図である。図1に示すように、第1の実施形態に係る情報処理システムは、ヘッドマウントディスプレイ100(以降、「HMD100」と呼称する)と、複数のコントローラ200(図1の例では、コントローラ200a~コントローラ200e)と、を備える。なお、以下の説明において、コントローラ200a~コントローラ200eを特に区別する必要がない場合には、単にコントローラ200と呼称する場合がある。
 (1.1.1.コントローラ200の概要)
 コントローラ200は、ユーザの体の一部に装着される情報処理装置である。そして、コントローラ200は、操作子の位置情報の算出に用いられる第1のセンサ情報を出力する第1のセンサを備えている(換言すると、第1のセンサはユーザの体の一部に装着される)。ここで「操作子」とは、ユーザの体におけるコントローラ200の装着部分(例えば、コントローラ200が装着された手首部分など。以降、単に「装着部分」とも呼称する)、または装着部分以外の部分(例えば、コントローラ200が装着されていない肘部分など。以降、単に「非装着部分」とも呼称する)である。以降では、一例として、操作子がユーザの体におけるコントローラ200の装着部分(以降、単に「コントローラ200」とも呼称する)である場合について説明する。
 そして、「第1のセンサ」は、加速度センサやジャイロセンサ(角速度センサ)などを含む慣性センサ(以降、「IMU:Inertial Measurement Unit」と呼称する)などであり、「第1のセンサ情報」は、加速度(Acceleration)や角速度(Angular velocity)などである。コントローラ200は、IMUによって出力された第1のセンサ情報をHMD100へ提供する。
 コントローラ200は、体の基準となる関節部位(例えば、腰や頭部など)、あるいは体の末端近傍(例えば、手首、足首、または頭部など)に装着されることが望ましい。図1に示す例では、ユーザの腰にコントローラ200aが、手首にコントローラ200bおよびコントローラ200eが、足首にコントローラ200cおよびコントローラ200dが装着されている。なお、コントローラ200の数や装着部分の位置は図1に示す例に限定されない。
 (1.1.2.HMD100の概要)
 HMD100は、ユーザの頭部に装着されることで、ユーザに対して各種コンテンツを提供する情報処理装置である。例えば、HMD100は、ユーザが外の様子を直接見ることができる光学透過型(光学シースルー型)の装置であり得る。この場合、HMD100は、ユーザが直接見ている実物体に仮想オブジェクトを重畳して表示することでユーザに対して各種コンテンツを提供することができる。
 なお、本実施形態では、一例としてHMD100が光学透過型の装置である場合について説明するところ、HMD100の種類は特に限定されない。例えば、HMD100は、非透過型の装置であってもよいし、ビデオ透過型(ビデオシースルー型)の装置であってもよい。また、HMD100は、実物体に仮想オブジェクトを重畳して表示する、いわゆるAR(Augmented Reality)表示を行うだけでなく、仮想オブジェクトを表示することによってユーザに仮想世界を見せる、いわゆるVR(Virtual Reality)表示を行ってもよい(なお、AR表示およびVR表示に限定されない)。また、本開示はHMD100として具現されなくてもよい。例えば、本開示は、スマートフォン、タブレット型PC(Personal Computer)、携帯型ゲーム機、またはデジタルカメラなどの各種装置として具現されてもよい。また、「仮想オブジェクト」とは、静止画像や動画像など、視覚に訴える何らかの画像を含む概念である。
 そして、HMD100は、コントローラ200のIMU(第1のセンサ)によって出力された第1のセンサ情報に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出する。より具体的に説明すると、HMD100は、コントローラ200と同様にIMUを備えており、IMUによって出力されたセンサ情報を取得する。そして、HMD100は、コントローラ200のIMU(第1のセンサ)によって出力された第1のセンサ情報、および自装置のIMUによって出力されたセンサ情報に基づいて、HMD100およびコントローラ200の各装着部分の位置情報および姿勢情報を算出する。例えば、HMD100は、慣性航法によって位置情報および姿勢情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、HMD100およびコントローラ200の各装着部分の高精度な位置情報および姿勢情報を算出する。当該方法については後段にて詳述する。
 さらに、HMD100は、各装着部分の位置情報および姿勢情報に基づいて、スケルトン構造における各部分の位置情報および姿勢情報を含むスケルトン情報を算出する。スケルトン構造とは、体の部位の情報と、部位間を結ぶ線分であるボーンを含む。なお、スケルトン構造における部位は、例えば体の末端部位や関節部位などに対応する。また、スケルトン構造におけるボーンは例えば人間の骨に相当し得るが、ボーンの位置や数は必ずしも実際の人間の骨格と整合していなくてもよい。HMD100は、スケルトン情報を算出することで、コントローラ200の装着部分だけでなく非装着部分の位置情報および姿勢情報も算出することができる。そのため上記のとおり、ユーザの体におけるコントローラ200の装着部分だけでなく、非装着部分も操作子になり得る。なお、HMD100による装着部分および非装着部分の位置情報および姿勢情報の算出方法は、上記方法(慣性航法および回帰モデルを用いる方法)に限定されない。
 HMD100は、コントローラ200(操作子)の位置情報および姿勢情報に基づいて仮想オブジェクトを現実世界に重畳させるように表示するところ、IMUによって出力されたセンサ情報に基づく処理だけでは、その精度が十分ではないため仮想オブジェクトを正確に重畳させることが難しい。そこで、HMD100は、IMUの他にコントローラ200(操作子)の位置情報の算出に用いられる第2のセンサ情報を出力する第2のセンサを備えている。ここで、第1の実施形態に係る「第2のセンサ」は、イメージセンサであり(換言すると、HMD100は、イメージセンサを用いるカメラを備えている)、「第2のセンサ情報」は、イメージセンサによって出力された撮像画像である。なお、第2のセンサ情報は、視覚化された撮像画像に限定されず、光電変換によって出力された電気信号などであってもよい。ここで、当該カメラは、その画角がユーザの視界に対応するようにHMD100に備えられていることを想定している(換言すると、当該カメラは、ユーザの視線方向と略同一の方向に向けられている。なお、必ずしもこれに限定されない)。
 そして、HMD100は、イメージセンサによって出力された撮像画像(第2のセンサ情報)に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出することができる。例えば、HMD100は、撮像画像(第2のセンサ情報)を解析することで当該撮像画像の被写体の特徴量を抽出し、事前に取得されたコントローラ200(操作子)の特徴量と比較して互いの類似度を算出することで、撮像画像に映るコントローラ200(操作子)を検出する。そして、HMD100は、撮像画像に映るコントローラ200(操作子)の大きさや形態(形状や模様などを含む)に基づいて、その位置情報および姿勢情報を算出する。
 このように、HMD100は、IMU(第1のセンサ)によって出力された第1のセンサ情報や、イメージセンサ(第2のセンサ)によって出力された撮像画像(第2のセンサ情報)を用いて、コントローラ200(操作子)の位置情報および姿勢情報を算出することができる。ここで、撮像画像(第2のセンサ情報)を用いて操作子の位置情報および姿勢情報を算出する処理は、第1のセンサ情報を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができる反面、より大きな電力を消費してしまう。
 そこで、HMD100は、コントローラ200(操作子)の位置情報および姿勢情報を算出する際にイメージセンサ(第2のセンサ)を間欠的に用いる。図2を参照してより具体的に説明すると、HMD100は、ユーザにコンテンツを提供している間は常時(なお、必ずしも常時に限定されない)、IMU(第1のセンサ)によって出力された第1のセンサ情報に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出し続ける(図2では、位置情報および姿勢情報を算出することを「ON」と表記している)。そして、IMU(第1のセンサ)によって出力された第1のセンサ情報を用いて算出されるコントローラ200(操作子)の位置情報が予め設定された設定範囲に含まれる場合、HMD100は、イメージセンサ(第2のセンサ)によって出力された第2のセンサ情報を用いてコントローラ200(操作子)の位置情報および姿勢情報を算出する。ここで、図2は、IMU(第1のセンサ)によって出力された第1のセンサ情報を用いる位置情報の算出処理にて第1のセンサ情報が取得される期間よりも、イメージセンサ(第2のセンサ)によって出力された第2のセンサ情報を用いる位置情報の算出処理にて第2のセンサ情報が取得される期間の方が短いことを示している。なお、「第1のセンサ情報が取得される期間(第2のセンサ情報が取得される期間)」とは、ある時点から他の時点まで(例えば、位置情報の算出処理の開始時点から終了時点まで)に第1のセンサ情報(第2のセンサ情報)が取得される期間の合計値を含む点に留意されたい。このように、HMD100は、イメージセンサ(第2のセンサ)を間欠的に用いることで消費電力を低減させることができる。
 ここで「設定範囲」とは、例えば、イメージセンサ(第2のセンサ)を用いるカメラの画角内の範囲などであり得る。すなわち、第1のセンサ情報を用いて算出されるコントローラ200(操作子)の位置情報がカメラの画角内の範囲(設定範囲)に含まれる場合、HMD100は、カメラによって出力された撮像画像(第2のセンサ情報)を解析することで、撮像画像に映るコントローラ200(操作子)の位置情報および姿勢情報をより高精度に算出する。上記のとおり、カメラは、その画角がユーザの視界に対応するようにHMD100に備えられている(換言すると、設定範囲はユーザの視界に対応している)ため、HMD100は、コントローラ200(操作子)がユーザの視界に進入した場合に、コントローラ200(操作子)の位置情報および姿勢情報をより高精度に算出することができる。したがって、HMD100は、算出した位置情報および姿勢情報に基づいて仮想オブジェクトをより正確に現実世界に重畳して表示することができる。
 ここで、HMD100がテニスゲームのコンテンツを提供する場合を一例として説明する。当該コンテンツにおいては、HMD100が、ユーザの腕の振りに合わせてテニスラケットの仮想オブジェクトをユーザの手に握られているように表示し、当該テニスラケットに打たれるようにテニスボールの仮想オブジェクトを表示する。
 図3は、HMD100を用いてテニスゲームを行うユーザを上方向から見たときの図である。図3には、ユーザがテニスボールをテニスラケットで打つ前の状態が示されている。操作子であるコントローラ200(図3の例では、コントローラ200bおよびコントローラ200e)は、カメラの画角θth内の範囲に含まれておらず、テニスラケットの仮想オブジェクト(以降、「テニスラケット10a」と呼称する)、およびテニスボールの仮想オブジェクト(以降、「テニスボール10b」と呼称する)は表示されていない。
 図4は、ユーザがテニスボール10bをテニスラケット10aで打つ前の状態(図3の状態)におけるユーザの視界を示す図である。図4に示すように、ユーザには、コントローラ200(操作子)、テニスラケット10a、およびテニスボール10bのいずれもが見えていない状態である。
 図5には、ユーザがテニスボール10bをテニスラケット10aで打った後の状態が示されている。コントローラ200b(操作子)は、カメラの画角θth内の範囲に含まれており、テニスラケット10aおよびテニスボール10bは現実世界に重畳して表示されている。
 図6は、ユーザがテニスボール10bをテニスラケット10aで打った後の状態(図5の状態)におけるユーザの視界を示す図である。図6に示すように、ユーザには、手首に装着されたコントローラ200b(操作子)が見えており、さらに、現実世界に重畳して表示されたテニスラケット10aおよびテニスボール10bが見えている状態である。
 以上、HMD100は、設定範囲以外においてはIMU(第1のセンサ)を用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲(設定範囲)においてはイメージセンサ(第2のセンサ)を用いてより高精度に位置情報および姿勢情報を算出することができる。また、HMD100は、このようにイメージセンサ(第2のセンサ)を間欠的に用いることで消費電力を低減させることができる。
 なお、処理で用いられた設定範囲は、必ずしもカメラの画角θth内の範囲でなくてもよい。例えば、設定範囲は、ユーザに提供されるコンテンツにおいてより重要な空間に対応する範囲であり得る。
 (1.2.構成例)
 上記では、本開示に係る第1の実施形態の概要について説明した。続いて、図7を参照して、第1の実施形態に係る各装置の構成例について説明する。図7は、第1の実施形態に係る各装置の構成例を示すブロック図である。
 (1.2.1.コントローラ200の構成例)
 まず、コントローラ200の構成例について説明する。図7に示すように、コントローラ200は、IMU210と、制御部220と、通信部230と、を備える。
 IMU210は、第1のセンサとして機能する構成である。より具体的には、IMU210は、加速度センサやジャイロセンサ(角速度センサ)などを備える。そして、IMU210に備えられる加速度センサは、第1のセンサ情報として加速度を出力し、加速度センサにより出力される加速度は、コントローラ200ごとに設定されたローカル座標系におけるコントローラ200の加速度であり得る。また、IMU210に備えられるジャイロセンサは、第1のセンサ情報として角速度を出力し、ジャイロセンサにより出力される角速度は、ローカル座標系におけるコントローラ200の角速度であり得る。IMU210による第1のセンサ情報の出力の周波数は、例えば約800[Hz]であり得る(もちろん、これに限定されない)。
 ここで、本開示に係る第1のセンサおよび第2のセンサのうちの少なくとも第1のセンサは、第2のセンサと共に一の装置に備えられる所定の機器の対として用いられる。より具体的に説明すると、IMU210(第1のセンサ)は、イメージセンサ120(第2のセンサ)と共にHMD100(一の装置)に備えられるIMU110(所定の機器)の対として用いられる。すなわち、HMD100は、コントローラ200のIMU210(第1のセンサ)と自装置のIMU110(所定の機器)とを対として用いて、これらのセンサ情報を解析することでコントローラ200(操作子)の位置情報および姿勢情報を算出することができる。なお、「対として用いる」とは、「1台または2台以上のコントローラ200のIMU210(第1のセンサ)と、IMU110(所定の機器)とを共に用いる」ことを含む点に留意されたい(すなわち、処理に用いられるコントローラ200の台数は特に限定されない)。
 制御部220は、コントローラ200が行う処理全般を統括的に制御する構成である。例えば、制御部220は、各構成の起動や停止を制御することができる。また、制御部220は、通信部230による通信を制御し、IMU210により取得された第1のセンサ情報(角速度および加速度)をHMD100へ送信させる。あるいは、制御部220は、IMU210により取得された第1のセンサ情報に対して、HMD100によって行われる処理の一部を行ってもよく、当該処理により得られた処理結果をHMD100へ送信させてもよい。なお、制御部220の制御内容はこれらに限定されない。例えば、制御部220は、各種サーバ、汎用コンピュータ、PC、またはタブレットPCなどにおいて一般的に行われる処理(例えばOS(Operating System)に関する処理など)を制御してもよい。
 通信部230は、有線または無線により外部装置(特にHMD100)との間でデータの送受信を行う構成である。通信部230は、例えば有線LAN(Local Area Network)、無線LAN、Wi-Fi(Wireless Fidelity、登録商標)、赤外線通信、Bluetooth(登録商標)、近距離/非接触通信などの方式で、外部装置と直接またはネットワークアクセスポイントを介して無線通信する。
 以上、コントローラ200の構成例について説明した。なお、図7を用いて説明した上記の構成はあくまで一例であり、コントローラ200の構成は係る例に限定されない。例えば、コントローラ200は、図7に示していない構成を備えていてもよい。また、図7に示す構成が外部装置(図示なし)に設けられ、コントローラ200は当該外部装置と通信連携することによって上記で説明した各機能を実現してもよい。また、複数のコントローラ200が用いられる場合、各コントローラ200は、互いに異なる構成を備えていてもよい(本実施形態では、各コントローラ200が同一の構成を備えている場合を一例として記載する)。
 (1.2.2.HMD100の構成例)
 続いて、HMD100の構成例について説明する。図7に示すように、HMD100は、IMU110と、イメージセンサ120と、通信部130と、制御部140と、表示部150と、入力部160と、記憶部170と、を備える。また、制御部140は、取得部141と、算出部142と、表示制御部143と、を備える。
 IMU110は、上記で説明したコントローラ200のIMU210と同様に、加速度センサやジャイロセンサ(角速度センサ)などを備える構成である。IMU110に備えられる加速度センサは加速度を出力し、加速度センサにより出力される加速度は、HMD100に設定されたローカル座標系におけるHMD100の加速度であり得る。また、IMU110に備えられるジャイロセンサは角速度を出力し、ジャイロセンサにより出力される角速度は、ローカル座標系におけるHMD100の角速度であり得る。
 イメージセンサ120は、第2のセンサとして機能する構成である。より具体的には、イメージセンサ120は、カメラ(図示なし)に備えられるセンサであり、結像面に複数の画素を備え、各々の画素は撮像レンズ(図示なし)により結像された被写体像を電気信号に変換することで撮像画像(第2のセンサ情報)を出力する。イメージセンサ120は、例えばCCDセンサアレイや、CMOSセンサアレイなどであり、必ずしもこれらに限定されない。また、イメージセンサ120によるフレームレートは、例えば約60[fps]であり得る(もちろん、これに限定されない)。
 ここで、図2を用いて説明したように、角速度等(第1のセンサ情報)を用いて算出される位置情報が設定範囲内に入ったことに応じて撮像画像(第2のセンサ情報)の取得が開始され、角速度等(第1のセンサ情報)を用いて算出される位置情報が設定範囲外に出たことに応じて撮像画像(第2のセンサ情報)の取得が停止される。換言すると、コントローラ200(操作子)の位置情報の算出処理において、IMUによる角速度等(第1のセンサ情報)が取得される期間よりも撮像画像(第2のセンサ情報)が取得される期間の方が短い。
 また、角速度等(第1のセンサ情報)を用いて算出される位置情報が設定範囲内に入ったことに応じて撮像画像(第2のセンサ情報)の取得頻度が増やされ、角速度等(第1のセンサ情報)を用いて算出される位置情報が設定範囲外に出たことに応じて撮像画像(第2のセンサ情報)の取得頻度が減らされてもよい。例えば、最初に高レートの角速度等(第1のセンサ情報)を用いたコントローラ200(操作子)の位置情報の算出と、低フレームレートの撮像画像(第2のセンサ情報)を用いたコントローラ200(操作子)の検出(コントローラ200が設定範囲内に存在するか否かを判定するために行われる検出であり、コントローラ200の位置情報の算出ではない点に留意されたい)と、が行われる。そして、角速度等(第1のセンサ情報)を用いて算出される位置情報が設定範囲内に入った場合、撮像画像(第2のセンサ情報)のフレームレートが上げられ、高フレームレートの撮像画像(第2のセンサ情報)を用いた位置情報の算出が行われてもよい。
 なお、上記で説明した(第1のセンサ情報および第2のセンサ情報の)「取得」や「取得頻度」とは、各種センサ(IMU210やイメージセンサ120)による各種情報(第1のセンサ情報や第2のセンサ情報)の取得や取得頻度を指してもよいし、HMD100の取得部141による各種センサからの各種情報(第1のセンサ情報や第2のセンサ情報)の取得や取得頻度を指してもよい点に留意されたい。
 通信部130は、有線または無線により外部装置(特にコントローラ200)との間でデータの送受信を行う構成である。通信部130は、例えば有線LAN、無線LAN、Wi-Fi、赤外線通信、Bluetooth(登録商標)、近距離/非接触通信などの方式で、外部装置と直接またはネットワークアクセスポイントを介して無線通信する。
 制御部140は、HMD100が行う処理全般を統括的に制御する構成である。例えば、制御部140は、各構成の起動や停止を制御することができる。なお、制御部140の制御内容は特に限定されない。例えば、制御部140は、各種サーバ、汎用コンピュータ、PC、またはタブレットPCなどにおいて一般的に行われる処理(例えばOSに関する処理など)を制御してもよい。
 取得部141は、各種情報を取得する構成である。より具体的には、取得部141は、コントローラ200のIMU210(第1のセンサ)によって出力される第1のセンサ情報、およびイメージセンサ120(第2のセンサ)によって出力される第2のセンサ情報を取得する。さらに、取得部141は、自装置に備えられるIMU110によって出力されるセンサ情報も取得する。取得部141は、取得したこれらの情報を算出部142に提供する。
 算出部142は、HMD100およびコントローラ200(操作子)の位置情報および姿勢情報を算出する構成である。より具体的には、算出部142は、コントローラ200のIMU210(第1のセンサ)によって出力された第1のセンサ情報、およびIMU110によって出力されたセンサ情報に基づいて、HMD100およびコントローラ200の各装着部分の位置情報および姿勢情報を算出する。例えば、HMD100は、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、HMD100およびコントローラ200(操作子)の各装着部分の高精度な位置情報および姿勢情報を算出する(当該方法については後段にて詳述する)。
 また、算出部142は、HMD100およびコントローラ200(操作子)の位置情報および姿勢情報に基づいてスケルトン構造における各部位の位置情報および姿勢情報を含むスケルトン情報を算出する。より具体的には、算出部142は、逆運動学(IK:Inverse Kinematics)計算を用いてスケルトン情報を算出する。逆運動学計算とは、末端部位の位置情報および姿勢情報から各関節部位の変位を算出する技術である。逆運動学計算においては、体の各部位を、長さが既知である所定数のボーンからなる単純なリンク機構とみなし(例えば、腕を、長さが既知である2本のボーンからなるリンク機構とみなし)、当該リンク機構の自由度を設定し各ボーンのなす角度を計算することによってスケルトン情報を算出する。
 そして、算出部142は、スケルトン情報に含まれるコントローラ200(操作子)の位置情報に基づいてイメージセンサ120(第2のセンサ)を間欠的に用いる。より具体的に説明すると、スケルトン情報に含まれるコントローラ200(操作子)の位置情報(第1のセンサ情報を用いて算出される位置情報)は、イメージセンサ120によって取得される撮像画像(第2のセンサ情報)を用いて算出される位置情報の座標系によって規定されている(以降、第2のセンサ情報を用いて算出される位置情報の座標系を「グローバル座標系」と呼称する場合がある。換言すると、第1のセンサ情報を用いて算出される位置情報、および第2のセンサ情報を用いて算出される位置情報は、グローバル座標系によって規定される)。これによって、算出部142は、スケルトン情報に含まれるコントローラ200(操作子)の位置情報が予め設定された設定範囲に含まれるか否かを判定することができる。そして、スケルトン情報に含まれるコントローラ200(操作子)の位置情報が設定範囲に含まれる場合、算出部142は、イメージセンサ120によって出力された第2のセンサ情報を用いてコントローラ200(操作子)の位置情報を算出する。
 例えば、図3~図6を参照して説明した例のように、コントローラ200(操作子)がカメラの画角内の範囲(設定範囲)に含まれる場合に、算出部142は、カメラの撮像画像(第2のセンサ情報)を用いてコントローラ200(操作子)の位置情報を算出する。図8を参照してより具体的に説明すると、カメラの画角の基点Oを始点としたときのコントローラ200(図8の例では、右手首に装着されたコントローラ200b)の位置ベクトルAとカメラの方向ベクトルHとのなす角をθとする。ここでカメラの画角(水平画角)をθthとしたときにおいて、θ≦θth/2の関係が成立する場合、算出部142は、コントローラ200b(操作子)がカメラの画角内の範囲に含まれると判定し、カメラの撮像画像(第2のセンサ情報)を用いた位置情報の算出処理を行う。一方、θ>θth/2の関係が成立する場合、算出部142は、コントローラ200b(操作子)がカメラの画角内の範囲に含まれないと判定し、IMU210から取得された第1のセンサ情報を用いた位置情報の算出処理を継続する。なお、図8ではカメラの水平画角θthに基づく判定処理について説明したところ、カメラの垂直画角についても同様の判定処理が行われ得る。
 カメラの撮像画像(第2のセンサ情報)を用いた位置情報および姿勢情報の算出処理についてより具体的に説明すると、算出部142は、カメラの撮像画像(第2のセンサ情報)を解析することで当該撮像画像の被写体の特徴量を抽出し、事前に取得されたコントローラ200(操作子)の特徴量と比較して互いの類似度を算出することで、撮像画像に映るコントローラ200(操作子)を検出する。そして、算出部142は、撮像画像に映るコントローラ200(操作子)の大きさや形態(形状や模様などを含む)に基づいて、その位置情報および姿勢情報を算出する。
 その後、算出部142は、撮像画像を用いて算出したコントローラ200(操作子)の位置情報および姿勢情報を用いて、IMU(IMU110およびIMU210)から取得されたセンサ情報を用いて算出された位置情報および姿勢情報を補正する(この補正処理は、第1のセンサ情報および第2のセンサ情報を用いて操作子の位置情報を算出することと等価である)。なお、算出部142は、当該補正を行うことなく、撮像画像を用いて算出したコントローラ200(操作子)の位置情報および姿勢情報を、コントローラ200(操作子)の位置情報および姿勢情報として用いてもよい。
 ここで、撮像画像を用いてコントローラ200(操作子)の位置情報および姿勢情報を算出する際の画像処理を簡略化するために様々な工夫が施されてもよい。例えば、赤外光を強く反射する性質を有する、いわゆる再帰性反射材を塗布したマーカ(以降、「反射マーカ」と呼称する)がコントローラ200の表面上に備えられてもよい。これによって、外部(例えば、HMD100)から反射マーカに対して赤外光を照射し、その反射光が映る撮像画像を解析することによって、算出部142は、撮像画像におけるコントローラ200の位置情報および姿勢情報を算出し易くなる。なお、再帰性反射部材の種類は特に限定されるものではないが、好適には、可視光領域において透明性を有する材料を採用することができる。可視領域において透明または半透明な再帰性反射部材を採用することにより、コントローラ200の位置情報および姿勢情報を算出し易くしつつも、反射光が目障りとならずに済む。
 また、自発光する光源(例えば、LEDなど)がコントローラ200の表面上に備えられてもよい。これによって、光源から出射された光が映る撮像画像を解析することによって、算出部142は、撮像画像におけるコントローラ200の位置情報および姿勢情報を算出し易くなる。なお、光源の種類は特に限定されない。
 また、HMD100(具体的には記憶部170)は、コントローラ200の大きさや形状に関する情報を予め記憶していてもよい。これによって、算出部142は、この予め記憶されている大きさや形状に関する情報と、撮像画像に映るコントローラ200の大きさや形状とを比較することによって、撮像画像におけるコントローラ200の位置情報および姿勢情報を算出し易くなる。
 さらに、算出部142は、Visual SLAM(Simultaneous localization and mapping)を用いてHMD100の位置情報および姿勢情報を算出する。Visual SLAMは、未知環境下においてカメラの撮像画像を解析することで自己位置・姿勢算出と地図作成を同時に行なうことができる技術である。なお、Visual SLAMの実現手法は特に限定されず、算出部142は、公知のVisual SLAMの実現手法を用いてHMD100の位置情報および姿勢情報を算出することができる。また、HMD100の位置情報および姿勢情報の算出にVisual SLAMが用いられるのはあくまで一例であり、HMD100の位置情報および姿勢情報の算出方法はこれに限定されない。
 表示制御部143は、算出部142によって算出されたコントローラ200(操作子)の位置情報および姿勢情報に基づいて表示部150による仮想オブジェクトの表示を制御する構成である。例えば、表示制御部143は、コントローラ200(操作子)の位置情報および姿勢情報に基づいて前記表示部を制御することで、仮想オブジェクトをコントローラ200(操作子)に重畳して表示させる。
 表示部150は、ユーザの視界に仮想オブジェクトを表示する構成である。より具体的には、表示部150は、表示制御部143による制御に基づいて仮想オブジェクトを現実世界に重畳させるように表示する。なお、表示部150による表示方式は特に限定されず、HMD100の種類などに応じて柔軟に変更され得る。
 入力部160は、ユーザによる入力を受ける構成である。例えば、入力部160は、タッチパネル、ボタン、スイッチ、マイクロフォン、マウス、またはキーボードなどの入力装置を備えており、ユーザがこれらの入力装置を用いることによって、所望の情報を入力することができる。なお、入力部160が備える入力装置は特に限定されない。
 記憶部170は、各種情報を記憶する構成である。例えば、記憶部170は、HMD100の各構成によって使用されるプログラムやパラメータなどを記憶する。また、記憶部170は、各センサによって取得されたセンサ情報を記憶してもよい。なお、記憶部170が記憶する情報の内容はこれらに限定されない。
 以上、HMD100の構成例について説明した。なお、図7を用いて説明した上記の構成はあくまで一例であり、HMD100の構成は係る例に限定されない。例えば、HMD100は、図7に示す構成の一部を備えていなくてもよいし、図7に示していない構成を備えていてもよい。また、図7に示す構成が外部装置(図示なし)に設けられ、HMD100は当該外部装置と通信連携することによって上記で説明した各機能を実現してもよい。例えば、1または2以上のコントローラ200と通信可能なハブ装置が別途設けられ、当該ハブ装置がコントローラ200から各種情報(例えば、第1のセンサ情報など)を集約する場合、HMD100は、各コントローラ200ではなくハブ装置と通信することで各種情報を受信してもよい。また、外部サーバが別途設けられる場合、HMD100および外部サーバは分散処理により上記の各種処理を実現してもよい。
 (1.3.処理フロー例)
 上記では、第1の実施形態に係る各装置の構成例について説明した。続いて、図9を参照して、第1の実施形態に係る各装置の処理フロー例について説明する。図9は、HMD100およびコントローラ200によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。なお、当該フローチャートにおいては、コントローラ200(操作子)の位置情報および姿勢情報を算出する際の画像処理を簡略化するために、反射マーカがコントローラ200の表面上に備えられているとする。
 ステップS1000では、HMD100の取得部141がコントローラ200(操作子)のIMU210によって取得された第1のセンサ情報と、IMU110によって取得されたセンサ情報を取得する。ステップS1004では、算出部142が、IMU210からの第1のセンサ情報およびIMU110からのセンサ情報に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出する。
 ステップS1008では、算出部142は、コントローラ200(操作子)がカメラの画角内の範囲(設定範囲)に進入したか否かを判定する。コントローラ200(操作子)がカメラの画角内の範囲(設定範囲)に進入したと判定された場合(ステップS1008/Yes)、ステップS1012にて、取得部141は、イメージセンサ120によって取得された撮像画像(第2のセンサ情報)を取得する。
 ステップS1016にて、算出部142は、撮像画像(第2のセンサ情報)を解析することで、コントローラ200に備えられた反射マーカの検出を試みる。コントローラ200に備えられた反射マーカが検出された場合(ステップS1016/Yes)、ステップS1020にて、算出部142は、第1のセンサ情報を用いて算出されたコントローラ200の位置情報および姿勢情報を、検出された反射マーカ(換言すると、反射マーカが備えられたコントローラ200)に基づいて補正する。
 コントローラ200がカメラの画角内の範囲(設定範囲)に進入したと判定されたにも関わらず、コントローラ200に備えられた反射マーカが検出されなかった場合(ステップS1016/No)、ステップS1024にて、撮像条件や認識性能に反射マーカ検出失敗の原因があると判断し、算出部142は、画像認識の内部処理を切り替えることで反射マーカの検出を試みる。例えば、撮像環境が明るすぎる場合(例えば、照度が高すぎる場合)、算出部142は、反射マーカに照射される赤外光の強度を上げることでより反射マーカを検出し易くしてもよい。また、コントローラ200の移動速度が速すぎる場合、算出部142は、カメラのフレームレートを上げてもよい。さらに、撮像画像の解析に用いられるアルゴリズムが複数存在する場合、算出部142は、より高精度のアルゴリズムに切り替えてもよい。なお、これらはあくまで一例であり、算出部142が反射マーカを検出し易くするために行う処理の内容は特に限定されない。算出部142は、画像認識の内部処理を切り替えることにより反射マーカを検出できた場合には、ステップS1020にて反射マーカに基づいてコントローラ200の位置情報および姿勢情報を補正する。
 ステップS1028では、表示制御部143がコントローラ200の位置情報および姿勢情報に基づいて表示部150を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップS1032では、制御部220が、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合(ステップS1032/Yes)、一連の処理が終了し、コンテンツが終了していないと判定された場合(ステップS1032/No)、ステップS1000~ステップS1028の処理が継続される。
 (1.4.変形例)
 以上では、第1の実施形態に係る各装置の処理フロー例について説明した。続いて、第1の実施形態に係る変形例について説明する。
 (1.4.1.設定範囲の変形例)
 上記では、設定範囲がカメラの画角内の範囲である場合を一例として説明した。ここで、設定範囲はカメラの画角外の範囲を含んでもよい。例えば、カメラの画角をθthとし、画角θthにバッファを加算して得られる角度をθth´としたとき、設定範囲は、当該角度θth´内の範囲であってもよい。より具体的には、図10に示すように、θ≦θth´/2の関係が成立する場合(θは、コントローラ200の位置ベクトルAとカメラの方向ベクトルHとのなす角)、算出部142は、コントローラ200b(操作子)が設定範囲に含まれると判定し、カメラの撮像画像(第2のセンサ情報)を用いた位置情報および姿勢情報の算出処理を開始する。このように、バッファが設けられ、画角θthよりも広い角度θth´内の範囲が設定範囲とされることで、算出部142は、コントローラ200が画角θth内の範囲に進入する前に画像処理を開始できるため、撮像画像に映るコントローラ200の位置情報および姿勢情報をより早期に算出することができる。これは、特にカメラの画角θthがHMD100のディスプレイ画角よりも狭い場合に有用である。なお、図10ではカメラの水平方向の角度θth´に基づく判定処理について説明したところ、カメラの垂直方向の角度についても同様の判定処理が行われ得る。
 また、カメラの画角θthよりも狭い角度をθth´´としたとき、設定範囲は、当該角度θth´´内の範囲であってもよい。より具体的には、図11に示すように、θ≦θth´´/2の関係が成立する場合、算出部142は、コントローラ200b(操作子)が設定範囲に含まれると判定し、カメラの撮像画像(第2のセンサ情報)を用いた位置情報および姿勢情報の算出処理を開始する。なお、この場合もカメラの垂直方向の角度について同様の判定処理が行われ得る。
 また、設定範囲は、撮像画像における所定形状の領域であってもよい。例えば図12に示すように、設定範囲は、撮像画像の右下部分に位置する所定形状の領域20であってもよい。図12は、テニスゲームのコンテンツが提供される場合を一例として示しているところ、当該コンテンツにおいて撮像画像の右下部分は右手首に装着されたコントローラ200bが映り易い領域である。このように、コントローラ200が映り易い領域が設定範囲とされることによって、HMD100は、コントローラ200の位置情報および姿勢情報を算出し易くなる。また、このように設定範囲を限定することでHMD100の消費電力が低減される。なお、撮像画像における設定範囲の形状は特に限定されない。
 (1.4.2.その他の変形例)
 上記では、算出部142が、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、HMD100およびコントローラ200の各装着部分の位置情報を算出する旨を説明したが、IMU(IMU110およびIMU210)の精度が向上した場合、慣性航法による位置算出の際に発生するドリフト誤差が小さくなるため、算出部142は回帰モデルを用いて補正を行わなくてもよい。この場合、IMU210を備えたコントローラ200がユーザの体の一部だけでなく、ユーザの体の一部に接触する物体に装着されても、算出部142は、IMU210によって取得された第1のセンサ情報を解析することで当該物体の位置情報および姿勢情報を高精度に算出することができる。例えば、図13に示すように、IMU210を備えたコントローラ200fがユーザに把持されたテニスラケット(実物体)に装着されることで、算出部142は、当該テニスラケットの位置情報および姿勢情報を高精度に算出することができる。
  <2.第2の実施形態>
 (2.1.概要)
 上記では、本開示に係る第1の実施形態について説明した。続いて、本開示に係る第2の実施形態について説明する。
 第1の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとしてイメージセンサ120が用いられた。一方、第2の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとしては磁気センサが用いられる。ここで、磁気センサ(第2のセンサ)を用いて操作子の位置情報および姿勢情報を算出する処理は、IMU210(第1のセンサ)を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができるが、より大きな電力を消費してしまう。
 そこで、HMD100は、操作子の位置情報および姿勢情報を算出する際に磁気センサ(第2のセンサ)を間欠的に用いる。これによって、HMD100は、設定範囲以外においてはIMU210(第1のセンサ)などを用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲(設定範囲)においては磁気センサ(第2のセンサ)を用いて高精度の位置情報および姿勢情報を算出することができる。
 ここで、磁気センサを用いる磁気式トラッキング技術によっては、イメージセンサ120を用いるカメラと異なり、全周囲において位置情報および姿勢情報の算出が可能となるため、HMD100を装着したユーザの全周囲における所定領域が設定範囲となり得る。例えば、図14に示すように、ユーザの前頭面より前方側の領域21や前頭面より後方側の領域22が設定範囲とされ得る。
 (2.2.構成例)
 続いて、図15を参照して、第2の実施形態に係る各装置の構成例について説明する。図15は、第2の実施形態に係る各装置の構成例を示すブロック図である。なお、以降では、第1の実施形態に係る各構成と同様の内容については説明を省略し、異なる内容について重点的に説明する。
 (2.2.1.コントローラ200の構成例)
 まず、第2の実施形態に係るコントローラ200の構成例について説明する。図15に示すように、第2の実施形態に係るコントローラ200は、IMU210と、制御部220と、通信部230と、磁気センサ240と、を備える。
 磁気センサ240は、第2のセンサとして機能し、HMD100に備えられる磁気発生部180から発せられた磁気を検出することで、第2のセンサ情報として磁気検出情報を出力する構成である。磁気センサ240は、例えばホール素子などによって構成され得るところ、必ずしもこれに限定されない。
 制御部220は、通信部230による通信を制御し、磁気センサ240により取得された磁気検出情報(第2のセンサ情報)をHMD100へ送信させる。なお、図15に示した構成はあくまで一例であり、第2の実施形態に係るコントローラ200の構成は係る例に限定されない。
 (2.2.2.HMD100の構成例)
 続いて、第2の実施形態に係るHMD100の構成例について説明する。図15に示すように、第2の実施形態に係るHMD100は、IMU110と、イメージセンサ120と、通信部130と、制御部140と、表示部150と、入力部160と、記憶部170と、磁気発生部180と、を備える。また、制御部140は、取得部141と、算出部142と、表示制御部143と、を備える。
 磁気発生部180は、磁気センサ240によって検出されるための磁気(磁界)を発生させる構成である。磁気発生部180は、例えば磁気発生コイルなどによって構成され得るところ、必ずしもこれに限定されない。
 算出部142は、第1の実施形態と同様に、コントローラ200のIMU210(第1のセンサ)によって出力された第1のセンサ情報、および自装置のIMU110によって出力されたセンサ情報に基づいてスケルトン情報を算出した後に、スケルトン情報に含まれる操作子の位置情報に基づいて磁気発生部180および磁気センサ240(第2のセンサ)を間欠的に用いる。より具体的には、算出部142は、スケルトン情報に含まれる操作子の位置情報が予め設定された設定範囲に含まれる場合、磁気センサ240によって出力された磁気検出情報(第2のセンサ情報)を用いて公知の磁気式トラッキング処理を行い、操作子の位置情報および姿勢情報を算出する。
 また、第2の実施形態においても、算出部142は、イメージセンサ120によって出力された撮像画像を用いてVisual SLAMに関する処理を行うことにより、HMD100の位置情報および姿勢情報を算出するものとする。
 なお、図15に示した構成はあくまで一例であり、第2の実施形態に係るHMD100の構成は係る例に限定されない。例えば、磁気発生部180がコントローラ200に備えられ、磁気センサ240がHMD100に備えられてもよい。
 (2.3.処理フロー例)
 上記では、第2の実施形態に係る各装置の構成例について説明した。続いて、図16を参照して、第2の実施形態に係る各装置の処理フロー例について説明する。図16は、HMD100およびコントローラ200によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。
 ステップS1100では、HMD100の取得部141がコントローラ200(操作子)のIMU210によって取得された第1のセンサ情報と、IMU110によって取得されたセンサ情報を取得する。ステップS1104では、算出部142が、IMU210からの第1のセンサ情報およびIMU110からのセンサ情報に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出する。
 ステップS1108では、算出部142は、コントローラ200(操作子)が設定範囲に進入したか否かを判定する。コントローラ200(操作子)が設定範囲に進入したと判定された場合(ステップS1108/Yes)、ステップS1112にて、取得部141は、磁気センサ240によって取得された磁気検出情報(第2のセンサ情報)を取得する。
 ステップS1116にて、算出部142は、磁気検出情報(第2のセンサ情報)を解析することで、コントローラ200の位置情報および姿勢情報を算出する。ステップS1120では、算出部142は、第1のセンサ情報を用いて算出されたコントローラ200の位置情報および姿勢情報を、算出結果に基づいて補正する。
 ステップS1124では、表示制御部143がコントローラ200の位置情報および姿勢情報に基づいて表示部150を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップS1128では、制御部220は、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合(ステップS1128/Yes)、一連の処理が終了し、コンテンツが終了していないと判定された場合(ステップS1128/No)、ステップS1100~ステップS1124の処理が継続される。
 以上、本開示に係る第2の実施形態について説明した。なお、第2の実施形態には、第1の実施形態にて説明した技術的事項が適宜適用され得る点に留意されたい。
  <3.第3の実施形態>
 (3.1.概要)
 上記では、本開示に係る第2の実施形態について説明した。続いて、本開示に係る第3の実施形態について説明する。
 第1の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとしてイメージセンサ120が用いられ、第2の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとして磁気センサ240が用いられた。一方、第3の実施形態では、第1のセンサとして磁気センサ240が用いられ、第2のセンサとしてイメージセンサ120が用いられる。ここで、上述のとおり、本開示に係る第1のセンサおよび第2のセンサのうちの少なくとも第1のセンサは、第2のセンサと共に一の装置に備えられる所定の機器の対として用いられる。第3の実施形態においては、磁気センサ240(第1のセンサ)は、イメージセンサ120(第2のセンサ)と共にHMD100(一の装置)に備えられる磁気発生部180(所定の機器)の対として用いられる。
 イメージセンサ120(第2のセンサ)を用いて操作子の位置情報および姿勢情報を算出する処理は、磁気センサ240(第1のセンサ)を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができるが、より大きな電力を消費してしまう。そこで、HMD100が、操作子の位置情報および姿勢情報を算出する際にイメージセンサ120(第2のセンサ)を間欠的に用いる。これによって、HMD100は、設定範囲以外においては磁気センサ240(第1のセンサ)を用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲(設定範囲)においてはイメージセンサ120(第2のセンサ)を用いて高精度の位置情報および姿勢情報を算出することができる。
 (3.2.構成例)
 続いて、図17を参照して、第3の実施形態に係る各装置の構成例について説明する。図17は、第3の実施形態に係る各装置の構成例を示すブロック図である。
 図17に示すように、第3の実施形態に係るコントローラ200は、制御部220と、通信部230と、磁気センサ240と、を備える。なお、これらの構成は、図15を参照して説明した第2の実施形態に係る構成と同様の機能を有するため説明を省略する。
 また、図17に示すように、第3の実施形態に係るHMD100は、イメージセンサ120と、通信部130と、制御部140と、表示部150と、入力部160と、記憶部170と、磁気発生部180と、を備える。また、制御部140は、取得部141と、算出部142と、表示制御部143と、を備える。なお、これらの構成は、図15を参照して説明した第2の実施形態に係る構成と同様の機能を有するため説明を省略する。
 (3.3.処理フロー例)
 続いて、図18を参照して、第3の実施形態に係る各装置の処理フロー例について説明する。図18は、HMD100およびコントローラ200によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。なお、当該フローチャートにおいては、第1の実施形態と同様に、カメラの画角内の範囲が設定範囲とされている。
 ステップS1200では、HMD100の取得部141がコントローラ200(操作子)の磁気センサ240によって取得された磁気検出情報(第1のセンサ情報)を取得する。ステップS1204では、算出部142が、磁気検出情報(第1のセンサ情報)に基づいてコントローラ200(操作子)の位置情報および姿勢情報を算出する。
 ステップS1208では、算出部142は、コントローラ200(操作子)がカメラの画角内の範囲(設定範囲)に進入したか否かを判定する。コントローラ200(操作子)がカメラの画角内の範囲(設定範囲)に進入したと判定された場合(ステップS1208/Yes)、ステップS1212にて、取得部141は、イメージセンサ120によって取得された撮像画像(第2のセンサ情報)を取得する。
 ステップS1216にて、算出部142は、撮像画像(第2のセンサ情報)を解析することで、コントローラ200に備えられた反射マーカの検出を試みる。コントローラ200に備えられた反射マーカが検出された場合(ステップS1216/Yes)、ステップS1220にて、算出部142は、磁気検出情報(第1のセンサ情報)を用いて算出されたコントローラ200の位置情報および姿勢情報を、検出された反射マーカ(換言すると、反射マーカが備えられたコントローラ200)に基づいて補正する。
 コントローラ200がカメラの画角内の範囲(設定範囲)に進入したと判定されたにも関わらず、コントローラ200に備えられた反射マーカが検出されなかった場合(ステップS1216/No)、ステップS1224にて、撮像条件や認識性能に反射マーカ検出失敗の原因があると判断し、算出部142は、画像認識の内部処理を切り替えることで反射マーカの検出を試みる。内部処理の切り替えの具体例については図9にて説明したものと同様であり得るため説明を省略する。算出部142は、画像認識の内部処理を切り替えることにより反射マーカを検出できた場合には、ステップS1220にて反射マーカに基づいてコントローラ200の位置情報および姿勢情報を補正する。
 ステップS1228では、表示制御部143がコントローラ200の位置情報および姿勢情報に基づいて表示部150を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップS1232では、制御部220が、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合(ステップS1232/Yes)、一連の処理が終了し、コンテンツが終了していないと判定された場合(ステップS1232/No)、ステップS1200~ステップS1228の処理が継続される。
 以上、本開示に係る第3の実施形態について説明した。なお、第3の実施形態には、第1の実施形態および第2の実施形態にて説明した技術的事項が適宜適用され得る点に留意されたい。
  <4.位置情報の算出方法の具体例>
 上記では、本開示に係る第3の実施形態について説明した。続いて、コントローラ200のIMU210によって出力された第1のセンサ情報や、HMD100のIMU110によって出力されたセンサ情報に基づく、HMD100およびコントローラ200の各装着部分の位置情報の算出方法の具体例について説明する。
 上記のとおり、HMD100は、例えば、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、HMD100およびコントローラ200の各装着部分のより正確な位置情報を算出することができる。
 まず前提として、慣性航法に基づく位置算出処理について説明する。慣性航法は、角速度および加速度を複数回積分(Integration)することでセンサ位置情報を算出する技術であり、例えば船舶または航空機などに採用されている。図19は、慣性航法に基づく位置算出処理の概略を示す模式図である。
 慣性航法では、まずジャイロセンサにより取得されたローカル座標系(センサ装置毎に設定された座標系)における角速度を積分する(S111)ことで、グローバル座標系におけるコントローラ200およびHMD100の姿勢が計算される。次いで、グローバル座標系における各装置の姿勢に基づいて、各装置に備えられる加速度センサにより取得されたローカル座標系におけるセンサ装置の加速度をグローバル座標系における各装置の加速度へ座標系変換する(S112)。そして、座標系変換されたグローバル座標系における加速度を積分する(S113)ことで、グローバル座標系における各装置の速度が計算される。次に、グローバル座標系における各装置の速度を積分する(S114)ことで、各装置の移動距離が計算される。ここで、グローバル座標系における移動距離を細分点ごとに合成していくことにより、初期位置を起点とした相対的な位置情報が得られる。初期位置が既知であれば、上記の情報により各装置の絶対的な位置情報(即ち、グローバル座標系における三次元座標)を計算することができる。上記のようにして、慣性航法に基づく位置算出処理により、各装置の姿勢情報と位置情報が出力される。
 図19に示した慣性航法に基づく位置算出処理は、比較的処理負荷が小さく高速に実行され得る。
 ここで、慣性航法では、姿勢情報を得るために角速度に対して施される積分はステップS111の1回のみであり、また、AHRSなどの周知技術を組み合わせることで、姿勢情報を高精度に取得することが可能であった。一方、位置情報を得るためにはステップS113とステップS114の2回の積分が加速度に対して施されるため、加速度センサにより取得される加速度に誤差が含まれる場合には、出力される位置情報に誤差が蓄積され得る。
 図20は、慣性航法に基づく位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図20に示すように、慣性航法により位置情報を算出し始めてから短い時間の間であれば、位置誤差は小さく、位置情報を高精度に算出可能である。しかし、慣性航法により算出される位置情報に含まれる誤差は図20に示すように時間に応じて大きくなり得るため、長時間継続して実行された場合に、非常に大きな誤差が位置情報に含まれてしまう恐れがある。
 そこで、本実施形態では、運動モデル(Dynamics Model)に基づいて、回帰による装着部位の位置算出を行う。図21は、運動モデルに基づく位置算出処理の概略を示す模式図である。
 図21に示すステップS121~S122の処理は、図19を参照して説明したステップS111~S112の処理と同様であるためここでの説明は省略する。図21に示すように運動モデルに基づく位置算出処理では、加速度の積分を行うことなく、各装置の位置情報を回帰により推定する(S123)。ステップS123の回帰推定処理では、グローバル座標系における各装置の姿勢と加速度を、事前に用意された運動モデルに当てはめる回帰により、位置情報が推定される。ここで、運動モデルは、例えば事前に運動制約情報(例えば過去に取得されたポーズや一連の動きにおける各部位の位置と姿勢のサンプルを複数含む情報)を学習することで生成することが可能である。なお、ステップS123の回帰推定処理には、多様な回帰分析手法を用いることが可能であり、例えばDNN(deep neural network)やRandom Forest等の手法が単独で、あるいは組み合わせて用いられてもよい。
 ここで、図21に示される処理では、加速度が積分されないため、図19、図20を参照して説明した慣性航法の場合のように位置誤差が時間に応じて大きくなり難い。図22は、運動モデルに基づく位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図22に示すように、運動モデルに基づく位置算出処理においても位置誤差は発生しているが、時間に応じて大きくならないため、長時間継続して実行された場合であっても、大きな誤差が発生し難い。
 したがって、図21に示した運動モデルに基づく位置算出処理により、より高精度に位置情報を算出可能であると考えられる。ただし、運動モデルに基づく位置算出処理では、回帰による統計的な算出が行われるため、入力の変化が連続的な場合であっても出力(算出結果)の変化が非連続的になりやすい。その結果、例えば最終的に得られるスケルトン情報を可視化した際に違和感を与えやすくなる恐れがある。また、図21に示した運動モデルに基づく位置算出処理は、図19に示した慣性航法に基づく位置算出処理と比較すると処理負荷が大きく、慣性航法に基づく位置算出処理よりも高速な実行は困難である。
 上述したように、慣性航法に基づく位置算出処理と運動モデルに基づく位置算出処理には、各々の特長がある。そこで、本実施形態では、慣性航法に基づく位置算出処理と運動モデルに基づく位置算出処理の両方を組み合わせて、算出される位置情報を補正することで、より高精度に位置情報を算出する。なお、以下では、慣性航法に基づく位置算出処理を第1の処理、運動モデルに基づく位置算出処理を第2の処理と称する場合がある。
 図23は、本開示に係るHMD100の算出部142による位置算出処理の概略を示す模式図である。なお、図23に示したのは概略であり、算出部142による位置算出処理は図23に示されていない処理も含んでもよい。
 図23に示すように、算出部142による位置算出処理は、慣性航法に基づく第1の処理(S111~S114)と運動モデルに基づく第2の処理(S121~S123)に加え、補正処理(S130)をも含む。ステップS130の補正処理では、第1の処理の出力(以下、第1の出力とも称する)、及び第2の処理の出力(以下、第2の出力とも称する)を参照して、補正が行われる。なお、第1の出力は装着部分の姿勢情報と位置情報を含み、第2の出力は位置情報を含む。そして、ステップS130では、第1の出力に含まれる位置情報を第1の出力に含まれる姿勢情報と第2の出力に含まれる位置情報に基づいて補正する。なお、ステップS130において、第1の出力に含まれる姿勢情報については位置情報の補正に用いられると共に、そのまま出力されてもよい。また、ステップS130の補正処理は、例えばカルマンフィルタにより実現され得る。
 また、上述したように、第1の処理は、第2の処理よりも高速に実行され得る。したがって、補正処理(S130)は、第2の出力が得られたタイミングで実行され、第2の出力が得られず第1の出力のみが得られた場合には、第1の出力が本実施形態にかかる位置算出処理の出力としてそのまま出力されてもよい。
 図24は、本実施形態にかかる位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図24に示す例では、時刻t11において第2の出力が得られ、第2の出力に基づく補正が行われるものとする。図24に示すように、本実施形態にかかる位置算出処理では、処理の開始から、時刻t11までの間は時間に応じて位置誤差が大きくなるが、時刻t11において第2の出力に基づく補正が行われた結果、位置誤差が抑制される。
 このように、算出部142による位置算出処理によれば、補正が行われる度に位置誤差が抑制されるため、誤差が時間に応じて大きくなりにくく、長時間継続して実行された場合であっても、大きな誤差が発生し難い。また、算出部142による位置算出処理では、第2の出力が得られない場合には第1の出力がそのまま出力されるため、運動モデルに基づく第2の処理のみにより位置算出を行う場合と比べて、高頻度に位置情報を算出することが可能となる。
 このように、HMD100は、慣性航法による位置算出の際に発生するドリフト誤差を回帰モデルにより補正することによって、より少ないコントローラ200によって高精度の位置情報および姿勢情報の算出を実現することができる。なお、算出部142による位置算出処理は、上記で説明した方法(慣性航法および回帰モデルを用いる方法)に限定されない。また、IMU(IMU110およびIMU210)の精度が向上した場合、慣性航法による位置算出の際に発生するドリフト誤差が小さくなるため回帰モデルを用いて補正を行う必要がなくなる場合がある。
  <5.ハードウェア構成例>
 上記では、HMD100およびコントローラ200の各装着部分の位置情報の算出方法の具体例について説明した。最後に、図25を参照して、上記で説明してきた各実施形態に係るHMD100またはコントローラ200のハードウェア構成例について説明する。図25は、各実施形態に係るHMD100またはコントローラ200を具現する情報処理装置のハードウェア構成例を示すブロック図である。各実施形態に係るHMD100またはコントローラ200による情報処理は、ソフトウェアと、以下に説明するハードウェアとの協働により実現される。
 図25に示すように、情報処理装置900は、CPU(Central Processing Unit)901、ROM(Read Only Memory)902、RAM(Random Access Memory)903及びホストバス904aを備える。また、情報処理装置900は、ブリッジ904、外部バス904b、インタフェース905、入力装置906、出力装置907、ストレージ装置908、ドライブ909、接続ポート911、通信装置913、及びセンサ915を備える。情報処理装置900は、CPU901に代えて、又はこれとともに、DSP若しくはASICなどの処理回路を有してもよい。
 CPU901は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置900内の動作全般を制御する。また、CPU901は、マイクロプロセッサであってもよい。ROM902は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM903は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。CPU901は、例えば、制御部140または制御部220を具現し得る。
 CPU901、ROM902及びRAM903は、CPUバスなどを含むホストバス904aにより相互に接続されている。ホストバス904aは、ブリッジ904を介して、PCI(Peripheral Component Interconnect/Interface)バス等の外部バス904bに接続されている。なお、必ずしもホストバス904a、ブリッジ904および外部バス904bを分離構成する必要はなく、1つのバスにこれらの機能を実装してもよい。
 入力装置906は、例えば、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチ及びレバー等、ユーザによって情報が入力される装置によって実現される。また、入力装置906は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置900の操作に対応した携帯電話やPDA等の外部接続機器であってもよい。さらに、入力装置906は、例えば、上記の入力手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU901に出力する入力制御回路などを含んでいてもよい。情報処理装置900のユーザは、この入力装置906を操作することにより、情報処理装置900に対して各種のデータを入力したり処理動作を指示したりすることができる。入力装置906は、例えば、入力部160を具現し得る。
 出力装置907は、取得した情報をユーザに対して視覚的又は聴覚的に通知することが可能な装置で形成される。このような装置として、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置及びランプ等の表示装置や、スピーカ及びヘッドホン等の音声出力装置や、プリンタ装置等がある。出力装置907は、例えば、情報処理装置900が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置900が行った各種処理により得られた結果を、テキスト、イメージ、表、グラフ等、様々な形式で視覚的に表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して聴覚的に出力する。出力装置907は、例えば、表示部150を具現し得る。
 ストレージ装置908は、情報処理装置900の記憶部の一例として形成されたデータ格納用の装置である。ストレージ装置908は、例えば、HDD等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス又は光磁気記憶デバイス等により実現される。ストレージ装置908は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置などを含んでもよい。このストレージ装置908は、CPU901が実行するプログラムや各種データ及び外部から取得した各種のデータ等を格納する。ストレージ装置908は、例えば、記憶部170を具現し得る。
 ドライブ909は、記憶媒体用リーダライタであり、情報処理装置900に内蔵、あるいは外付けされる。ドライブ909は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記憶媒体に記録されている情報を読み出して、RAM903に出力する。また、ドライブ909は、リムーバブル記憶媒体に情報を書き込むこともできる。
 接続ポート911は、外部機器と接続されるインタフェースであって、例えばUSB(Universal Serial Bus)などによりデータ伝送可能な外部機器との接続口である。
 通信装置913は、例えば、ネットワーク920に接続するための通信デバイス等で形成された通信インタフェースである。通信装置913は、例えば、有線若しくは無線LAN(Local Area Network)、LTE(Long Term Evolution)、Bluetooth(登録商標)又はWUSB(Wireless USB)用の通信カード等である。また、通信装置913は、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ又は各種通信用のモデム等であってもよい。この通信装置913は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。通信装置913は、例えば、通信部130または通信部230を具現し得る。
 センサ915は、例えば、加速度センサ、ジャイロセンサ、地磁気センサ、光センサ、音センサ、測距センサ、力センサ等の各種のセンサである。センサ915は、情報処理装置900の姿勢、移動速度等、情報処理装置900自身の状態に関する情報や、情報処理装置900の周辺の明るさや騒音等、情報処理装置900の周辺環境に関する情報を取得する。また、センサ915は、GPS信号を受信して装置の緯度、経度及び高度を測定するGPSセンサを含んでもよい。センサ915は、例えば、IMU110、IMU210、イメージセンサ120、磁気発生部180、または磁気センサ240を具現し得る。
 なお、ネットワーク920は、ネットワーク920に接続されている装置から送信される情報の有線、または無線の伝送路である。例えば、ネットワーク920は、インターネット、電話回線網、衛星通信網などの公衆回線網や、Ethernet(登録商標)を含む各種のLAN(Local Area Network)、WAN(Wide Area Network)などを含んでもよい。また、ネットワーク920は、IP-VPN(Internet Protocol-Virtual Private Network)などの専用回線網を含んでもよい。
 以上、本開示の各実施形態に係る情報処理装置900の機能を実現可能なハードウェア構成例を示した。上記の各構成要素は、汎用的な部材を用いて実現されていてもよいし、各構成要素の機能に特化したハードウェアにより実現されていてもよい。従って、本開示の実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
 なお、上記のような本開示の各実施形態に係る情報処理装置900の各機能を実現するためのコンピュータプログラムを作製し、PC等に実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ等である。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信されてもよい。
  <6.まとめ>
 以上で説明してきたように、本開示に係る情報処理システムは、操作子の位置情報の算出に用いられる第1のセンサ情報を出力する第1のセンサと、第1のセンサ情報よりも高精度な位置情報の算出が可能である一方で、その算出に大きな電力を要する第2の位置情報を出力する第2のセンサと、を備える。そして、本開示に係るHMD100は、第1のセンサ情報を用いて算出される操作子の位置情報が予め設定された設定範囲に含まれる場合、第2のセンサ情報を用いて操作子の位置情報を算出する。これによって、HMD100は、設定範囲以外においては第1のセンサを用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲(設定範囲)においては第2のセンサを用いてより高精度に位置情報および姿勢情報を算出することができる。また、HMD100は、このように第2のセンサを間欠的に用いることで消費電力を低減させることができる。
 本開示に係る第1の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとしてイメージセンサ120が用いられ、第2の実施形態では、第1のセンサとしてIMU210が用いられ、第2のセンサとして磁気センサ240が用いられ、第3の実施形態では、第1のセンサとして磁気センサ240が用いられ、第2のセンサとしてイメージセンサ120が用いられる場合について説明してきた。しかし、第1のセンサおよび第2のセンサとして用いられるセンサの種類や組合せはこれらに限定されない点に留意されたい。
 以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
 例えば、上記で説明した各フローチャートにおける各ステップは、必ずしも記載された順序に沿って時系列に処理される必要はない。すなわち、フローチャートにおける各ステップは、記載された順序と異なる順序で処理されても、並列的に処理されてもよい。
 また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
 なお、以下のような構成も本開示の技術的範囲に属する。
(1)
 第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得する取得部と、
 前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、
 情報処理装置。
(2)
 前記第1のセンサ情報を用いて算出される位置情報は、前記第2のセンサ情報を用いて算出される位置情報の座標系によって規定される、
 前記(1)に記載の情報処理装置。
(3)
 前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、前記設定範囲に含まれる場合、
 前記算出部は、前記第1のセンサ情報および前記第2のセンサ情報を用いて前記操作子の位置情報を算出する、
 前記(1)または(2)に記載の情報処理装置。
(4)
 前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第2のセンサ情報の取得が開始され、
 前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第2のセンサ情報の取得が停止される、
 前記(3)に記載の情報処理装置。
(5)
 前記第1のセンサ情報を用いる前記位置情報の算出処理にて前記第1のセンサ情報が取得される期間よりも、前記第2のセンサ情報を用いる前記位置情報の算出処理にて前記第2のセンサ情報が取得される期間の方が短い、
 前記(3)に記載の情報処理装置。
(6)
 前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第2のセンサ情報の取得頻度が増やされ、
 前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第2のセンサ情報の取得頻度が減らされる、
 前記(5)に記載の情報処理装置。
(7)
 前記第2のセンサ情報を用いて前記操作子の位置情報を算出する処理は、前記第1のセンサ情報を用いて前記操作子の位置情報を算出する処理に比べて、より大きな電力を消費する、
 前記(1)から(6)のいずれか1項に記載の情報処理装置。
(8)
 前記第1のセンサおよび前記第2のセンサのうちの少なくとも前記第1のセンサは、前記第2のセンサと共に一の装置に備えられる所定の機器の対として用いられる、
 前記(1)から(7)のいずれか1項に記載の情報処理装置。
(9)
 前記第1のセンサがIMUであり前記第2のセンサがイメージセンサであるか、前記第1のセンサがIMUであり前記第2のセンサが磁気センサであるか、前記第1のセンサが磁気センサであり前記第2のセンサがイメージセンサである、
 前記(7)または(8)に記載の情報処理装置。
(10)
 前記第1のセンサおよび前記第2のセンサは、ユーザの体の一部、または前記一部に接触する物体に装着される、
 前記(9)に記載の情報処理装置。
(11)
 前記操作子は、前記ユーザの体または前記物体における、前記第1のセンサもしくは前記第2のセンサの装着部分、または前記装着部分以外の部分である、
 前記(10)に記載の情報処理装置。
(12)
 前記設定範囲は、前記ユーザの視界に対応する、
 前記(10)または(11)に記載の情報処理装置。
(13)
 表示部は、前記ユーザの視界に仮想オブジェクトを表示し、
 前記操作子の位置情報に基づいて前記表示部による前記仮想オブジェクトの表示を制御する表示制御部を更に備える、
 前記(12)に記載の情報処理装置。
(14)
 前記表示制御部は、前記操作子の位置情報に基づいて前記表示部を制御することで、前記仮想オブジェクトを前記操作子に重畳して表示させる、
 前記(13)に記載の情報処理装置。
(15)
 第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、
 前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、
 コンピュータにより実行される情報処理方法。
(16)
 第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、
 前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、
 をコンピュータに実現させるためのプログラム。
 100  HMD
 110  IMU
 120  イメージセンサ
 130  通信部
 140  制御部
 141  取得部
 142  算出部
 143  表示制御部
 150  表示部
 160  入力部
 170  記憶部
 180  磁気発生部
 200  コントローラ
 210  IMU
 220  制御部
 230  通信部
 240  磁気センサ

Claims (16)

  1.  第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得する取得部と、
     前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、
     情報処理装置。
  2.  前記第1のセンサ情報を用いて算出される位置情報は、前記第2のセンサ情報を用いて算出される位置情報の座標系によって規定される、
     請求項1に記載の情報処理装置。
  3.  前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、前記設定範囲に含まれる場合、
     前記算出部は、前記第1のセンサ情報および前記第2のセンサ情報を用いて前記操作子の位置情報を算出する、
     請求項1に記載の情報処理装置。
  4.  前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第2のセンサ情報の取得が開始され、
     前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第2のセンサ情報の取得が停止される、
     請求項3に記載の情報処理装置。
  5.  前記第1のセンサ情報を用いる前記位置情報の算出処理にて前記第1のセンサ情報が取得される期間よりも、前記第2のセンサ情報を用いる前記位置情報の算出処理にて前記第2のセンサ情報が取得される期間の方が短い、
     請求項3に記載の情報処理装置。
  6.  前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第2のセンサ情報の取得頻度が増やされ、
     前記第1のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第2のセンサ情報の取得頻度が減らされる、
     請求項5に記載の情報処理装置。
  7.  前記第2のセンサ情報を用いて前記操作子の位置情報を算出する処理は、前記第1のセンサ情報を用いて前記操作子の位置情報を算出する処理に比べて、より大きな電力を消費する、
     請求項1に記載の情報処理装置。
  8.  前記第1のセンサおよび前記第2のセンサのうちの少なくとも前記第1のセンサは、前記第2のセンサと共に一の装置に備えられる所定の機器の対として用いられる、
     請求項1に記載の情報処理装置。
  9.  前記第1のセンサがIMUであり前記第2のセンサがイメージセンサであるか、前記第1のセンサがIMUであり前記第2のセンサが磁気センサであるか、前記第1のセンサが磁気センサであり前記第2のセンサがイメージセンサである、
     請求項7に記載の情報処理装置。
  10.  前記第1のセンサおよび前記第2のセンサは、ユーザの体の一部、または前記一部に接触する物体に装着される、
     請求項9に記載の情報処理装置。
  11.  前記操作子は、前記ユーザの体または前記物体における、前記第1のセンサもしくは前記第2のセンサの装着部分、または前記装着部分以外の部分である、
     請求項10に記載の情報処理装置。
  12.  前記設定範囲は、前記ユーザの視界に対応する、
     請求項10に記載の情報処理装置。
  13.  表示部は、前記ユーザの視界に仮想オブジェクトを表示し、
     前記操作子の位置情報に基づいて前記表示部による前記仮想オブジェクトの表示を制御する表示制御部を更に備える、
     請求項12に記載の情報処理装置。
  14.  前記表示制御部は、前記操作子の位置情報に基づいて前記表示部を制御することで、前記仮想オブジェクトを前記操作子に重畳して表示させる、
     請求項13に記載の情報処理装置。
  15.  第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、
     前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、
     コンピュータにより実行される情報処理方法。
  16.  第1のセンサによって出力され、操作子の位置情報の算出に用いられる第1のセンサ情報、および第2のセンサによって出力され、前記操作子の位置情報の算出に用いられる第2のセンサ情報を取得することと、
     前記第1のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第2のセンサ情報を用いて前記操作子の位置情報を算出することと、
     をコンピュータに実現させるためのプログラム。
PCT/JP2019/043841 2018-11-27 2019-11-08 情報処理装置、情報処理方法、およびプログラム WO2020110659A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020217012586A KR20210093866A (ko) 2018-11-27 2019-11-08 정보 처리 장치, 정보 처리 방법 및 프로그램
EP19890537.4A EP3889737A4 (en) 2018-11-27 2019-11-08 INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD AND PROGRAM
CN201980076542.8A CN113168224A (zh) 2018-11-27 2019-11-08 信息处理装置、信息处理方法及程序
JP2020558270A JPWO2020110659A1 (ja) 2018-11-27 2019-11-08 情報処理装置、情報処理方法、およびプログラム
US17/291,790 US20220026981A1 (en) 2018-11-27 2019-11-08 Information processing apparatus, method for processing information, and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018221420 2018-11-27
JP2018-221420 2018-11-27

Publications (1)

Publication Number Publication Date
WO2020110659A1 true WO2020110659A1 (ja) 2020-06-04

Family

ID=70853788

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/043841 WO2020110659A1 (ja) 2018-11-27 2019-11-08 情報処理装置、情報処理方法、およびプログラム

Country Status (6)

Country Link
US (1) US20220026981A1 (ja)
EP (1) EP3889737A4 (ja)
JP (1) JPWO2020110659A1 (ja)
KR (1) KR20210093866A (ja)
CN (1) CN113168224A (ja)
WO (1) WO2020110659A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022511458A (ja) * 2018-11-30 2022-01-31 株式会社ソニー・インタラクティブエンタテインメント Hmdに対するコントローラの動きを判定するためのシステム及び方法
WO2023145019A1 (ja) * 2022-01-28 2023-08-03 株式会社ソニー・インタラクティブエンタテインメント 電子機器、情報処理方法およびプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6795471B2 (ja) * 2017-08-25 2020-12-02 ファナック株式会社 ロボットシステム
US11893166B1 (en) * 2022-11-08 2024-02-06 Snap Inc. User avatar movement control using an augmented reality eyewear device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175439A (ja) 2010-02-24 2011-09-08 Sony Corp 画像処理装置、画像処理方法、プログラム及び画像処理システム
JP2012505476A (ja) * 2008-10-07 2012-03-01 クゥアルコム・インコーポレイテッド 動きセンサを使用して、バーチャルボタンを生成すること
JP2015046089A (ja) * 2013-08-29 2015-03-12 ソニー株式会社 情報処理装置および情報処理方法
JP2016192014A (ja) * 2015-03-31 2016-11-10 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1946243A2 (en) * 2005-10-04 2008-07-23 Intersense, Inc. Tracking objects with markers
JP2011259384A (ja) * 2010-06-11 2011-12-22 Sharp Corp 撮像装置、表示装置、プログラム及び記録媒体
US10209771B2 (en) * 2016-09-30 2019-02-19 Sony Interactive Entertainment Inc. Predictive RF beamforming for head mounted display
US9529426B2 (en) * 2012-02-08 2016-12-27 Microsoft Technology Licensing, Llc Head pose tracking using a depth camera
CN107923740B (zh) * 2015-09-09 2020-08-11 索尼公司 传感器设备、传感器系统以及信息处理设备
US10146335B2 (en) * 2016-06-09 2018-12-04 Microsoft Technology Licensing, Llc Modular extension of inertial controller for six DOF mixed reality input
JP2017224984A (ja) * 2016-06-15 2017-12-21 セイコーエプソン株式会社 プログラム、装置、キャリブレーション方法
US20190138795A1 (en) * 2017-11-07 2019-05-09 Ooma, Inc. Automatic Object Detection and Recognition via a Camera System

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012505476A (ja) * 2008-10-07 2012-03-01 クゥアルコム・インコーポレイテッド 動きセンサを使用して、バーチャルボタンを生成すること
JP2011175439A (ja) 2010-02-24 2011-09-08 Sony Corp 画像処理装置、画像処理方法、プログラム及び画像処理システム
JP2015046089A (ja) * 2013-08-29 2015-03-12 ソニー株式会社 情報処理装置および情報処理方法
JP2016192014A (ja) * 2015-03-31 2016-11-10 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022511458A (ja) * 2018-11-30 2022-01-31 株式会社ソニー・インタラクティブエンタテインメント Hmdに対するコントローラの動きを判定するためのシステム及び方法
JP7337161B2 (ja) 2018-11-30 2023-09-01 株式会社ソニー・インタラクティブエンタテインメント Hmdに対するコントローラの動きを判定するためのシステム及び方法
WO2023145019A1 (ja) * 2022-01-28 2023-08-03 株式会社ソニー・インタラクティブエンタテインメント 電子機器、情報処理方法およびプログラム

Also Published As

Publication number Publication date
JPWO2020110659A1 (ja) 2021-10-14
EP3889737A1 (en) 2021-10-06
US20220026981A1 (en) 2022-01-27
EP3889737A4 (en) 2022-01-19
CN113168224A (zh) 2021-07-23
KR20210093866A (ko) 2021-07-28

Similar Documents

Publication Publication Date Title
WO2019203189A1 (ja) プログラム、情報処理装置、及び情報処理方法
JP6979475B2 (ja) ヘッドマウントディスプレイ追跡
US11157070B2 (en) Massive simultaneous remote digital presence world
WO2020110659A1 (ja) 情報処理装置、情報処理方法、およびプログラム
US11083950B2 (en) Information processing apparatus and information processing method
US20150070274A1 (en) Methods and systems for determining 6dof location and orientation of head-mounted display and associated user movements
JP6785385B2 (ja) 周辺デバイスの視覚的追跡
US11868546B2 (en) Body pose estimation using self-tracked controllers
JP7316282B2 (ja) 拡張現実のためのシステムおよび方法
US10782780B2 (en) Remote perception of depth and shape of objects and surfaces
US20190108391A1 (en) Information processing device, information processing method, and program
US9547412B1 (en) User interface configuration to avoid undesired movement effects
WO2019155840A1 (ja) 情報処理装置、情報処理方法、およびプログラム
WO2021241431A1 (ja) 情報処理装置、情報処理方法、及びコンピュータが読み取り可能な記録媒体
JP2023501079A (ja) 共有人工現実環境における同じ場所での姿勢推定
US11073902B1 (en) Using skeletal position to predict virtual boundary activation
CN115176306A (zh) 用于可穿戴系统的手部和图腾输入融合
US11514604B2 (en) Information processing device and information processing method
WO2017061890A1 (en) Wireless full body motion control sensor
TWI836498B (zh) 用於配件配對的方法、系統以及記錄介質
Mohareri et al. A vision-based location positioning system via augmented reality: An application in humanoid robot navigation
JP6874207B2 (ja) 推定装置、推定方法及びプログラム
TW202117588A (zh) 人體部位追蹤方法和人體部位追蹤系統
US11983306B2 (en) Peripheral tracking system and method
US20240161438A1 (en) Information processing apparatus, information processing method, and information processing system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19890537

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020558270

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2019890537

Country of ref document: EP

Effective date: 20210628