The repository contains a minimum set of ROS packages for working with Robotino. These packages are modified version of their namesakes from revision 3303 of the official repository.
-
robotino_node:
ROS drivers for Robotino and some of extra devices such as webcam and lidar;
-
robotino_msgs:
files with description of msg and srv message types which are used within robotino_node package;
-
robotino_description
files with URDF description of robot and some of extra devices such as webcam and lidar.
-
Add a needed repository as it is described here.
-
Update information about available repositories
$ sudo apt-get update
-
Install RobotinoAPI2 library by typing the command
$ sudo apt-get install robotino-api2
Note: Alternatively RobotinoAPI2 library can be built from sources as it is described here.
-
Copy this repository into src subfolder of your workspace by for example this way
$ cd PATH_TO_YOUR_WORKSPACE/src $ git clone https://github.com/red-itmo/robotino.git
-
Run catkin_make command:
$ cd PATH_TO_YOUR_WORKSPACE $ catkin_make
Some part of the information below was taken from robotino_node package description on appropriate page of wiki.ros.
-
set_gripper_state (robotino_msgs/SetGripperState)
Service to open or close the gripper
-
set_encoder_position (robotino_msgs/SetEncoderPosition)
Service to set the encoder position
-
set_ns_ceil_height (robotino_msgs/SetNsCeilHeight)
Service to change calibration parameter for NorthStar
-
set_digital_values (robotino_msgs/DigitalReadings)
Digital values for digital outputs on Robotino are set using this topic
-
cmd_vel (geometry_msgs/Twist)
Allows setting velocities for Robotino
-
analog_readings (robotino_msgs/AnalogReadings)
Readings from the analog inputs on Robotino
-
bumper (std_msgs/Bool)
Readings from the bumper sensor on Robotino
-
digital_readings (robotino_msgs/DigitalReadings)
Readings from the digital inputs on Robotino
-
distance_sensors (sensor_msgs/PointCloud)
Readings from the distance sensors on Robotino
-
gripper_state (robotino_msgs/GripperState)
Readings from the gripper on Robotino (it currently doesn't work properly)
-
encoder_readings (robotino_msgs/EncoderReadings)
Readings from additional Robotino's encoder input
-
motor_readings (robotino_msgs/MotorReadings)
Readings from Robotino's motors
-
north_star (robotino_msgs/NorthStarReadings)
Readings from the NorthStar sensor on Robotino
-
power_readings (robotino_msgs/PowerReadings)
Power readings from Robotino (it doesn't work)
-
robotino_joint_states (sensor_msgs/JointState)
Information about positions of robot's joints
-
~hostname (string, default: 172.26.1.1)
Robotino's IP Address
-
~max_linear_vel (double, default: 0.2)
Maximum linear velocity in m/s
-
~min_linear_vel (double, default: 0.05)
Minimum linear velocity in m/s
-
~max_angular_vel (double, default: 1.0)
Maximum angular velocity in rad/s
-
~min_angular_vel (double, default: 0.1)
Minimum angular velocity in rad/s
-
~ns_room_id (int, default: 3)
The room id parameter for NorthStar
-
~ns_ceil_height (double, default: 3.0)
Calibration parameter for NorthStar
-
~tf_prefix(string, default: "no_prefix")
If value of this parameter isn't equal to "no_prefix", all robot's links are put to subspace which name coincides with the value of this parameter; for example, when tf_prefix = "robot1", link "base_link" gets new name "robot1/base_link"
-
reset_odometry (robotino_msgs/ResetOdometry)
Service to reset the odometry
-
odom (nav_msgs/Odometry)
Odometry data from robot
-
~hostname (string, default: 172.26.1.1)
Robotino's IP Address
-
~tf_prefix(string, default: "no_prefix")
If value of this parameter isn't equal to "no_prefix", "odom" and "base_link" links are put to subspace which name coincides with the value of this parameter; for example, when tf_prefix = "robot1", link "base_link" gets new name "robot1/base_link"
-
odom --> base_link
The node updates this transform using odometry data
-
scan (sensor_msgs/LaserScan)
Provides data from lidar
-
~hostname (string, default: 172.26.1.1)
Robotino's IP Address
-
~tf_prefix(string, default: "no_prefix")
If value of this parameter isn't equal to "no_prefix", "laser_link" link is put to subspace which name is coincide with the value of this parameter; for example, when tf_prefix = "robot1", link "laser_link" gets new name "robot1/laser_link"
-
~laserRangeFinderNumber(int, default: 0)
The number of lidar. If it is equal to 0, then lidar has topic "scan" and link "laser_link". If it is equal to 1, then lidar has topic "scan1" and link "laser_link1". And so on.
-
image_raw (sensor_msgs/Image)
Provides image from webcam
-
~hostname (string, default: 172.26.1.1)
Robotino's IP Address
-
~cameraNumber(int, default: 0)
The number of webcam. If it is equal to 0, then image from webcam is available from topic "image_raw". If it is equal to 1, then it uses topic "image_raw1". And so on.
All nodes which are needed for work of only one robot can be started using this command
$ roslaunch robotino_node robotino_node.launch hostname:=IP_ADRESS_OF_YOUR_ROBOT
For several robots (for 2 in example below) type these commands in different terminals:
$ roslaunch robotino_node robotino_node.launch hostname:=IP_ADRESS_OF_FIRST_ROBOT tf_prefix:=robot1 use_tf_prefix:=true __ns:=robot1
$ roslaunch robotino_node robotino_node.launch hostname:=IP_ADRESS_OF_SECOND_ROBOT tf_prefix:=robot2 use_tf_prefix:=true __ns:=robot2