MMP Husky FH

_images/hxg.jpg

This specifies the configuration for Husky FH. It has an ouster lidar, Fixposition gps, nvidia board, ZED2 depth camera, Flir thermal camera, Realsense depth camera, Ufactory xarm6,Robotiq gripper, Robotiq Force torque sensor and router to establish wireless connection with the robot via WiFi.

Getting Started

To start-up the Husky, the instructional video playlist can be used which details the opening and use of the Husky.

Data Sheets

Documentations

Connection Scheme

_images/hxg_schematics.png

Auxiliary Sensor Startup

On husky startup the following drivers are started:

  • Husky base driver

  • Phidgets IMU

  • ZED2i(+Nvidia board)

The Ouster, ZED2i, Flir, Fixposition, xArm6, robotiq gripper & Force Torque sensor is powered on as well but the driver has to be manually started (can be automated as explained in Custom Startup Job) to ensure that the husky base driver starts up quickly and regardless of whether other components are attached or not.

ROS (Noetic)

The following commands are executed to activate the drivers for all the sensors when using ROS:

Robotiq 2F-240:  roslaunch hxg_robotiq robotiq_2f_140.launch
Robotiq Ft-300:  roslaunch hxg_robotiq robotiq_ft_300.launch
Flir:            roslaunch hxg_flir system.launch
Ouster:          roslaunch hxg_lidars lidars.launch
Realsense:       roslaunch hxg_realsense_cameras wrist_camera.launch
Fixposition:     roslaunch hxg_fixposition system.launch

ROS2 (Foxy)

The following commands are executed to activate the drivers for all the sensors when using ROS2:

Robotiq 2F-240:  ros2 run hxg_robotiq_2f_140 system_launch
Robotiq Ft-300:  ros2 launch hxg_robotiq_ft_300 system.launch.py
Flir:            ros2 launch hxg_flir system.launch.py
Ouster:          ros2 launch hxg_lidars system.launch.py
Realsense:       ros2 launch hxg_realsense system.launch.py
Fixposition:     ros2 launch hxg_fixposition system.launch.py

Network-Setup

The Husky FH has Multiple networks and vary slightly, the following table shows the networks.

Husky-FH network devices

Device

Network Address

Users

Password

Husky

192.168.131.1

administrator

mybotshop

Nvidia

192.168.131.3

administrator

mybotshop

Flir

192.168.131.30

admin

KirZ0G

Ouster

192.168.131.20

N/A

N/A

xArm6

192.168.131.10

N/A

N/A

xArm6 Web

192.168.131.10:18333

N/A

N/A

Fixposition

192.168.131.40

N/A

N/A

Router

192.168.131.100

N/A

Mybotshop23

Operation

To use the drivers, the following steps must be followed:

  1. Connect to the Husky WiFi.

  2. ssh into the husky via:

ssh -X administrator@192.168.131.1
mybotshop

