The base of the MANA robot at LAAS.
This robot uses the Physics Constraints in Blender to allow the wheels to behave more realistically. The wheels turn as the robot moves, and they have Rigid Body physics, so that they can also have collisions with nearby objects.
It has four differential drive wheels, with the pairs of wheels on each side always moving at the same speed. Since the wheels of this robot use the Rigid Body physics, it must be controlled with the v_omega_diff_drive actuator.
Warning
Because of the physics constraints used in this robot, its wheels must NOT be children of the robot when the simulation is started. To properly include an RMP 400 robot in a scene, it must be done using a special class of the Builder API, and then calling a method to unparent the wheels from the robot. See below for an example.
These parameters are inherent to the Blender model for the robot, and must be modified directly in the Blender file:
To add a Segway RMP 400 robot, it is necessary to use the WheeledRobot class. Also, after giving any transformations to the robot (translation or rotation), you MUST call the method unparent_wheels of the robot instance. Otherwise the robot will not move.
from morse.builder import *
# Append Segway robot to the scene
robot = SegwayRMP400()
robot.rotate(z=0.73)
robot.translate(x=-2.0, z=0.2)
robot.unparent_wheels()
Another restriction with this kind of robots is that for any additional components added to it, translations and rotations must be applied before parenting them to the robot.
WRONG:
pose = Pose()
robot.append(pose)
pose.translate(x=0.5, y=0.1, z=0.4)
pose.rotate(x=1.57)
RIGHT:
pose = Pose()
pose.translate(x=0.5, y=0.1, z=0.4)
pose.rotate(x=1.57)
robot.append(pose)
The robot itself has several properties that describe its physical behaviour. None of these properties have an effect in the current version of the robot, but may be used in future releases. These can be changed using the Builder API: