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
To install IPython in Ubuntu just use the command below.
apt-get install ipython3
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 <name of your setupfile>.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.
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.