This is a Final Year Project. The objective is to enable to mobile robot to locate the station and dock successfully for charging.
Please rename the package name to docking
The robot use a holonomic base platform and the peripherals used for perception are monochrome camera and Hokuyo URG-04LX Laser Range Finder.
This repo consists of 2 main nodes:
- Docking Algorithm
- Laser Check Algorithm
4 packages to be installed for perception
An odom node is required. The odom node should publish a topic named /chargingvoltage
to detect the battery is charging.
If not, a node is required to publish the /chargingvoltage
topic
Run the docking node with:
roslaunch docking final_docking_alvar.launch
Run the laser docked check node with:
roslaunch docking final_laser_check.launch
This will launch the usb_cam node
, the image_view node
, the ar_track_alvar node
, and the final_docking_algorithm node
.
zError
- The error between z_0 and z_1 when the robot is perfectly parallel to the station, in meter.- Default:
0.03
- Default:
ReverseDistance
- The distance for the reverse function to reach when it is triggered, in meter.- Default:
0.65
- Default:
CheckPointCount
- The initial value to count down to 0 when the robot is at the check point area.- Default:
50
- Default:
This will launch the hokuyo node
, and the laser_docked_check node
.
OrientValue
- A benchmark to compare with the number of matches between mid-point distance and all other distances during orientation check.- Default:
17
- Default:
Tolerance
- A tolerance for the comparison between the mid-point distance and all other distances when checking orientation using the laser, in meter.- Default:
0.015
- Default:
DockedDistance
- The distance from the laser to the station when the robot is docked, for comparison when doing the second check, in meter.- Default:
0.178
- Default:
For other parameters in other nodes from other packages, please refer to their documentation here
Get distance value from ar_track_alvar and perform motion planning
/ar_pose_marker_Small
(ar_track_alvar_msgs/AlvarMarkers)
The distance value of the marker from the camera/chargingvoltage
(std_msgs/Float32)
The voltage of the battery during charging state and non-charging state/FinalCheck
(docking/FinalCheck)
The messages to communicate with laser_docked_check node
/cmd_vel
(geometry_msgs/Twist)
The velocity to be sent to motion controller by odom node/FinalCheck
(docking/FinalCheck)
The messages to communicate with laser_docked_check node
Check the orientation at check point and whether docked successfully
/scan1
(sensor_msgs/LaserScan)
The distance value from the Hokuyo Laser Range Finder/chargingvoltage
(std_msgs/Float32)
The voltage of the battery during charging state and non-charging state/FinalCheck
(docking/FinalCheck)
The messages to communicate with final_docking_algorithm node
/FinalCheck
(docking/FinalCheck)
The messages to communicate with final_docking_algorithm node
For more detail documentation, please refer to here