Husarion Environment

ROSbot is an autonomous, open source robot platform. It can be used as a learning platform for Robot Operating System as well as a base for a variety of robotic applications like inspection robots, custom service robots and others. Here you have the link to the real robot: RosBotPage

Real RosBot from Husarion

The simulation is meant to be a basic wheeled robot for developing navigation and obstacle avoidance AI training.

Simulated RosBot from Husarion

Robot Environment

openai_ros.robot_envs.husarion_env module

class openai_ros.robot_envs.husarion_env.HusarionEnv[source]

Bases: openai_ros.robot_gazebo_env.RobotGazeboEnv

Superclass for all CubeSingleDisk environments.

__init__()[source]

Initializes a new HusarionEnv environment. Husarion doesnt use controller_manager, therefore we wont reset the controllers in the standard fashion. For the moment we wont reset them.

To check any topic we need to have the simulations running, we need to do two things: 1) Unpause the simulation: without that th stream of data doesnt flow. This is for simulations that are pause for whatever the reason 2) If the simulation was running already for some reason, we need to reset the controlers. This has to do with the fact that some plugins with tf, dont understand the reset of the simulation and need to be reseted to work properly.

The Sensors: The sensors accesible are the ones considered usefull for AI learning.

Sensor Topic List: * /odom : Odometry readings of the Base of the Robot * /camera/depth/image_raw: 2d Depth image of the depth sensor. * /camera/depth/points: Pointcloud sensor readings * /camera/rgb/image_raw: RGB camera * /rosbot/laser/scan: Laser Readings

Actuators Topic List: /cmd_vel,

Args:

__module__ = 'openai_ros.robot_envs.husarion_env'
_camera_depth_image_raw_callback(data)[source]
_camera_depth_points_callback(data)[source]
_camera_rgb_image_raw_callback(data)[source]
_check_all_sensors_ready()[source]
_check_all_systems_ready()[source]

Checks that all the sensors, publishers and other simulation systems are operational.

_check_camera_depth_image_raw_ready()[source]
_check_camera_depth_points_ready()[source]
_check_camera_rgb_image_raw_ready()[source]
_check_laser_scan_ready()[source]
_check_odom_ready()[source]
_check_publishers_connection()[source]

Checks that all the publishers are working :return:

_compute_reward(observations, done)[source]

Calculates the reward to give based on the observations given.

_get_obs()[source]
_init_env_variables()[source]

Inits variables needed to be initialised each time we reset at the start of an episode.

_is_done(observations)[source]

Checks if episode done based on observations given.

_laser_scan_callback(data)[source]
_odom_callback(data)[source]
_set_action(action)[source]

Applies the given action to the simulation.

_set_init_pose()[source]

Sets the Robot in its init pose

check_angular_speed_dir(angular_speed, angular_speed_noise)[source]

It States if the speed is zero, posititive or negative

get_camera_depth_image_raw()[source]
get_camera_depth_points()[source]
get_camera_rgb_image_raw()[source]
get_laser_scan()[source]
get_odom()[source]
move_base(linear_speed, angular_speed, epsilon=0.05, update_rate=10)[source]

It will move the base based on the linear and angular speeds given. It will wait untill those twists are achived reading from the odometry topic. :param linear_speed: Speed in the X axis of the robot base frame :param angular_speed: Speed of the angular turning of the robot base frame :param epsilon: Acceptable difference between the speed asked and the odometry readings :param update_rate: Rate at which we check the odometry. :return:

wait_until_twist_achieved(cmd_vel_value, epsilon, update_rate, angular_speed_noise=0.005)[source]

We wait for the cmd_vel twist given to be reached by the robot reading Bare in mind that the angular wont be controled , because its too imprecise. We will only consider to check if its moving or not inside the angular_speed_noise fluctiations it has. from the odometry. :param cmd_vel_value: Twist we want to wait to reach. :param epsilon: Error acceptable in odometry readings. :param update_rate: Rate at which we check the odometry. :return: