Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
robots:pr2_guidelines [2014/08/13 13:19] – [Gaining access to Backpack PC] wiedemeyerrobots:pr2_guidelines [2017/02/22 17:13] (current) – [Rebooting the robot] lisca
Line 1: Line 1:
 +===== Prerequisites =====
 +You are required to be on two mailing lists before you can work on the
 +pr2:
 +  * robots@ias.cs.tum.edu (register [[https://toychest.ai.uni-bremen.de/wiki/robots:pr2_guidelines|TBD]])
 +  * pr2-users@lists.willowgarage.com (register [[https://toychest.ai.uni-bremen.de/wiki/robots:pr2_guidelines|TBD]])
  
 +You also need to watch the pr2 [[https://www.youtube.com/watch?v=9OQK_h6ZB6Q|safety video]] before working on
 +it. We recommend to read the [[https://pr2s.clearpathrobotics.com/wiki/PR2%20Manual|pr2 manual]].
 +
 +===== Accounts =====
 +You can get your account from the administrators [[mailto:amaldo@cs.uni-bremen.de|Alexis]], [[mailto:georg.bartels@cs.uni-bremen.de|Georg]], [[mailto:lisca@cs.uni-bremen.de|Gheorghe]]. You will get full sudo permissions on the robot. Be careful
 +with it. If you do not know all possible effects of an action, ask one
 +of the administrators before. Installation of new software packages
 +with `aptitude` or `apt-get` is not a problem. Messing around in
 +configuration files or doing something like `sudo make install` is not
 +allowed. Please be always aware that the robot may be reinstalled and
 +your home directory gets deleted during this process. Never keep any
 +important data on the robot. Always copy important data to your
 +local machine.
 +
 +===== Computer's Clock Synchronization =====
 +Consistent time-stamping of data exchanged between the user's computer and the robot's computer is crucial for interpreting this data, on both computers. Keeping the the user's computer time synced with the robot's computer time requires some attention. The tool employed to take care of this synchronization is chrony [[http://chrony.tuxfamily.org]].
 +The general strategy is to have the two computers (user's computer and robot's computer) tightly coupled to one another, but loosely coupled to an external time source. This will prevent the robot time and the user time from drifting too far one from the other.
 +In our case the external time source will be the robot's base station. The robot's computer time should be always synced to the base station time. chony's job is to synchronize the user's computer time to the base station time.
 +
 +I order to employ chrony to keep synced your computer time with the base station computer time, make sure:
 +
 +1. you have chrony installed
 +
 +<code>
 +sudo apt-get install chrony
 +</code>
 +
 +2. you updated your chrony configuration file:
 +
 +<code>
 +/etc/chrony/chrony.conf
 +</code>
 +
 +allowing chrony to check if whether another chronyd client is already running (to be **newly added** to your chrony.conf file):
 +
 +<code>
 +pidfile /var/run/chrony-internal.pid
 +</code>
 +
 +and telling chrony client which is the chrony server to whom to sync (to **replace** the old servers in your chrony.conf):
 +
 +<code>
 +server pr2a minpoll 3 maxpoll 15 maxdelay .010
 +initstepslew 0 pr2a 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
 +</code>
 +
 +3. restarting chrony client (running on user's computer)
 +
 +<code>
 +sudo /etc/init.d/chrony restart
 +</code>
 +
 +4. check your installation / configuration
 +
 +Start chrony:
 +
 +<code>
 +chronyc
 +</code>
 +
 +Ask chrony the synchronization sources:
 +
 +<code>
 +sources
 +</code>
 +
 +You should get something similar with:
 +
 +<code>
 +210 Number of sources = 1
 +MS Name/IP address           Stratum Poll LastRx Last sample
 +============================================================================
 +^* pr2a.ai.loc                3    5      0    -24us[  -31us] +/-   33ms
 +</code>
 +
 +The **asterisk * ** appearing in front of the source confirms your computer time is synced to the pr2base.
 +
 +Exit chrony:
 +
 +<code>
 +exit
 +</code>
 +
 +Now you should be fine.
 +
 +A second test would be:
 +
 +<code>
 +ntpdate -q pr2a
 +</code>
 +
 +with an expected value smaller than 0.0001 milisecond.
 +
 +Sometimes the clocks on the computers get into an inconsistent state. This will show up as an error in the pr2dashboard as: "NTP offset from XXX to YYY; Offset too great." If the clocks are in an inconsistent state, try restarting chrony on your computer. If this still doesn't solve the problem you may ask one of the PR2 admins to restart chrony on the basestation, c1, and c2, in this order.
 +
 +For additional details you may have a look how the synchronization problem between PR2's C1 and C2 is solved with the base station help http://pr2support.willowgarage.com/wiki/PR2%20Manual/Chapter13#Clock_Synchronization.
 +
 +
 +===== Software installation =====
 +Get familiar with [[http://www.ros.org/wiki|ROS]] by working through the following tutorials on your local machine before getting started on the robot:
 +  * [[http://wiki.ros.org/ROS/Tutorials]] both Python and C++
 +  * [[http://www.ros.org/wiki/actionlib/Tutorials]] both Python and C++
 +  * [[http://www.ros.org/wiki/tf/Tutorials]] both Python or C++
 +
 +===== Running the robot =====
 +
 +To work on the robot, your computer must be either connected to the lab network. The robot's computers in the network are named pr2a and pr2b. 
 +
 +<code>
 +export ROS_IP=<the-ip-of-your-machine>
 +export ROS_MASTER_URI=http://pr2a:11311
 +</code>
 +
 +to run some ros nodes locally. To start your stuff, ssh into the
 +robot with
 +
 +<code>
 +ssh <your-name>@pr2a
 +</code>
 +
 +You will see a message if the robot is free or claimed right now. If
 +it is claimed, go and find the person who claimed it and ask if he/she
 +still needs it. __Never__ kill someone else's processes without asking.
 +If the robot is not claimed, first find the wireless runstop. It
 +should be close around the robot.  
 +
 +Now claim the robot:
 +
 +<code>
 +robot claim
 +</code>
 +
 +Make sure that the runstop is off before you start up the robot with:
 +
 +<code>
 +roslaunch /etc/ros/indigo/robot.launch
 +</code>
 +
 +The robot should come up now.  To check, set the %%ROS_MASTER_URI%% on
 +your local machine to %%http://pr2a:11311%% and launch the [[http://www.ros.org/wiki/pr2_dashboard|rqt_pr2_dashboard]]
 +with
 +
 +<code>
 +rosrun rqt_pr2_dashboard rqt_pr2_dashboard
 +</code>
 +
 +You should see only green fields.  It is important that you run the
 +dashboard whenever you are working on the robot.
 +
 +It might be a good idea to first start the core manually before
 +running the robot and to run all your commands in a [[http://www.gnu.org/software/screen/|screen]] or [[http://gnometerminator.blogspot.de/p/introduction.html|terminator]] session. Now release the runstop. The robot might calibrate. Be sure
 +that it will not hit anything while calibrating.  While moving the
 +robot, __always__ make sure that the wireless runstop is in reach. If
 +you need to leave the robot for a short amount of time, make sure that
 +you always press the runstop and make sure that the pr2's power cable
 +is plugged in. **First plug in the power cable into the PR2's inlet, then into the wall outlet**. This is important because the power cable and the pr2 power inlet might get damaged otherwise. When you are done on the robot, move it to its docking
 +station and plug in the network cable and the power cable. Press the red button on the
 +runstop. Now release the robot with:
 +
 +<code>
 +robot release
 +</code>
 +
 +No food or drink in the PR2 workspace, in particular anywhere the PR2
 +might make contact with.  Keep the joystick plugged into the USB hub
 +nearby the robot charging station when not in use.  Obey standard PR2
 +safety protocol, including: No sharp objects in the PR2’s grasp.  No
 +liquids near the PR2, regardless of how sturdy you think the container
 +is.  No objects may be placed on top of the PR2.  Be wary of small
 +objects (e.g. screws). If you suspect anything has fallen in the PR2,
 +cut the power with the breakers and contact [[mailto:amaldo@cs.uni-bremen.de|Alexis]] immediately.
 +
 +===== Running Kinect2 from PR2 =====
 +
 +  * Make sure the robot is running.
 +  * Make sure your user has access to the [[ias:backpackpc|Backpack PC]].
 +
 +==== Starting Kinect 2 Node ====
 +
 +  - Connect to pr2a: <code># ssh -XAC pr2a</code>
 +  - Start the Kinect2 bridge: (stopping with **CTRL+C**) <code># /etc/ros/kinect2_bridge_remote.sh</code> This script sets the environment and launches the kinect2_bridge node on the [[ias:backpackpc|Backpack PC]].
 +
 +
 +
 +===== Checklists =====
 +
 +==== Running the robot ====
 +
 +  *  Check if the robot is claimed. Do not kill other people's processes without asking them.
 +  *  Make sure the runstop is off
 +  *  Claim and start up the robot with <code>robot claim</code>
 +  *  Run the dashboard on your local machine
 +  *  Release the runstop. The robot might calibrate. Make sure that it doesn't hit anything.
 +  *  Work with the robot.
 +  *  Always have the runstop in reach.
 +  *  When you are done working with the robot press the "Stop" button on runstop.
 +  *  Release the robot <code>robot release</code>
 +  
 +==== Leaving the robot for a short time ====
 +
 +  * Press the runstop
 +  * Make sure the robot is plugged in
 +
 +==== Shutting down the robot ====
 +
 +  * Move the robot to its docking station
 +  * Plug in the robot (Ethernet and power). **First plug in the power cable into the PR2's inlet, then plug in the power cable into the wall outlet** 
 +  * Press the red button on the runstop
 +  * Release the robot with `robot release`
 +  * Plug the PS3 controller into the USB hub nearby the robot
 +
 +==== Rebooting the robot ====
 +
 +  * on pr2b enter the command <code>sudo shutdown -h now</code>
 +
 +  * on pr2a enter the command <code>sudo shutdown -h now</code>
 +
 +  * flip off the power switch (on the back side of robot's base)
 +
 +  * flip on the power switch (on the back side of robot's base)
 +
 +  * pr2a should boot automatically (no help needed)
 +
 +  * in case help is needed then in your favourite browser, open pr2a's remote BIOS screen http://192.168.102.79
 +
 +  * pr2b needs manual trigger for the the booting process
 +
 +  * in your favourite browser, open pr2b's remote BIOS screen http://192.168.102.81
 +
 +  * ask [[mailto:amaldo@cs.uni-bremen.de|Alexis]] or [[mailto:lisca@cs.uni-bremen.de|Gheorghe]] the magic username and password
 +
 +  * hit enter in order to trigger the pr2b's booting process (just follow the instructions on the screen)
 +
 +  * next step: the calibration routine (trigger at the first run of roslaunch /etc/ros/indigo/robot.launch)
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki