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