Skip to content

systut/beaverbot

Repository files navigation

Beavorbot

A ROS workspace contains essential packages for running Nitrabot with various hardwares.

This workspace is partially written by TUT-Systems Engneering Labroratory members and being used only for research purpores.

beaverbot

Table of contents

Hardware Configuration

hardware configuration

GNSS device

A Global Navigation Satellite System (GNSS) is a satellite configuration, or constellation, that provides coded satellite signals which are processed by a GNSS receiver to calculate position.

GNSS system is typically only able to provide a positioning accuracy on the order of several of meters. To get better accuracy, Ichimill service provided by SoftBank have been chosen for this project. Simly put, base receivers, which have fixed-location, computes correction information and distribute it via Internet, then it is used by our receiver to correct position obtained from GNSS signal. This system is expected to have a accuracy on the order of several of centimeters.

Since the below GNSS receiver which outputs corrected data is used in this package, nmea_serial_driver node is good enough for converting receiver's output (NMEA sentences) into ROS messages (sensor_msgs/NavSatFix).

In case of using different RTK-GNSS receiver, a package contains nodes for receiving correction information from Ichimill service and sending it to receivers is required. Unofficial package f9p_ichimill satisfies this requirement.

Softbank GNSS receiver

IMU sensor

An Intertial Measurement Unit (IMU) measures and reports body's specific force (also call proper acceleration), angular rate, magnetic fields using a combination of accelerometers, gycroscopes, and magnetomerters.

rt_imu

RT_USB_9axisIMU sensor is used in this project. IMU data is obtained via USB port, and expressed in ROS by using rt_usb_9axisimu_driver

The bias errors of IMU components should be calibrated manually for better accuracy. Refer to this manual for more information.

LiDAR

(in progress)

Robot control system

Tractor part of Nitrabot is an autonomous mobile robot (AMR) whose movement is based on two separately driven wheels placed on either side of the robot body. Velocity commands could be sent to robot via the interface device using serial communication.

robot_communication node in beaverbot_communication package is responsible for commucating with the robot. The velocity command published on /cmd_vel topic will be sent to the robot via interface devices. Concurrently, the rotary encoder data and battery's condition also be published respectively into /encoder and /battery topics.

Software configuration

software configuration

Localization & Mapping

(in progress)

Path planner

(in progress)

Path following controller

(in progress)

Manual for running beaverbot

Setting up the enviroment


  • Enable GUI within Docker containers

    ! Caution: This method exposes PC to external source. Therefore, a more secure alternative way is expected for using GUI within Docker containers. This problem was raised in Using GUI's with Docker

#This command is required to run every time the PC is restarted
xhost + 

Make a X authentication file with proper permissions for the container to use.

# If not working, try to run "sudo rm -rf /tmp/.docker.xauth" first
cd ./src/beaverbot_dockerfiles/
chmod +x ./install/xauth.sh && ./install/xauth.sh
  • Install Docker (optional)
chmod +x ./src/docker_installer.sh && ./src/install_docker.sh
  • Launch the environment

Start up

cd ./src/beaverbot_dockerfiles
docker compose up -d 

Open a container in interactive mode

cd ./src/beaverbot_dockerfiles
docker compose exec [name-of-container] bash

To stop containers, run

docker compose down

To commit a container to a new image, run

#Do not do this if you're not familiar with Docker commit action. This changes your docker images.
docker commit [container-id] [image-name:tag]

More other useful Docker's CLI can be found in Docker CLI cheetsheet

Starting up the system with hardware


Start the environment

docker compose up -d 

In terminal 1, run the below to enable sending command to robot and get the wheel encoder data

docker compose exec robot_communication bash
roslaunch beaverbot_communication beaverbot_communication.launch

In terminal 2, run the below to start collect GPS and IMU sensor data

docker compose exec nitra_robot bash
roslaunch beaverbot_launch bringup.launch

Scenario 1: Feedforward control


In terminal 1

docker compose up -d 
docker compose exec robot_communication bash
roslaunch beaverbot_communication beaverbot_communication.launch

In terminal 2

docker compose exec nitra_robot bash
rosrun beaverbot_control feedforward

Scenario 2: Feedback control with pure pursuit controller


In terminal 1

docker compose up -d 
docker compose exec robot_communication bash
roslaunch beaverbot_communication beaverbot_communication.launch

In terminal 2

docker compose exec nitra_robot bash
roslaunch beaverbot_launch nav_pure_pursuit.launch
docker exec -it beaverbot bash -c "source /opt/ros/noetic/setup.bash && source /root/catkin_ws/devel/setup.bash && sleep 2 && roslaunch beaverbot_control beaverbot_control.launch"

About

ROS packages for Beaverbot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published