The following message will show up with quick instructions for startup.

    -----------------------------------------------------------------------
    _  _  _  _  ____   __  ____  ____  _  _   __  ____
    ( \/ )( \/ )(  _ \ /  \(_  _)/ ___)/ )( \ /  \(  _ \
    / \/ \ )  /  ) _ ((  O ) )(  \___ \) __ ((  O )) __/
    \_)(_/(__/  (____/ \__/ (__) (____/\_)(_/ \__/(__)
-----------------------------------------------------------------------
Current PC: Husky
-----------------------------------------------------------------------
Husky IP:     192.168.131.1
Pswd:         mybotshop
SSH:          ssh -X administrator@192.168.131.1
Nvidia IP:    192.168.131.3
Pswd:         mybotshop
SSH:          ssh -X administrator@192.168.131.3
Router IP:    192.168.131.100  (INFO: Default off)
Router ID:    admin
Pswd:         Mybotshop23
xARM6 IP:     192.168.131.10  (INFO: Default off)
Web IP:       192.168.131.10:18333
Ouster IP:    192.168.131.20  (INFO: Default off)
Flir IP:      192.168.131.30  (INFO: Default off)
Web ID:       admin
Pswd:         KirZ0G
Fixpos IP:    192.168.131.40  (INFO: Default off)
--------------------------------------------------------------------------
HXG Noetic (Default)
--------------------------------------------------------------------------
Activate:        hxg_noetic
HXG status:      sudo service hxg status
HXG start:       sudo service hxg start
HXG stop:        sudo service hxg stop
HXG restart:     sudo service hxg restart
Update startup:  rosrun hxg_startup startup_installer.py
Startup:         roslaunch hxg_startup system_bringup.launch
                (INFO: Default on, Runs  Husky Driver
                                        Phidgets Driver)
Moveit:          roslaunch hxg_manipulation system_moveit.launch
                (INFO: Default off, Runs xARM6 Driver
                                        Robotiq-2F-140 Driver
                                        Robotiq-FT-300 Driver)
Robotiq 2F-240:  roslaunch hxg_robotiq robotiq_2f_140.launch
                (INFO: Default off)
Robotiq Ft-300:  roslaunch hxg_robotiq robotiq_ft_300.launch
Flir:            roslaunch hxg_flir system.launch
                (INFO: Default off)
Ouster:          roslaunch hxg_lidars lidars.launch
                (INFO: Default off)
Realsense:       roslaunch hxg_realsense_cameras wrist_camera.launch
                (INFO: Default off)
Fixposition:     roslaunch hxg_fixposition system.launch
                (INFO: Default off, Requires RTK Connection
                                    Requires Internet Connection)
Zed2i:           (INFO: Default off, ROS-Multimachine from Nvidia)
Visualization:   roslaunch hxg_viz view_robot.launch
--------------------------------------------------------------------------
HXG Foxy
--------------------------------------------------------------------------
Activate:        hxg_foxy
System Bringup:  ros2 launch hxg_bringup system.launch.py
                (Runs Husky Driver
                    Phidgets Driver
                    xARM6 Hardware Driver
                    xARM6 Joinstate Driver)
Moveit (HXG):    ros2 launch hxg_moveit system.launch.py
Moveit (xARM6):  ros2 launch hxg_manipulation xarm6_moveit.launch.py
Robotiq 2F-240:  ros2 run hxg_robotiq_2f_140 system_launch
Robotiq Ft-300:  ros2 launch hxg_robotiq_ft_300 system.launch.py
Flir:            ros2 launch hxg_flir system.launch.py
Ouster:          ros2 launch hxg_lidars system.launch.py
Realsense:       ros2 launch hxg_realsense system.launch.py
Fixposition:     ros2 launch hxg_fixposition system.launch.py
                (INFO: Default off, Requires RTK Connection
                                    Requires Internet Connection)
ZED2i:           (INFO: Default off, ROS-Multimachine from Nvidia)
Visualization:   ros2 launch hxg_viz view_robot.launch.py
--------------------------------------------------------------------------

Custom Startup Job

The launch file system_bringup.launch in the catkin package of hxg_startup includes everything which is being launched at the startup. Startup job and its content can be verified in the directory /etc/ros/noetic; here the original launch file will be copied. If you are using ROS2 then in that case its content can be verified in the directory /etc/ros/foxy.

Warning

Do not create Multiple startup jobs with Multiple launch files this will break the system. Only one launch file should be created and everything else should be included in this.

If the systems breaks at startup you can start debugging by:

For ROS-Noetic

roslaunch hxg_startup system_bringup.launch

For ROS2-Foxy

ros2 launch hxg_startup system_bringup.launch.py

This will show which part of the launch file is having errors or you can start running everything in the launch file one by one in separate terminals.

Adding ROS-Nodes & Launch Files to Robot Startup

  1. Navigate and open hxg_startup/launch/system_bringup.launch.

  2. Add your custom node or launch file.

  3. Run the following script:

rosrun hxg_startup startup_installer.py
  1. Verify if it is working correctly via:

sudo service hxg status

Important

Once you add your custom node or launch files in the system_bringup.launch, you will need to run rosrun hxg_startup startup_installer.py so that it updates the start-up job on the Husky’s PC otherwise it will not be updated.

Note

Similar steps are available for ROS Foxy.

Ouster

_images/ouster.png

To manually launch the ouster driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_lidars lidars.launch

To manually launch the ouster driver, the following command can be used when using ROS2(Foxy):

ros2 launch hxg_lidars system.launch.py

Robotiq 2F-240

_images/robotiq-2f-140mm.jpg

To manually launch the robotiq gripper driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_robotiq robotiq_2f_140.launch

To manually launch the robotiq gripper driver, the following command can be used when using ROS2(Foxy):

ros2 run hxg_robotiq_2f_140 system_launch.py

Robotiq Ft-300

_images/robotiq_ft_300.jpg

To manually launch the Robotiq Forcetorque driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_robotiq robotiq_ft_300.launch

For force torque reset to zero ROS(Noetic).

rosservice call /robotiq_ft_sensor_acc "command_id: 8 command: ''"

To manually launch the Robotiq Forcetorque driver, the following command can be used when using ROS2(Foxy):

ros2 launch hxg_robotiq_ft_300 system.launch.py

For force torque reset to zero ROS2(Foxy).

ros2 service call /robotiq_ft_sensor_acc robotiq_ft_sensor/srv/Sensoraccessor command_id:\ 8

Flir

_images/flir.png

To manually launch the Flir driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_flir system.launch

To manually launch the Flir driver, the following command can be used when using ROS2(Foxy):

ros2 launch hxg_flir system.launch.py

Realsense D405

_images/intel_rsd405.png

To manually launch the Realsense driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_realsense_cameras wrist_camera.launch

To manually launch the Realsense driver, the following command can be used when using ROS2(Foxy):

ros2 launch hxg_realsense system.launch.py

Fixposition

_images/fixposition.png

To manually launch the Fixposition driver, the following command can be used when using ROS(Noetic):

roslaunch hxg_fixposition system.launch

To manually launch the Fixposition driver, the following command can be used when using ROS2(Foxy):

ros2 launch hxg_fixposition system.launch.py

ZED2i

_images/zed2.jpg

On the robot start-up the ZED2i camera automatically starts and all its information is published to Husky’s main PC. The information can be verified via:

rostopic list

when using ROS2 you can verify the information via:

ros2topic list

It may take upto a minute for all the drivers of the Nvidia to start. The main purpose of the Nvidia is to enable the CUDA for ZED2. The stream for the ZED2 is transferred over to the main Husky PC via ROS Multi machine. An example stream can be viewed rostopic echo /zed2/zed2_node/rgb/image_rect_color.

Important

The ZED2i requires USB 3.0 port and in the installed Nvidia board there is one available USB 3.0 port. So incase of removal please plug in the ZED2i into the same initial port it was in.

Moveit

If you want to run moveit:

For ROS-Noetic:

roslaunch hxg_manipulation system_moveit.launch

For ROS2-Foxy:

ros2 launch hxg_moveit system.launch.py

Visualization

_images/hxg_viz2.png

To visualize the robot in Rviz when using ROS-Noetic please run the following command:

roslaunch hxg_viz view_robot.launch

To visualize the robot in Rviz when using ROS2-Foxy please run the following command:

ros2 launch hxg_viz view_robot.launch.py

Nvidia AGX Orin

To verify the status of the Zed2i service and its connection with the main PC, please adhere to the following steps:

  1. Connect to the Husky WiFi.

  2. ssh into the Nvidia via:

ssh -X administrator@192.168.131.3
mybotshop

The following message will show up with quick instructions for startup.

-----------------------------------------------------------------------
    _  _  _  _  ____   __  ____  ____  _  _   __  ____
    ( \/ )( \/ )(  _ \ /  \(_  _)/ ___)/ )( \ /  \(  _ \
    / \/ \ )  /  ) _ ((  O ) )(  \___ \) __ ((  O )) __/
    \_)(_/(__/  (____/ \__/ (__) (____/\_)(_/ \__/(__)
-----------------------------------------------------------------------
Current PC: Nvidia
-----------------------------------------------------------------------
Husky IP:     192.168.131.1
Pswd:         mybotshop
SSH:          ssh -X administrator@192.168.131.1
Nvidia IP:    192.168.131.3
Pswd:         mybotshop
SSH:          ssh -X administrator@192.168.131.3
--------------------------------------------------------------------------
Nvidia Noetic (Default)
--------------------------------------------------------------------------
Activate:           hxg_noetic
Nvidia status:      sudo service nv_ros status
Nvidia start:       sudo service nv_ros start
Nvidia stop:        sudo service nv_ros stop
Nvidia restart:     sudo service nv_ros restart
Update startup:     rosrun nv_startup startup_installer.py
ZED2i:              roslaunch nv_startup startup.launch
                    (INFO: Default on)
--------------------------------------------------------------------------
Nvidia Foxy
--------------------------------------------------------------------------
Activate:        hxg_foxy
ZED2i:           ros2 launch nv_startup driver.launch.py
                (INFO: Default off)
Build package:   colcon build --symlink-install
                            --allow-overriding image_transport
                            --cmake-args=-DCMAKE_BUILD_TYPE=Release
--------------------------------------------------------------------------

Custom Startup Job Nvidia

The launch file startup.launch in the catkin package of nv_startup includes everything which is being launched at the startup. Startup job and its content can be verified in the directory /etc/ros/noetic; here the original launch file will be copied. If you are using ROS2 then in that case its content can be verified in the directory /etc/ros/foxy.

Warning

Do not create Multiple startup jobs with Multiple launch files this will break the system. Only one launch file should be created and everything else should be included in this.

If the systems breaks at startup you can start debugging by:

for ROS-Noetic .. code:: Bash

roslaunch nv_startup startup.launch

for ROS2-Foxy .. code:: Bash

ros2 launch nv_startup driver.launch.py

This will show which part of the launch file is having errors or you can start running everything in the launch file one by one in separate terminals.

Adding ROS-Nodes & Launch Files to Nvidia Startup

  1. Navigate and open nv_startup/launch/startup_installer.launch.

  2. Add your custom node or launch file.

  3. Run the following script:

rosrun nv_startup startup_installer.py
  1. Verify if it is working correctly via:

sudo service nv_ros status

Important

Once you add your custom node or launch files in the startup.launch, you will need to run rosrun nv_startup startup_installer.py so that it updates the start-up job on the Husky’s PC otherwise it will not be updated.