This repository contains the codes & drivers used for the autonomous mobile robot project (FYP) to perform autonomous navigation. The conifer-dashboard (web dashboard) is used to display the telemetry and relevant information of the robot via a local web server with NodeJS. (The repo is located over here: https://github.com/1487quantum/conifer-dashboard)
- Ubuntu 14.04 LTS (64-bit)
- ROS Indigo
The following ROS packages are required to be installed system wide:
- Gmapping: ros-indigo-gmapping
- Map server: ros-indigo-map_server
- AMCL: ros-indigo-amcl
- Move base: ros-indigo-move-base
- Camera Info Manager (Py): ros-indigo-camera-info-manage-py
To do so, simply run the following command, replacing package_name with the ones you need.
$ sudo apt-get install ros-indigo-[package_name]
All the packages in this repo should be cloned & place into your workspace.
$ git clone https://github.com/1487quantum/jaguar-bot.git
An overview of the respective packages/directories:
- joy: Joystick driver (Logitech)
- teleop_twist_joy: Process /joy -> /cmd_vel
- diff_drive_controller: Process /cmd_vel -> /joint_trajectory
- kangaroo_driver: Process /joint_trajectory -> /joint_state, controls the motor
- lms1xx_driver: Lidar Driver (LMS111)
- axis_camera: Axis Web camera
- hector_slam: Hector SLAM for mapping
- image_common: For image transport
- robot_pose_ekf: To estimate 3D pose of robot (odom & imu data)
- robot_pose_publisher: To get the current pose of the robot
- mtig_driver: Xsens IMU driver
- ros_bridge_suite: Link ROS data over the web
- twist_mux: A cmd_vel multiplexer with priority
- teb_local_planner: A move_base plugin for path planning
- yocs_velocity_smoother: Reduces sudden jerks and stops while controlling the robot (cmd_vel)
- robot_core: Main control launch/config files to run the robot is here
- robot_odom_subs: Listens to odometry
- pointrecorder: To record waypoints via rosbag
- ptserver: To playback the recorded waypoints
x11vnc could be used to remotely view the computer's GUI.
$ sudo apt-get install x11vnc
To run it, take note of the IP address of the host computer.
$ x11vnc
VNC softwares like VNCViewer for Chrome or TightVNC could be used to view the GUI.
Note: Rviz requires a display to be connected to the computer, so even though VNC is able to display the GUI, Rviz will only WORK with a CONNECTED display. (As for now)
-
The joystick is detected by the computer (checked via lsusb) , but why is it not recognised as a port in /dev/input as js0?
- Most probably the linux kernel was not loaded. You can load the kernel by using the modprobe command:
After that, you should be able to find js0 in /dev/input/
$ sudo modprobe xpad
- Most probably the linux kernel was not loaded. You can load the kernel by using the modprobe command:
-
[kangaroo_driver_node] process has died
- If the following error is seen:
It might be due to a wrongly specified USB port. Try changing the port number in the launch file param for the kangaroo node to either /dev/ttyUSB0, /dev/ttyUSB1, etc.
[ERROR] [1496303682.359675330]: Failed to get the Data. *** stack smashing detected ***: ~/catkin_ws/devel/lib/kangaroo_driver/kangaroo_driver_node terminated
<param name="port" value="/dev/ttyUSB1" />
- If the IMU is used & the following error occurs, try swapping the USB ports of the IMU and the kangaroo node instead.
- If the following error is seen: