The Khepera IV is a commercial robot produced by K-Team.
A Buzz port for the Khepera IV is available at https://github.com/MISTLab/BuzzKH4. An ARGoS plugin to simulate the robot is available at https://github.com/ilpincy/argos3-kheperaiv.
set_wheels(lws,rws)
sets the speed of the wheels to lws
(left wheel speed) and rws
(right wheel speed). The speed is expressed in cm/sec. The maximum speed of the real Khepera is about 20 cm/sec. lws,rws
must be floating point values.gotop(ls,as)
sets the speed of the center of mass of the robot. The speed is expressed as a vector in polar coordinates, where ls
is the linear speed (i.e., the forward speed, in cm/sec) and as
is the angular speed (i.e., in rad/sec). The vector is internally transformed into wheel actuation. ls,as
must be floating point values.gotoc(sx,sy)
sets the speed of the center of mass of the robot. The speed is expressed as a vector in cartesian coordinate, where sx
is the linear speed along the local x axis of the robot (i.e., the forward speed, in cm/sec) and sy
is the linear speed along the local y axis of the robot (a vector pointing left, according to the right-hand rule). The vector is internally transformed into wheel actuation. sx,sy
must be floating point values.differential_drive
actuator.set_leds(r,g,b)
sets the color of the three LEDs on top of the Khepera IV. The color is expressed with 0-255 integer values for each of the channels (red, green, blue).leds
actuator.proximity
is the Buzz table that contains the proximity readings. Each element of this table (e.g., proximity[0]
, proximity[1]
, …) is in turn a table that contains two elements:angle
, which corresponds to the angle (expressed in radians) at which the sensor is located on the body of the robotvalue
, which is the actual reading. Each individual sensor is saturated (value 1.0
) by objects closer than 4 cm; the maximum range of the sensor is 12 cm. Between 4 and 12 cm, the readings follow an exponential law with the distance: 4.14*exp(-33.0*distance)-.085
.kheperaiv_proximity
sensor.light
is the Buzz table that contains the light readings. Each element of this table (e.g., light[0]
, light[1]
, …) is in turn a table that contains two elements:angle
, which corresponds to the angle (expressed in radians) at which the sensor is located on the body of the robotvalue
, which is the actual reading. The sensors all return a value
between 0 and 1, where 0 means nothing within range and 1 means the perceived
light saturates the sensor. Values between 0 and 1 depend on the distance of the perceived light. In ARGoS, each reading R
is calculated with R=(I/x)^2
, where x
is the distance between a sensor and the light, and I
is the reference intensity of the perceived light. The reference intensity corresponds to the minimum distance at which the light saturates a sensor.
kheperaiv_light
sensor.ultrasound
is the Buzz table that contains the ultrasound readings. Each element of this table (e.g., ultrasound[0]
, ultrasound[1]
, …) is in turn a table that contains two elements:angle
, which corresponds to the angle (expressed in radians) at which the sensor is located on the body of the robotvalue
, which is the actual distance of the detected obstacle in cm. Each individual sensor is saturated by objects closer than 25 cm; the maximum range of the sensor is 200 cm.kheperaiv_ultrasound
sensor..argos
file).lidar
is the Buzz table that contains the LIDAR readings. Each element of this table (e.g., lidar[0]
, lidar[1]
, …) is the distance of the object detected by a specific laser beam.kheperaiv_lidar
sensor.battery
is a table that contains two elements:available_charge
, a value between 0.0 and 1.0time_left
, the number of control steps before battery depletionbattery
sensor.pose
is a table that contains two elements:position
, a 3D array {x, y, z}
orientation
, an array {yaw, pitch, roll}
positioning
sensor.