This README contains instructions of bringing up Clearpath Jackal on ROS noetic which is the latest verison of ROS. Since many packages used for Jackal are not officially released for ROS noetic, this instruction will guide you how to build and set up jackal from scratch. Thanks to Jordan Haskel, our previous MSR student who wrote the ROS Melodic(previous verison) bringup for Jackal and it helps me a lot in the building process.
I recommended preparing a new SSD instead of wiping out the old SSD, this is helpful for backtracking if you made any mistakes and for debugging.
- Prepare a bootable USB with an Ubuntu 20.04 LTS iso image. Follow the official ubuntu instructions here.
- First make sure the jackal is powered off, then insert the USB into the Jackal along with monitor, keyboard and mouse.
- Wait for Jackal to boot up. It should boot automatically, if it doesn't then follow instructions here.
- Once complete, remove the USB and restart the Jackal and you should see the ubuntu login screen.
This step is not strictly necessary but it is very convenient if Jackal directly connected to Wifi.
I used router in Northwestern MSR Lab and it is already set up, below are steps for setting up a new router from previous MSR student.
-
Connect the Jackal to your WiFi network.
-
Once connected open a Terminal on the Jackal.
-
Use $ ifconfig to find out the mac address of the Jackal. This will be listed under your wireless network interface (something like wlp2s0). The mac address will be six sets of hexadecimal numbers separated by colons.
-
Log into the setting of your router. These next steps will vary depending on router. But I will provide the instructions as for a tp-link (TL-WR940N) router.
-
Navigate to the IP & MAC binding tab on your WiFi router
-
Use the MAC address found with ifconfig to bind a desired IP adress to your Jackal (the same can be done with your computer)
-
Restarting the router might be necessary for these changes to work.
-
Check that this has worked by connecting to the WiFi and running ifconfig and checking that the IP address of your wireless network interface is what you set it as.
-
To allow for easy hostname resolution, you will want to add these new static IP addresses to the top of your /etc/hosts file.
<STATIC_IP> <HOSTNAME>
For example, on jackal, your host file should looks like this:
127.0.0.1 localhost
127.0.1.1 jackal-desktop
192.168.0.101 dinvincible98
host file on your remote pc:
127.0.0.1 localhost
127.0.1.1 dinvincible98
192.168.0.100 jackal-desktop
- Restart your network manager or your whole pc for changes to take affect.
- Connect to the router and try to ping jackal or SSHing to check if the setup works.
- Install ROS Noetic on both of your remoet pc and Jackal. Follow the insturctions here.
- I recommended to install Desktop-Full Install as shown on the instructions.
Since many packages for Jackal written by Clearpath aren't released for ROS noetic so they need to be built from source.
Below are packages need to be built from source:
- jackal
- jackal_robot
- interactive_marker_twist_sevrer
- LMS1xx
- ndt_omp
- rosserial
- openslam_gmapping
- slam_gmapping
Below are packages released for ROS Noetic:
Use sudo apt-get install
- slam_toolbox
- nmea_msgs
In order to build those pkgs from source:
-
Create a catkin workspace on Jackal
$ mkdir -p ~/jackal_ws/src $ cd jackal_ws $ catkin_make
-
git clone above pkgs into /src directory of the workspace
-
Install all required dependencies
$ cd jackal_ws $ rosdep install --from-paths src --ignore-src -r -y
-
In jackal_ws, run catkin_make to build pkgs.
$ catkin_make
Run rosdep to install all dependencies
$rosdep install --from-paths src --ignore-src -r -y
Firstly, install all preivous packages on your computer first, then build below packages from source:
Run rosdep to install all dependencies
$rosdep install --from-paths src --ignore-src -r -y
Build those pkgs follow the previous instructions, then you can follow the official Jackal tutorial and play around.
To let your Jackal and PC share a ROS master, you need to set up ROS_MASTER_URI and ROS_HOSTNAME environment on both Jackal and remote pc.
Add this file to Jackal:
Add this file to remote pc:
- setup_laptop.bash
-
Important note: Remeber to source those files whenever you open a new terminal(source setup_jackal.bash if on jackal, source setup_laptop.bash if on remote pc). Or you can add those two files to each's ~/.bashrc if you think it is more conveninent(However if you are not only using Jackal, this way is not recommended).
Those are key steps to get Jackal up and running by setting up all undocumented intricates implemented by Clearpath on a Jacakl image.
Add this file to Jackal. Copying the rules into /etc/udev/rules.d foler on Jackal. Restart the Jackal to let it take affect.
In order to get the VLP-16 lidar work with Jackal, Jackal need to set up to interface with the lidar over the network and some packages are required. The default address for VLP-16 in MSR lab is 192.168.1.201. (It is already set up, so you can ping it to make sure it works)
Required packages: Use sudo apt-get install
- ros-noetic-velodyne-pointcloud (This package contains nodes to read the poincloud data from the velodyne and publish it to the relevant ROS topics.)
- ros-noetic-pointcloud-to-laserscan (This package contains a node to convert 3D point cloud data to a single layer laserscan, which is useful for gmapping and slam_toolbox.)
To publish pointcloud data to a topic, VLP16_point.launch can be used. See velodyne.launch file in the repo.
I have not done set up PS3 controller since there are some intractable porblems due to verison problems. I skipped this part because it is not necessary for my project. However, it is better to set it up for safety concern.
Based on Jordan's instruction, there are two sevices and two executable file for Jackal so jackal will automatically be prepared to run when powered on. However, I encountered some system errors due to version when I tried to add those files and they cannot execute. Basically, those two executable files source the jackal_ws, bring up the jackal_move_base and velodyne lidar and run the PS3 controller. Since I have not fix the system error, I did the following:
On both jackal and remote pc:
$ nano ~/.bashrc
Add this line:
$ source ~jackal_ws/devel/setup.bash
On Jackal: Include base.launch in your launch file as shown in slam_toolbox_jackal.launch
-
Turn on the jackal then remember to press the small red button.
-
Connect both jackal and remote pc to MSR jackal router
-
SSH into Jackal (ssh jackal@jackal-desktop)
-
Make sure you clone this repo to both Jackal and your remote pc
-
In every new terminal on the jackal: source setup_jackal.bash
-
In every new terminal on the remote pc: source setup_laptop.bash
-
On Jackal terminal:
$ roslaunch jackal_noetic_bringup velodyne.launch(Bring up VLP-16) $ roslaunch jackal_noetic_bringup slam_toolbox_jackal.launch(Bring up move_base, jackal_base and slam_toolbox)
-
On Remote pc:
$ roslaunch jackal_noetic_bringup slam_toolbox_pc.launch(Rviz)