MMP MPI ======= Network Setup ------------- .. image:: media/figures/rp_banner.webp :width: 100% :align: center :class: mbsrounded | A WLAN router is installed on Ridgeback and has a network address in *192.168.131.\** range. As Clearpath is also on range *192.168.131.\** for this reason router is also set on the same network. SSID of the Wifi network is :code:`MBS - MAXPLANCK - RP` and the password is :code:`mybotshop2022!`. The ip address of the router is *192.168.131.100* (password for the router network is also *mybotshop2022*). By connecting to the Wifi network one can access Ridgeback on ip address *192.168.131.1*. Moreover if a static connection is desired than setting for the host PC in the same network will also work. For example by setting *192.168.131.51* in the ip and *255.255.255.0* in netmask for the static connection will connect to the Ridgeback network as well. To SSH into Ridgeback run the following command: .. code-block:: bash ssh administrator@192.168.131.1 The password for the robot is *clearpath*. Network tables ~~~~~~~~~~~~~~ All the devices on the robot are network enabled. Table `[robot_network] <#robot_network>`__ outlines all the devices and their network addresses. .. table:: Ridgeback network devices ============= =============== Device Network Address ============= =============== Ridgeback 192.168.131.1 Ridgeback MCU 192.168.131.2 Front Lidar 192.168.131.20 Rear Lidar 192.168.131.21 Panda arm 192.168.131.22 Ouster 192.168.131.23 Router 192.168.131.100 ============= =============== Heavy Duty Lift --------------- .. image:: media/figures/lift.gif :alt: lift :width: 100% :scale: 100% :align: center :class: mbsrounded | Starting the Lift ~~~~~~~~~~~~~~~~~ The :code:`sensors` node is one of the most important node as it controls the communication with three control boards. .. code-block:: bash rosrun mbs_rp_lift sensors The node offers the following functionalities for the corresponding boards: #. **Arm power control**: board offers rosservice *set_arm_power*, a call to this service would switch on/off the Panda arm. Please keep in mind if the arm is switched on and the node is turned down, this will switch off the arm as well. #. **Soft switches control**: board publishes the status of soft switches on topic *soft_switches_status*. The topic is subscribed by the driver node and the status is used for the lift control. #. **Lift encoder**: The external rope encoders status is published on *lift_joint_states* topic. For convenience to launch both lift_utils and driver node, the following launch file can be run: .. code-block:: bash roslaunch mbs_rp_lift rp_lift.launch .. attention:: In case of some failure and the soft switches are bypassed. Hard switches will cut the power connection to the lift. The normal driver will stop working when hard switches are in failure state. So to bypass all safety checks of driver node, manual control node needs to be used. Hard Switch Override ~~~~~~~~~~~~~~~~~~~~ The :code:`manual_control` ros node is used to override the hardswitches. With this node brakes needs to be release and applied manually. Additionally, it sends the movements command accordingly. Depending upon which switches are pressed all the information on how to get out of failure state is printed in the console. To release the brakes: .. code-block:: bash rosservice call /apply_brake 'data: False' To apply the brakes: .. code-block:: bash rosservice call /apply_brake 'data: True' Lift Velocity ~~~~~~~~~~~~~ The :code:`driver` node is the main control node to **move** the lift: .. code-block:: bash rosrun rp_lift driver It offers a ROS service to move the lift up and down. To move the lift up: .. code-block:: bash rosservice call /set_lift_velocity 'data: 2047' To move the lift down: .. code-block:: bash rosservice call /set_lift_velocity 'data: -2047' Positive values are to move the lift upwards and negative to move downwards. The driver take a value between -2047 and 2047. .. important:: These values are micro-steps not meters per second as offered by the motor driver for the lift. The driver checks the status of soft and hard switches all the time and provides corresponding control and advice for each state. Safety-Controller ----------------- DC-AC Converter ~~~~~~~~~~~~~~~ .. _Bender Isometer: https://www.bender.de/produkte/isolationsueberwachung/isometer_ir423 .. role:: green .. role:: yellow .. role:: red .. image:: media/figures/dc_ac_converter.jpg :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | The Panda is connected to a DC-AC converter which powers it from the external battery. Specific features of it are: #. Conversions of :code:`24V DC` - :code:`230V AC` #. User can supply power to the arm asl well as cut off power to the arm #. Safety feature based on the Bender Isometer #. LED status of the converter on top of the Ridgeback #. Power cut-off in emergency situation Bender Isometer ~~~~~~~~~~~~~~~ .. image:: media/figures/bender_isometer.jpg :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | #. Safety Check on Startup #. Checking internal resistance #. Pushing Test-Button #. No change in resistace was recognized #. Power will be supplied .. note:: More information on the `Bender Isometer`_. LED Indicator ~~~~~~~~~~~~~ .. image:: media/figures/led_indicator.jpg :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | * **Green:** 24V DC was supplied to Converter * **Yellow:** A failure has happened, operator must stop working with the robot, and must check for a broken cable etc. * **Red:** Power was cut off MMP Viz ------- .. important:: This is applicable to the MMP Ridgeback Panda v1.2 (released prior to 2023). This :code:`mmp_viz` package is a configuration package used for visualizations in RVIZ. To view the URDF model of the robot: .. code-block:: bash roslaunch rp_viz view_model.launch .. figure:: media/figures/mmp_viz_view_model.webp :width: 100% :class: mbsrounded Ridgeback UR5E Rviz To view the live sensor data from the robot: .. code-block:: bash roslaunch rp_viz view_robot.launch .. figure:: media/gifs/mmp_ru_viz.gif :width: 100% :class: mbsrounded Rviz with Ridgeback's whole body control demo MMP Startup ----------- .. important:: This is applicable to the MMP Ridgeback Panda v1.2 (released prior to 2023). The :code:`mbs_rp_startup` package manages the robot startup files. Ridgeback needs ROS to be running at startup. Ridgeback driver needs to run at startup which communicates between the robot and its MCU which is on network address 192.168.131.2. .. warning:: Make sure none of your devices are having 192.168.131.2 ip address this will crash the node and the robot will not function properly. This package is dependent upon :roswiki:`robot_upstart` which converts roslaunch files to systemd service job in Ubuntu. This job runs at the startup of the robot. The one responsible for Ridgeback is :code:`mbs_ridgeback`. The status of this service can be checked by: .. code-block:: bash sudo service mbs_rp status To change the setup files at startup of the robot include/remove nodes from launch/mbs_rp_system.launch. This is the file which is launched all the time. To update this launch file at the robot startup, run: .. code-block:: bash rosrun rp_startup startup_installer.py .. attention:: This command will remove the previous job and install a new one. .. note:: Do not edit the files manually to systemd setup files or launch files (it won't work), always run the above mentioned command to reflect the changes. This packages also includes UDEV rules for different devices on the robot. They are already set up but for a fresh installation they can be run by: .. code-block:: bash rosrun rp_startup create_udev_rules.sh The packages have some configuration files for the robot utilities. For example config/description.bash is responsble set up environment variables for URDF in order to include parts on the go. Similarly config/setup.bash is responsible to setup environment variables for Ridgeback drivers. Lastly config/can-udp-bridge* are responsible for setting up can bus and is used in startup script of the robot. MMP Manipulation ---------------- .. important:: This is applicable to the MMP Ridgeback Panda v1.2 (released prior to 2023). Franka-Emika-Panda ~~~~~~~~~~~~~~~~~~ .. _Franka Emika Guide: https://frankaemika.github.io/docs/overview.html .. image:: media/figures/panda.jpg :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | .. note:: As the MYBOTSHOP Ridgeback Panda is a multi-robot system consisting of Franka Emika's Panda, hence, the guide provided by Franka Emika for `Franka Emika Guide`_ is applicable. MBS Panda ~~~~~~~~~ .. _Panda Desk: https://www.youtube.com/watch?v=TRMIA2J29MA This :code:`mbs_rp_franka` package is responsible for to launch Franka control software from franka control package. Before using the arm it needs to switched on by the :code:`rosrun rp_lift sensors`. To switch on the arm: .. code-block:: bash rosservice call /set_arm_power 'data: True' .. note:: The arm is switched on indicated by solid yellow lights on the robot. To switch off the arm: .. code-block:: bash rosservice call /set_arm_power 'data: False' Panda Setup ~~~~~~~~~~~ Once arm is powered on, one can access the Panda desk at :code:`192.168.131.22`. The desk will prompt for user name and password which is: **User:** :code:`admin` **Password:** :code:`panda_admin` .. tip:: Getting started with `Panda Desk`_ First the arm joints should be unlocked as shown. .. image:: media/figures/panda_desk_j_unlock.webp :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | After the arm's joints are unlocked, FCI needs to be enabled so that the arm exposes its functionalities to ROS control i.e. to be externally controlled. .. image:: media/figures/panda_arm_fci.webp :alt: Panda :width: 100% :scale: 100% :align: center :class: mbsrounded | Finally, the push button connected to **X2** port of the robot needs to be pressed as well. MMP Navigation -------------- .. important:: This is applicable to the MMP Ridgeback Panda v1.2 (released prior to 2023). RIDGEBACK NAVIGATION ~~~~~~~~~~~~~~~~~~~~ .. image:: media/figures/ridgeback_panda.jpg :alt: ridgeback_navigation :width: 100% :align: center :class: mbsrounded | .. note:: As the MYBOTSHOP Ridgeback Panda is a multi-robot system consisting of Clearpath's Ridgeback, hence, the guide provided by Clearpath for `Ridgeback Navigation`_ is applicable. For ease of view the guide is available below as well. Below are the example launch files for three different configurations for navigating Ridgeback: - Navigation in an odometric frame without a map, using only :roswiki:`move_base`. - Generating a map using :roswiki:`gmapping`. - Localization with a known map using :roswiki:`amcl`. If you're working with a real Ridgeback, it's suggested to connect via SSH and launch the :roswiki:`ridgeback_navigation` launchfiles from on board the robot. You'll need to have bidirectional communication with the robot's roscore in order to launch :roswiki:`rviz` on your workstation. Navigation Without a Map ~~~~~~~~~~~~~~~~~~~~~~~~ In the odometry navigation demo Ridgeback attempts to reach a given goal in the world within a user-specified tolerance. The 2D navigation, generated by move_base, takes in information from odometry, laser scanner, and a goal pose and outputs safe velocity commands. In this demo the configuration of move_base is set for navigation without a map in an odometric frame (that is, without reference to a map). To get all Navigation related files for Ridgeback, run: .. code-block:: bash sudo apt-get install ros-melodic-ridgeback-navigation To launch the navigation demo, run: .. code-block:: bash roslaunch ridgeback_navigation odom_navigation_demo.launch To visualize with the suggested rviz configuration launch: .. code-block:: bash roslaunch rp_viz view_model.launch .. note:: Add the topic of :code:`/points` to visualize the point clouds as well. .. image:: media/figures/rviz_model.webp :alt: rviz with Ridgeback's odom navigation configuration. :class: mbsrounded | To send goals to the robot, select the *2D Nav Goal* tool from the top toolbar, and then click anywhere in the rviz view to set the position. Alternatively, click and drag slightly to set the goal position and orientation. If you wish to customize the parameters of move_base, local costmap, global costmap and base_local_planner, clone :roswiki:`ridgeback_navigation` into your own workspace and modify the corresponding files in the `params` subfolder. Making a Map ~~~~~~~~~~~~ In this demonstration, Ridgeback generates a map using gmapping. Begin by launch the gmapping launch file on the robot: .. code-block:: bash roslaunch ridgeback_navigation gmapping_demo.launch And on your workstation, launch rviz with the suggested configuration: .. code-block:: bash roslaunch ridgeback_viz view_robot.launch config:=gmapping .. image:: media/figures/pointcloud.webp :alt: Rviz with Ridgeback's gmapping configuration. :class: mbsrounded | You must slowly drive Ridgeback around to build the map. As obstacles come into view of the laser scanner, they will be added to the map, which is shown in rviz. You can either drive manually using the interactive markers, or semi-autonomously by sending navigation goals (as above). When you're satisfied, you can save the produced map using map_saver_: .. code-block:: bash rosrun map_server map_saver -f mymap This will create a ``mymap.yaml`` and ``mymap.pgm`` file in your current directory. .. _map_saver: http://wiki.ros.org/map_server#map_saver Navigation With a Map ~~~~~~~~~~~~~~~~~~~~~ Using :roswiki:`amcl`, Ridgeback is able to globally localize itself in a known map. AMCL takes in information from odometry, laser scanner and an existing map and estimates the robot's pose. To start the AMCL demo: .. code-block:: bash roslaunch ridgeback_navigation amcl_demo.launch [map_file:=/path/to/my/map.yaml] If you don't specify ``map_file``, it defaults to an included pre-made map of the default "Ridgeback Race" environment which Ridgeback's simulator spawns in. If you're using a real Ridgeback in your own environment, you'll definitely want to override this with the map created using the gmapping demo. Before navigating, you need to initialize the localization system by setting the pose of the robot in the map. This can be done using 2D Pose Estimate in rviz or by setting the amcl initial_pose parameters. To visualize with the suggested rviz configuration launch: .. code-block:: bash roslaunch ridgeback_viz view_robot.launch config:=localization When rviz appears, select the *Set 2D Pose tool* from the toolbar, and click on the map to indicate to the robot approximately where it is. .. _Ridgeback Navigation: http://www.clearpathrobotics.com/assets/guides/melodic/ridgeback/ MMP Lidars ---------- .. important:: This is applicable to the MMP Ridgeback Panda v1.2 (released prior to 2023). .. image:: media/figures/ouster.jpg :alt: lift :width: 100% :scale: 100% :align: center :class: mbsrounded | MBS Ouster Package ~~~~~~~~~~~~~~~~~~ The :code:`mbs_rp_ouster` package cleanly manage the nodes/data/logs of the ouster sensor. Ouster is mounted on the top and provides 3d pointcloud of surroundings. So this packages provides two types of data: **3D pointcould:** is provided on :code:`/points` topic. .. image:: media/figures/pointcloud.webp :alt: lift :width: 100% :scale: 100% :align: center :class: mbsrounded | **2D pointcloud:** is the down-sampled data of the pointcloud topic and is provided on :code:`/top/scan`` topic. .. image:: media/figures/laserscan.webp :alt: lift :width: 100% :scale: 100% :align: center :class: mbsrounded |