====== The Python Repl ======
For better interaction while programming CRAM utilises a Repl interface. To get a similar experience in PyCRAM we use the IPython interactive console.
In the following we will describe how to install IPython and how to use it as a PyCRAM Repl
===== Install IPython =====
To install IPython in Ubuntu just use the command below.
apt-get install ipython3
===== Setup IPython as a PyCRAM Repl =====
For convenience it is advised to create a setup file which configures the BulletWorld and defines some helper functions.
This setup file could look something like this:
import rospy
from pycram.ik import ik
from pycram import bullet_world, bullet_world_reasoning
from pycram.robot_description import InitializedRobotDescription as robot_description
world = bullet_world.BulletWorld()
robot = bullet_world.Object("boxy", "robot", "resources/boxy.urdf", [0, 0, 0], [0, 0, 0, 1])
floor = bullet_world.Object("floor", "environment", "resources/plane.urdf")
milk = bullet_world.Object("milk", "milk", "resources/milk.obj")
world.robot = robot
tool = robot.get_link_position_and_orientation(robot_description.i.get_tool_frame("left"))
world.add_vis_axis(tool)
def move_milk_to_hand():
hand_pose = robot.get_link_position(tool)
milk.set_position(hand_pose)
Now start the IPython shell in the terminal by typing the following command:
ipython3
By default IPython starts in the current directory of the terminal.
Next, navigate to the directory where the setup file is located. For this you can use the commands cd
and ls
Lastly, execute the setup file by typing
run .py
Now the BulletWorld window should show up and load all objects specified in the setup file. After everything is loaded you are presented with a prompt where you can now type python code as well as use the objects which are initialized in the executed code.
==== Enable autoreload ====
To use changes made in the Python file while the Repl is running you need to enable the iPython extension autoreload. This can be done using the iPython startup files, these are files which are always run if iPython is started.
The startup files are located in ~/.ipython/profile_default/startup along with a README file which explains the usage of the startup files.
In this directory create a file called 00-autoreload.ipy and enter the following code to the file.
%load_ext autoreload
%autoreload 2
The first line loads the extension to iPython and the second line configures autoreload to reload all modules before the typed in code is executed.
**Tip**
If you use iPython only as a Repl for PyCRAM you can create a symbolic link in the startup directory which links to your setup.py file.