This README provides instructions for making the Clearpath Jackal UGV run on ROS 2 Humble. Currently, the packages for the Jackal do not officially support ROS 2 Humble; therefore, they had to be built from source, and required a lot of debugging.
I recommend starting with a new SSD instead of wiping your old SSD. It is a good idea to have a working system as a backup in case you make mistakes.
- Create a bootable USB stick with Ubuntu 22.04 LTS .iso file. Instructions from the Ubuntu website are available here.
- Make sure the Jackal is turned off and insert the USB, mouse, keyboard, and monitor into the USB hub
- Turn on the Jackal. Follow the instructions here to install Ubuntu 22.04 LTS.
- After completing the installation, remove the USB, and the Jackal should turn off automatically. Turn it on again, and you should see the login screen.
I used the NUMSR router in the Northwestern MSR lab. It is already set up, so all you need to do is to connect the Jackal to the NUMSR WiFi network.
- Install ROS 2 Humble on your computer and the Jackal. Instructions can be found here.
- When installing ROS 2 packages, I recommend installing
ros-humble-desktop-full
- Follow the instructions all the way up to "Environment setup"
All of the packages for the Jackal are not available for ROS 2 Humble, so they need to be built from source.
The packages in the following repositories need to be built from source:
- jackal
- jackal_robot
- interactive_marker_twist_server
- micro_ros_setup
- uros/micro-ROS-Agent
- uros/micro_ros_msgs
- wireless
Follow the instructions here to update the firmware, build the packages from source, and install dependencies.
When updating the firmware, running sudo apt-get install ros-foxy-jackal-firmware
will not work. Instead, go here and download ros-foxy-jackal-firmware_1.0.0-focal_all.deb
. Then run the following in the directory where you have this file:
sudo apt install ./ros-foxy-jackal-firmware_1.0.0-focal_all.deb
Once you install the firmware, follow the rest of the instructions on updating the firmware.
Make sure to clone the micro_ros_setup repositories in the humble branch and everything else in the foxy branch. When sourcing the ROS 2 installation, you should be replacing foxy
with humble
. Skip "Installing the Systemd Job."
Please note that the instructions from Clearpath do not tell you to clone the interactive_marker_twist_server repository. To clone it, run:
git clone -b foxy-devel https://github.com/ros-visualization/interactive_marker_twist_server.git
After cloning the necessary packages, replace CMakeLists.txt
and marker_server.cpp
in the interactive_marker_twist_server package, replace jackal_hardware.cpp
and jackal_hardware.hpp
in the jackal_robot package, and replace control.launch.py
in the jackal_control package with the ones in this repository. These files have been modified to work with ROS 2 Humble.
Now, install the following packages using sudo apt install
:
- ros-humble-velodyne-description
- ros-humble-robot-localization
- ros-humble-imu-filter-madgwick
- ros-humble-twist-mux
- ros-humble-diagnostic-aggregator
The packages in the following repositories need to be built from source:
In addition, follow the instructions here to build additional Jackal packages. Make sure to clone the repositories in the foxy-devel branch.
Add export ROS_DOMAIN_ID=<YourID>
to the ~/.bashrc
on your computer as well as the Jackal's computer. <YourID>
can be any number between 0 and 101, inclusive, and the one on your computer should match the one on the Jackal's computer. Make sure your computer is on the NUMSR WiFi network. Once you do all of this, you can easily SSH into the Jackal's computer from your computer by running:
ssh -oSendEnv=ROS_DOMAIN_ID jackal@jackal-desktop
The process of pairing the PS4 controller with the Jackal's computer is the following:
- Ensure the PS4 controller is fully charged before starting
- Start the bluetoothctl utility with
sudo bluetoothctl
- Run
agent on
- Put the PS4 controller into pairing mode by holding down the "share" and "PS" buttons until the light flashes rapidly. Once the light is flashing rapidly, the following steps must be done before the flashing stops.
- Run
scan on
- Wait until a device called "wireless controller" appears in the list of detected devices. Then run
scan off
. - Copy the MAC address of the wireless controller. It should be something like "70:20:84:5E:88:B5".
- Run
trust 70:20:84:5E:88:B5
, but put in the MAC address of your controller - Run
connect 70:20:84:5E:88:B5
, but put in the MAC address of your controller - At this point, the LED on the controller should have turned solid blue
- Close bluetoothctl with
exit
In order to use the Velodyne, the Jackal needs to be set up to interface with it over the NUMSR WiFi network. The IP address of the Velodyne is 192.168.1.201.
- Go to Settings -> Network
- Under "Wired," it will tell you which cable is plugged in. Click on the gear icon to the right.
- Go to the IPv4 tab and change the IPv4 Method to "Manual"
- Create and enter an IP address for the ethernet port. It should be something like "192.168.1.XXX".
- Enter the subnet mask, which is 255.255.255.0
- Click "Apply" to save changes
- Toggle off the button next to the cable name and toggle it back on
- Go to http://192.168.1.201. You should be able to see the Velodyne's web interface.
In addition, you need to install the velodyne package. This can be done by running:
sudo apt install ros-humble-velodyne
- Turn on the Jackal, enable the motor stop, and press the "M" button
- Pair the PS4 controller with the Jackal's computer via Bluetooth
- SSH into the Jackal from your computer
- Source the workspace
- Run
ros2 launch jackal_robot bringup.launch.py
to drive the Jackal