Welcome to the official public repository for Cepheus by RigBetel Labs.
Purpose:
This repository hosts essential documentation and code for Cepheus Robot, facilitating transparency and collaboration.
Privacy:
Certain sensitive packages and scripts have been excluded to maintain privacy standards.
Contents:
- Documentation: Detailed guides and technical specifications.
- Codebase: Essential source code for Cepheus Robot.
- Resources: Supplementary materials and dependencies.
Contact:
For inquiries and collaboration opportunities, reach out to RigBetel Labs.
- 1. Installation
- 2. Connection
- 3. NUC Instructions
- 4. Package Description
- 5. Launch Sequence
- 6. Important Low level Topics
- 7. Cepheus Robot Parameters
- 8. Diagnostic Tests
- 9. Joystick Control Instructions
- 10. LED indicators Instructions
cd ~/ros1_ws/src # Assuming ros1_ws is the name of the workspace
Clone the repository into your workspace:
git clone https://github.com/rigbetellabs/cepheus.git
Install dependent packages:
cd ~/ros1_ws/src/cepheus
cat requirements.txt | xargs sudo apt-get install -y
Note
Check if you already have the lidar packages installed; if not, get the packages from repos below.
- if using YDLIDAR
cd ~/ros1_ws/src/
git clone https://github.com/rigbetellabs/ydlidar_ros.git
- if using RPLIDAR
cd ~/ros1_ws/src/
git clone https://github.com/rigbetellabs/rplidar_ros.git
Note
Custom joystick control script currently runs on the robot, enabling waypoint storage and navigation through joy buttons. This node can be accessed on:
cd ~/ros1_ws/src/
git clone https://github.com/rigbetellabs/joy_with_waypoint_nav.git
Build the workspace:
cd ~/ros1_ws
catkin_make
Note
By default, the robot is programmed to be started up automatically upon bootup, with its ros running locally without the need for any wifi network.
Follow the steps below to connect the robot to your desired Wifi network
Initiate a hotspot from your smartphone/laptop with the credentials
- Hotspot Name:
admin
- Hotspot Password:
adminadmin
Power on the robot and wait until it connects to your hotspot network
On powering on: | When connected to hotspot: |
---|---|
- Connect your laptop/remote device to the same hotspot
- Open a new terminal, and enter the SSH credentials
ssh "your-robot-name"@"your-robot-ip"
pwd: "your-robot-password"
Tip
The robot name and password have been provided to you while deployment, they have also been marked on the PC present inside the robot. IP can be seen on the display of robot once connected
Method1 | Method2 |
---|---|
- Enter the following command on the ssh terminal to check available networks
sudo nmcli dev wifi list --rescan yes
- Connect to your wifi network
sudo nmcli device wifi connect "your-wifi-name" password "your-wifi-password"
Important
This will close the ssh pipeline and no response will be recieved over it further. Wait for about 30 seconds for robot to be connected to your wifi, once connected it will show the wifi name along with the IP address on the robot display.
- Now the robot is connected to your Wifi network! You can now shutdown your mobile hotspot, connect your remove device to the same wifi and access the robot using SSH:
To use your PC as a Slave Device to your Cepheus:
nano ~/.bashrc
export ROS_MASTER_URI=http://"ip address of the robot":11311
export ROS_IP="ip address of your pc"
Step1 | Step2 | Step3 |
---|---|---|
Important
Connect the USB ports as per the following diagram:
Holds the robot description including URDF, STL, config files for RVIZ, and Gazebo.
File | Description | Nodes Launched |
---|---|---|
display.launch |
Visualize the URDF of the robot in RVIZ. | RVIZ, robot_state_publisher, joint_state_publisher |
gazebo.launch |
Visualize the Robot in an empty world within Gazebo. | Gazebo, robot_state_publisher |
Provides sensor and actuation topics.
File | Description | Nodes Launched |
---|---|---|
bringup.launch |
Brings up all the sensors and actuators on the robot | robot_state_publisher, joint_state_publisher, serial_node, joy, auto_joy_teleop, lidar_node |
demo.launch |
Single launch file to start all nodes for mapping and navigation, accepts waypoints via joystick control. | brings up bringup.launch, server_bringup.launch and cepheus_navigation.launch all at once |
ydlidar_x2.launch |
Launch file for YDLIDAR X2 lidar configuration. | ydlidar_node |
ydlidar_x4.launch |
Launch file for YDLIDAR X4 lidar configuration. | ydlidar_node |
rplidar_a3.launch |
Launch file for RPLIDAR A3 lidar configuration. | rplidar_node |
odom_pub.py |
Publishes odometry from TF published by Cartographer. | odom_publisher |
network_pub.py |
Retrieves and publishes the Wifi/Hotspot network data | network_status |
diagnostics_test.py |
Diagnostics tests for the robot in case of unusual behaviour | diagnostics_test |
Simulation environment for Cepheus in Gazebo.
File | Description | Nodes Launched |
---|---|---|
cepheus_warehouse.launch |
Warehouse environment spawning and simulation. | robot_state_publisher, gazebo_ros |
Autonomous navigation of the robot using move_base
in a known as well as an unknown environment.
File | Description | Nodes Launched |
---|---|---|
amcl.launch |
Localize the robot in the environment. | amcl |
move_base.launch |
Node responsible for moving the robot, avoiding obstacles. | move_base |
cepheus_navigation.launch |
Launches move_base with pre-saved or online-generated map. |
cartographer_occupancy_grid_node, map_server, rviz, move_base |
Rtabmap, Ekf and Cartographer based odometry packages.
File | Description | Additional Information |
---|---|---|
carto_odometry.launch |
Launches Cartographer node for lidar-based odometry. | cartographer_ros, cartographer |
icp_fuse.launch |
Launches Rtabmap-ICP and EKF nodes for lidar and IMU fused odometry. | icp_odometry, ekf_localization_node, alpha_beta_filter |
Simultaneous Localization and Mapping (SLAM) for the robot.
File | Description | Additional Information |
---|---|---|
cepheus_slam |
Generates a map of the environment using Cartographer. | cartographer_occupancy_grid_node |
map_saver.launch |
Saves the generated map for navigation. | map_server |
Note
By default, the robot is programmed to be started up automatically upon bootup, with its ros running locally without the need for any wifi network. To get into the development mode of the robot, ssh into the robot and run
cd ros1_ws/src/cepheus
./development.sh
This will stop all your local ros servers permanently and allow you to test your launch files according to will. If you need the robot to be upstart upon bootup again, you can always enable it using
cd ros1_ws/src/cepheus
./demo.sh
roslaunch cepheus_gazebo cepheus_warehouse.launch
The gazebo world looks like this:
roslaunch cepheus_firmware bringup.launch joy:=true # Set true to get joystick control
- For cartographer-based odometry:
roslaunch cepheus_odometry carto_odometry.launch
- For rtabmap and ekf based odometry:
roslaunch cepheus_odometry icp_fuse.launch
For mapping with manual control:
- Using Cartographer:
roslaunch cepheus_slam carto_slam.launch
- Using Gmapping:
roslaunch cepheus_slam gmapping_slam.launch
For mapping with autonomous navigation:
- Using Cartographer:
roslaunch cepheus_navigation cepheus_carto_navigation.launch exploration:=true
- Using Gmapping:
roslaunch cepheus_navigation cepheus_gmap_amcl.launch exploration:=true
To save the map:
roslaunch cepheus_slam map_saver.launch
- Using Cartographer:
roslaunch cepheus_navigation cepheus_carto_navigation.launch exploration:=false map_file:=your_map
- Using AMCL:
roslaunch cepheus_navigation cepheus_gmap_amcl.launch exploration:=false map_file:=your_map
Note
Upon powering on the robot you'll be able to see the bootup animation on the robot
Note
Once the robot is booted up and bringup.launch is initiated, you'll get to see the robot transition to READY mode
This topic provides information about the remaining battery percentage of the robot.
Battery Percentage | Beeping Sounds |
---|---|
100 - 20 | No beeping |
20 - 15 | Beep every 2 minutes |
15 - 10 | Beep every 1 minute |
Below 10 | Very frequent beeping |
0 (Complete Discharge) | Continuous beep |
Tip
To ensure you are aware of the robot's battery status, pay attention to the beeping sounds, especially as the battery percentage decreases.
Caution
Do not drain the battery below 10 %
, doing so can damage the battery permanently.
This topic reports the current battery voltage, ranging from 25.2V at maximum charge to 19.8V at minimum charge.
The /cmd_vel
topic is responsible for receiving velocity commands for the robot. These commands can be generated by teleoperation or the move_base
module, instructing the robot on how fast to move in different directions.
This topic is of type int
and is used to control the Proportional-Integral-Derivative (PID) controller. Publishing 0
stops PID control, 1
starts fast PID control, 2
activates smooth PID control, 3
activate supersmooth PID control.
Here's an example:
rostopic pub -1 /pid/control std_msgs/Int32 "data: 1"
The /diagnostics/test
topic is utilized to run diagnostics on the robot. It serves the purpose of identifying and addressing any issues that may arise during the robot's operation. For detailed diagnostics procedures, refer to the documentation.
This topic provides an array of ticks for all four wheels of the robot, in the format [lf, lb, rf, rb]
. These values represent the encoder readings of the wheel ticks.
The /wheel/vel
topic sends an array of calculated velocities for each wheel on the robot, received via encoders. The format of the array is [lf, lb, rf, rb]
, representing the actual velocity at which each wheel is moving.
Parameter | Value |
---|---|
Wheels Type | Mechanum Wheel |
Diameter | 0.1m |
Wheel Separation Width | 0.465m |
Wheel Separation Length | 0.545m |
Motor Type | Planetary DC Geared Motor |
RPM | 100 |
Encoder Type | Magnetic Encoder |
PPR (Pulses Per Revolution) | 498 |
Microcontroller | DOIT-ESP32 Devkit V1 |
PC Used | Intel NUC i3 10th Gen |
Robot Payload Capacity | 100 kgs |
Battery Life | About 3 hours |
Battery Type | Lithium-ion 6-cell, 22.2V |
The diagnostic tests are designed to ensure the proper functioning of various components of the Cepheus robot. These tests cover motor and encoder connections, motor direction, IMU connections, display connections, and a comprehensive full diagnostic test.
Here is a table summarizing the instructions for each diagnostic test:
Test Number | Test Type |
---|---|
0 | Full Diagnostic Test |
1 | Motor and Encoder Test |
2 | Motor Direction Test |
3 | IMU Connections Test |
4 | Display Connections Test |
-
Full Diagnostic Test (Test Number: 0):
- Run the full diagnostic test to check the overall health of the robot.
-
Motor and Encoder Test (Test Number: 1):
- Check motor and encoder connections.
-
Motor Direction Test (Test Number: 2):
- Verify motor direction.
-
IMU Connections Test (Test Number: 3):
- Validate IMU (Inertial Measurement Unit) connections.
-
Display Connections Test (Test Number: 4):
- Confirm proper connections with the display.
To run the diagnostic tests, follow these steps:
-
On your Cepheus terminal, launch the
bringup.launch
file:roslaunch cepheus_firmware bringup.launch
-
On your slave PC or another terminal of your Cepheus, run the diagnostics test script:
python3 diagnostics_test.py
-
The script will guide you through the instructions for each diagnostic test. Follow the on-screen instructions carefully.
- It is crucial to execute the tests with caution and follow the on-screen instructions for each test to ensure accurate results.
- Ensure that the robot has sufficient space to move during the motor direction test (Test Number: 2).
- If any issues are identified during the tests, refer to the specific diagnostic output for guidance on addressing the problem.
By following these instructions, you can perform diagnostic tests on the Cepheus robot to identify and resolve any issues with its components.
Indication type | Indicates |
---|---|
All orange fading effect | ROS not connected |
Indication type | Indicates |
---|---|
Blue Sidelights, White Headlights, Red Brakelights | ROS Connected |
Indication type | Indicates |
---|---|
Yellow Status/Side lights + beep 1 | Autonomous Mode |
Indication type | Indicates |
---|---|
Green Status/Side lights flash thrice with buzzer | Goal Reached |
Indication type | Indicates |
---|---|
Purple Status/Side lights with beep once | Goal location stored |
Indication type | Indicates |
---|---|
Orange Status/Side lights | Clear costmap |
Indication type | Indicates |
---|---|
Orange blinking indicator lights | Direction of robot travel |
Indication type | Indicates |
---|---|
Red Status/Side lights | Cancel Goal/ Mission Abort |
Indication type | Indicates |
---|---|
All Red lights | Emergency button pressed |