Skip to content

Warthog

norlab-warthog edited this page Dec 18, 2023 · 51 revisions

Add any interesting information about the Warthog that could help other students


Computer

  • The computer model is AIV-Q170V1FLS-OBD (website link)(manual link)
  • Ethernet port connected to the router: enp1s0f1 IP address: 192.168.0.3 (Lowest port on the COM ports side)
  • Ethernet port connected to the lidar: enp1s0f3 IP address: 192.168.1.102 (2nd lowest port on the COM ports side)
  • Ethernet port connected to the radar: enp1s0f0 IP address: 192.168.4.10 (2nd highest port on the COM ports side)

Jetson

  • There is a Jetson Orin AGX inside the Warthog.
  • For now, it is used for the ROS1 bridge and the ZED stereo camera.
  • The installation was made following these setup scripts.

Batteries

A wiki page is dedicated to the Warthog batteries.

Camera

  • Model: Dalsa Genie Nanon C1920 (website link)
  • To tranfer the images from the camera to the Warthog computer, the ethernet card called enp4s0 on linux (need to verify if it is the complete name, but is the port LAN4 of the computer) now take Jumbo Packets. Regular ethernet connection supports 1500 bytes packet, but by enabling Jumbo Packets, we can send packets as large as 9000 bytes. It allows the camera to increase its number of Frame Per Second (FPS). The command to change the size of the packet is done in the rc.local each time the computer boots.

Warthog's speed (from controller)

To modify the speed sends by the controller, follow these steps:

  • Connect to the low-level computer with SSH and go in this config folder
roscd warthog_teleop_twist_joy/config
  • Enter the file
vim hri.config.yaml
  • To change the linear speed, comment the line with the scale_linear value and create your own scale_linear value. The speed value is calculated like this:
We know from experiements that a value of 0.0015 is approximately 1.5 m/s with the wheels.
We need to apply a speed factor related to type of wheels mount on the Warthog.
For the wheels, the factor is F = 1. For the tracks, the factor is F = 0.6632.
So, if by example you want a speed of v = 0.25 m/s with the tracks, you will do the following:

speed_value = [(v/1.5) x 0.0015] / F
speed_value = [(0.25/1.5) x 0.0015] / 0.6332
speed_value = 0.000395 m/s
  • When the speed is changed, save the file. You now need to kill the node and restart it to apply the changes. There are two methods:
  1. Manually kill and restart the node from the terminal.
  • First, kill the node
rosnode kill /hri_teleop_twist_joy
  • Then, in a screen, restart it
roslaunch warthog_teleop_twist_joy teleop.launch
  1. Just reboot the whole computer by powering off the Warthog and reboot it.

Teach and Repeat

A tutorial on how to perform a basic teach-and-repeat session with the Warthog can be found here.

Motors and Encoders specs

Motor Reference

Param Value
Name ME1117
Company Motenergy
Type BLDC
I_continuous 120 A
N° poles 8 poles / 4 pairs
$R_{p-p}$ $0.013\ \Omega$
$R_{phase}$ $0.0048\ \Omega$
$L_{phase}$(100 Hz) 0.088 mH
$L_{p-p}$ 0.10 mH
$\omega_{max}$ 5000 RPM
V 0-72 VDC
Torque constant 0.13 Nm/A
Armature inertia 52 $kg*cm^{2}$
I_{continuous} 80 A AC
I_{peak} 220 A AC (1 min)
Weight 23 lbs
Peak stall torque 38 Nm

Dynoplot

Dynoplot

Encoders

Encoders

List of topics published on the Warthog

Note : This list of topics may vary depending on when the data was/is taken

Data Topic Frequency (Hz) Notes
Electrical
MCU global data /mcu/status 1
Left drive /left_drive/status/battery_{current,voltage} 1
Right drive /right_drive/status/battery_{current,voltage} 1
Speeds
Control speed /cmd_vel
Encoders speed
Left drive speed /left_drive/status/speed 4
Right drive speed /right_drive/status/speed 4
Odometry
ICP odometry /icp_odom
IMU odometry /imu_and_wheel_odom 100 no twist
GPS odometry Postprocessed data from REACHRS 5
Warthog odometry /warthog_velocity_controller_odom 20 no twist
Inertial
IMU data /MTI_imu/data
Warthog IMU /imu/data 35 noisy imu, upside down
GPS
GPS message /gps/*
graph LR

    commanded([<strong>Commanded<br/>velocities</strong><pre>/vel_cmd</pre>])
    commanded --> cmdvel([<pre>/cmd_vel</pre>])
    commanded --> rcteleopcmd([<pre>/rc_teleop/cmd_vel</pre>])
    commanded --> warthogcmd([<pre>/warthog_velocity_controller/cmd_vel</pre>])

    odometry([<strong>Odometry</strong></br><pre>/odom</pre>])
    odometry --> icpodom([<pre>/icp_odom</pre>])
    odometry --> imuodom([<pre>/imu_and_wheel_odom</pre>])

    imu([<strong>IMU</strong></br><pre>/imu_data</pre>])
    imu --> imudata([<pre>/MTI_imu/data</pre>])

    wheels([<strong>Wheel</br>velocities</strong></br><pre>/wL, /wR, /velL, /velR</pre>])
    wheels --> wL([Angular speed ω - L<pre>/left_drive/status/speed</pre>])
    wheels --> wR([Angular speed ω - R<pre>/right_drive/status/speed</pre>])
    wheels --> vL([Speed - L<pre>/left_drive/velocity</pre>])
    wheels --> vR([Speed - R<pre>/right_drive/velocity</pre>])

    elecmot([<strong>Motor</br>electrical</strong></br><pre>/voltL, /voltR, /IL, /IR</pre>])
    elecmot --> voltL([Voltage - L<pre>/left_drive/status/battery_voltage</pre>])
    elecmot --> voltR([Voltage - R<pre>/right_drive/status/battery_voltage</pre>])
    elecmot --> ampL([Current - L<pre>/left_drive/status/battery_current</pre>])
    elecmot --> ampR([Current - R<pre>/right_drive/status/battery_current</pre>])

Loading

Issues/Repairs

  • The screws attaching the external ethernet ports of the Pelican case have dried out o-rings which could enable water to get in (low risk).

Norlab's Robots

Protocols

Templates

Resources

Grants

Datasets

Mapping

Deep Learning

ROS

Ubuntu

Docker (work in progress)

Tips & tricks

Clone this wiki locally