Interfacing with Husky

Both simulated and real Husky robots expose the same ROS interface, and can be interacted with in the same way. Please make sure that the desktop packages for Husky are installed:

sudo apt-get install ros-noetic-husky-desktop

Visualization

You may start a preconfigured rviz instance using the following command:

roslaunch husky_viz view_robot.launch

Control

There are three quick ways to send your Husky control commands:

  1. Using the provided Logitech gamepad. The left analog stick controls the velocity and turn rate, while the ‘A’ and ‘X’ button activate the regular and extra speed modes, respectively.

  2. Using the rviz instance above. If you select the Interact option in the top toolbar, an interactive marker will appear around the Husky and can be used to control speed.

  3. The rqt_robot_steering plugin. Run the rqt command, and select Plugins->Robot Tools->Robot Steering from the top menu.

Husky uses twist_mux to mix four separate geometry_msgs/Twist control channels into the husky_velocity_controller/cmd_vel topic.

These channels are (in order of decreasing priotity):

Topic Description Priority
joy_teleop/cmd_vel Joystick teleop input 10
twist_marker_server/cmd_vel Interactive marker teleop input 8
move_base/cmd_vel Autonomous movement input, for the,husky_navigation samples 2
cmd_vel Miscellaneous external input 1

Additional velocity channels can be defined in twist_mux.yaml, or can be piped into the lowest-priority cmd_vel topic.

Odometry

Husky publishes odometry information on the odometry/filtered topic, as nav_msgs/Odometry messages. These are generated by ekf_localization_node, which processes data from several sensor sources using an Extended Kalman filter (EKF). This includes data from the wheel encoders and IMU (if available).

Topic Sources Description
husky_velocity_controller/odom husky_node Raw odometry as read from Husky encoders
imu/data mu_filter_madgwick Orientation estimate from the IMU
odometry/filtered ekf_localization_node Fused odometry estimate (encoders and IMU)

Additional odometry information sources can be added to the EKF in localization.yaml.

Diagnostics

(Non-simulated only)

Husky provides hardware and software system diagnostics on the ROS standard /diagnostics topic. The best way to view these messages is using the rqt_runtime_monitor plugin. Run the rqt command, and select Plugins->Robot Tools->Runtime Monitor from the top menu.

The same information is also published as a husky_msgs/HuskyStatus message on the status topic.