===== Robotnik RB-1 ===== This document covers how to control the RB1 from a remote computer. It will cover the content of {{ :hardware:rb-1-quickstart.doc.pdf |}} and {{ :hardware:rb-1-software.doc.pdf |}} and go into additional details. ===== Prerequisites ===== ==== ROS ==== ROS If it hasn't been done already, the first step is to install ROS. The installation process and required ROS version vary depending on the OS. The simulation has been tested on ROS melodic and kinetic. ROS Melodic (Ubuntu 18.04): http://wiki.ros.org/melodic/Installation ROS Kinetic (Ubuntu 16.04): http://wiki.ros.org/kinetic/Installation If this is your first time using ROS, it is recommended to follow the tutorials at: http://wiki.ros.org/ROS/Tutorials The next step is to create a catkin workspace to put all the simulation packages. Details are provided here: http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment ===== Initializing the Robot ===== Starting the robot and initializing the CPU requires pressing buttons at the back of the robot in a certain order. {{hardware:rb1_starting.png?500}} The green switch corresponds to the ON/OFF button and is responsible for providing energy to the rest of the system. The yellow button resets the motors. The blue button turns the CPU on/off. The buttons have to be pressed in the order indicated in the image to initialize the robot correctly. Once the robot has been initialized, its Wifi will be turned on. The name of the robot's Wifi follow the pattern "RB1-SerialNumber". ===== Connecting to the robot ===== Before anything else, it is necessary to register the robot's IP in the computer's /etc/hosts. This step is required to be able to connect to the robot: user@remote:~$ sudo nano /etc/hosts # add the following line 192.168.0.200 rb1 Next, the computer's IP has to be added to the robot's own /etc/hosts. This step is necessary to control several ROS topics from a remote computer. First, connect to the robot's wifi and check your IP address. user@remote:~$ ifconfig Once you have obtained your IP adress (192.168.x.x), connect to the robot and add the name of your computer (equivalent of remote in the example above) to the /etc/hosts file. user@remote:~$ ssh rb1@rb1 rb1@rb1:~$ sudo nano /etc/hosts # add the following line 192.168.x.x name_of_computer Note: As a security measure, super user privileges were removed from the rb1 user. To access an account with the required permissions and edit the file, contact Panagiotis. ===== Using ROS to control the RB1 ===== ROS packages are available to control the RB1 robot with ROS. They can be used to move the robot's arm around. They require using MoveIt and rviz. ==== From the rb1 directly ==== In order to control the robot directly using rviz, it is necessary to connect a screen and keyboard to the robot. A ssh connection to the robot isn't enough as the rviz interface won't be displayed. Once the screen is connected, a Ubuntu 14 interface will be displayed. In order to start manipulating the robot's arm, open a terminal: rb1@rb1:~$ cd catkin_ws/ rb1@rb1:~$ source devel/setup.bash rb1@rb1:~$ roslaunch rb1_jaco_3fg_moveit_config demo_rtc.launch This will open rviz and moveit. In Motion Planning > Planning Request > Planning Group, select 'rb1_arm'. By default, it is on 'gripper' and they cannot be controlled via the moveit interface. {{hardware:rb1_real_moveit_indigo_arm.png?500}} The arm can now be moved as wanted. {{hardware:rb1_real_moveit_rviz.png?500}} ==== From a remote computer ==== The rb1 can also be controlled remotely from a computer. First, connect to the robot's Wifi, open a terminal and type: user@remote:~$ export ROS_MASTER_URI=http://rb1:11311 Typing this command is necessary to communicate with the ROS topics on the robot. It has be typed every time a new terminal is opened. If frequent use is necessary, consider adding this line to ~/.bashrc. However, don't forget to remove it when you are no longer using the RB1 as this will prevent ROS from starting locally. To check whether it worked, type in the same terminal: user@remote:~$ rostopic list If everything is working correctly, this will display the different topics from the rb1 robot. The packages necessary to control the rb1 can be copied from the robot. user@remote:~$ mkdir -p ~/catkin_rb1_ws/src user@remote:~$ scp -r rb1@rb1:~/catkin_ws/src/* ~/catkin_rb1_ws/src/ user@remote:~$ cd ~/catkin_rb1_ws user@remote:~/catkin_rb1_ws$ catkin_make Some robot-specific packages may fail compiling (missing dynamixel.h / libpcan.h). If those are the only errors, you may continue. Rviz and move it can now be started to control the robot: user@remote:~/catkin_rb1_ws$ source devel/setup.bash user@remote:~/catkin_rb1_ws$ roslaunch rb1_jaco_3fg_moveit_config demo_rtc.launch ===== Controlling the kinova-arm only ===== The kinova's arm can be controlled individually. The required packages can be downloaded as followed: user@remote:~$ mkdir -p ~/catkin_kinova/src user@remote:~$ cd catkin_kinova/src user@remote:~/catkin_kinova/src$ git clone https://github.com/Kinovarobotics/kinova-ros user@remote:~/catkin_kinova/src$ catkin_make Next, it is first necessary to connect the computer to the arm via USB. This requires an USB-A to USB-B cable. In the computer network settings, select wired settings, and create a new configuration. The connection has to be **Link-Local Only**. ROS can now be started: user@remote:~$ cd ~/catkin_kinova user@remote:~/catkin_kinova$ source devel/setup.bash user@remote:~/catkin_kinova$ roslaunch kinova_bringup kinova_robot.launch kinova_robotType:=j2n6s300 This will start rviz and moveit and allow control of the arm. {{hardware:kinova_rviz.png?500}} More further information and additional launchfiles: {{ https://github.com/Kinovarobotics/kinova-ros/wiki/MoveIt }} ===== Known issues ===== ** The torso isn't working.** Work in progress. ** Remote controller: "Unable to connect to move_group action server 'move_group' within allotted time (30s)" and "Action client not connected: rt_traj_exe/follow_joint_trajectory"** First, check whether the rt_traj_exe/follow_joiny_tractory is visible on the computer. user@remote:~$ rostopic list If they are not visible, type 'export ROS_MASTER_URI=http://rb1:11311' and retry. If they are visible but the simulation still doesn't work, it means that the rb1's etc/hosts file is missing the computer's IP and name or that the information are incorrect.